Jump to content

Gerar impulso de 5 v para o exterior


Saragoca
 Share

Recommended Posts

Bom dia

estou a desenvolver uma aplicação de controlo de acessos, tendo já completado a maioria do código na máquina

Neste momento estou a deparar-me com um problema, não consigo passar um impulso do pc para um relé que irá comandar a testa das portas

alguém me pode ajudar??

Penso que a a biblioteca a ser utilizada será a System io, mas não estou a conseguir concretizar.

desde já o meu agradecimento

Link to comment
Share on other sites

Boa tarde,

Estás a usar um circuito entre a porta USB e o relê, certo ?

É que a porta USB é uma escolha péssima para ligar qualquer coisa que não seja USB! Não tem a "flexibilidade" que por exemplo tem uma porta RS232 (série).

Provavelmente vais precisar de um circuito FTDI entre a porta usb e o teu relé.

De resto existem algumas biblioteca que te podem ajudar, como a LibUsbDotNet.

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Link to comment
Share on other sites

Boa tarde,

Melhor seria uma porta série (RS232), ou até mesmo uma porta paralela, no entanto com um FTDI no meio, consegues bem fazer o que pretendes.

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Link to comment
Share on other sites

Boa tarde,

//class para aceder à porta
static class AccessPort
{
   [DllImport("inpout32.dll", EntryPoint = "Out32")]
   public static extern void output(int address, int value);
   [DllImport("inpout32.dll", EntryPoint = "Inp32")]
   public static extern int input(int adress);
}

//codigo para mandar o impulso
private void button1_Click(object sender, EventArgs e)
{
 try
 {
	  int address = System.Convert.ToInt16(textBox1.Text, 16);; //textbox para o endereço da porta
	  int value = System.Convert.ToInt16(textBox2.Text);//pino
	  AccessPort.output(address, value);
  }
  catch(Exception ex)
  {
	  MessageBox.Show("Error: " + ex.ToString());
  }
}

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Link to comment
Share on other sites

Boa tarde Apocsantos

peço desculpa de só responder hoje mas ontem foi-me impossível

implementei o código mas no debbuger aparece-me a seguinte mensagem de erro "Não é possível carregar DLL 'inpout32.dll': Impossível localizar o módulo especificado. (Excepção de HRESULT: 0x8007007E)".

estou a usar um conversor usb para paralelo

um abraço

Link to comment
Share on other sites

é o .NET Framework 4 Client Profile

o Código é :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;
using System.Runtime.InteropServices;
 
 
 
namespace


Acessos
{



public partial class Form1 : Form
{

#region


VARIÀVEIS


[

DllImport("inpout32.dll", EntryPoint = "Out32")]


public static extern void Escrever(int endereco, byte valor);
 
 
 
 
#endregion
 


public Form1()
{
InitializeComponent();
}


private void Form1_Load(object sender, EventArgs e)
{
pnPorta1.BackColor =

Color.Red;
pnPorta2.BackColor =

Color.Red;

}


private void txtEntrada_TextChanged(object sender, EventArgs e)
{



if (txtEntrada.Text.ToUpper().Contains("PORTA1"))
{
pnPorta1.BackColor =

Color.Green;
timer1.Start();

}
 


if (txtEntrada.Text.ToUpper().Contains("PORTA2"))
{
pnPorta2.BackColor =

Color.Green;
timer2.Start();
}
}


private void timer1_Tick(object sender, EventArgs e)
{
pnPorta1.BackColor =

Color.Red;
timer1.Stop();
txtEntrada.Text =

"";
}


private void timer2_Tick(object sender, EventArgs e)
{
pnPorta2.BackColor =

Color.Red;
timer2.Stop();
txtEntrada.Text =

"";
}


private void button1_Click(object sender, EventArgs e)
{


try
{
Escrever(372, 0000001);
}


catch (Exception ex)
{


//message de erro se algo falhar quando efectuar a leitura dos dados da base de dados


MessageBox.Show("ERRO: " + ex.Message);
}
}
}
}

obrigado

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.