Saragoca Posted March 25, 2015 at 11:37 AM Report Share #580188 Posted March 25, 2015 at 11:37 AM 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 More sharing options...
apocsantos Posted March 25, 2015 at 12:43 PM Report Share #580192 Posted March 25, 2015 at 12:43 PM Bom dia, Estás a ligar o relê a que porta ?? 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 More sharing options...
Saragoca Posted March 25, 2015 at 01:54 PM Author Report Share #580200 Posted March 25, 2015 at 01:54 PM estava a pensar utilizar a porta USB um abraço Link to comment Share on other sites More sharing options...
apocsantos Posted March 25, 2015 at 02:17 PM Report Share #580203 Posted March 25, 2015 at 02:17 PM 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 More sharing options...
Saragoca Posted March 25, 2015 at 02:40 PM Author Report Share #580204 Posted March 25, 2015 at 02:40 PM então seria melhor usar uma porta paralela ou série? Link to comment Share on other sites More sharing options...
apocsantos Posted March 25, 2015 at 03:19 PM Report Share #580207 Posted March 25, 2015 at 03:19 PM 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 More sharing options...
Saragoca Posted March 25, 2015 at 03:32 PM Author Report Share #580209 Posted March 25, 2015 at 03:32 PM qual a biblioteca para comandar a porta paralela e se possível onde posso arranjar um exemplo de passar um impulso de 5 v, já estive a pesquisar e vi que tem de ser pelos pinos 2 a 9 desde já obrigado Link to comment Share on other sites More sharing options...
apocsantos Posted March 25, 2015 at 07:29 PM Report Share #580216 Posted March 25, 2015 at 07:29 PM 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 More sharing options...
Saragoca Posted March 27, 2015 at 05:43 PM Author Report Share #580356 Posted March 27, 2015 at 05:43 PM 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 More sharing options...
Saragoca Posted March 28, 2015 at 03:34 PM Author Report Share #580394 Posted March 28, 2015 at 03:34 PM entretanto já consegui carregar o DLL mas agora o debug aparece-me com o seguinte erro " System.Runtime.InteropServices.SEHExceptio{"O componente externo accionou uma excepção."}" Link to comment Share on other sites More sharing options...
apocsantos Posted March 30, 2015 at 11:40 AM Report Share #580477 Posted March 30, 2015 at 11:40 AM Bom dia, Indica-me a versão da framework, que entretanto vou tentar testar isso. 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 More sharing options...
Saragoca Posted March 30, 2015 at 01:12 PM Author Report Share #580481 Posted March 30, 2015 at 01:12 PM é 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 More sharing options...
Saragoca Posted March 31, 2015 at 01:10 PM Author Report Share #580590 Posted March 31, 2015 at 01:10 PM try { Escrever(378, 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); } Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now