Integração com hardware via TCP/IP - Serial
18/11/2011
0
Boa tarde meus colegas.
Estou aqui como ultimo recurso, após varias tentativas, na esperança que alguem possa me ajudar.
Estou fazendo uma integração com um hardware(via TCP/IP), mais especificadamente um gravador/leitor de cartão magnético. De acordo com o manual de integração do aparelho, eu devo enviar comandos para este aparelho e ele executará as operações.
De acordo com a documentação a o padrão de mensagem a ser enviada é a seguinte:
STX | Mensagem | ETX LRC
Sendo que o caractére | se refere ao caracter ASCII (179), e que ao inves de enviar um LRC pode ser enviado um caracter ASCII (13).
Verifiquei que esse STX e este ETX são também caracteres ASCII.
STX = ASCII (02) e ETX = ASCII (03).
STX inicia a mensagem e ETX finaliza a mensagem.
O código(em C#) da minha primeira tentativa(de muitas) ficou assim:
TcpClient client = new TcpClient(localhost, 6669);
client.ReceiveTimeout = 5000;
client.SendTimeout = 5000;
NetworkStream ns = client.GetStream();
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] bytes = encoding.GetBytes(STX| + strMensagem + |ETX\n);
ns.Write(bytes, 0, bytes.Length);
----------
Tentei também enviar os dados dessa forma:
byte[] bytes = encoding.GetBytes(\x02 + (char)179 + LT + (char)179 + 1 + (char)179 + E + (char)179 + \x03 + \x013);
ns.Write(bytes, 0, bytes.Length);
Nesse caso o \x02 é o STX, o (char)179 é o |, e o \x03 é o ETX.
-----------
Minha dúvida é: Alguém conhece ou trabalhou com mensagem desse padrão ou similares a esta?
Estou enviando os dados da forma correta?
Quando tento ler alguma informação nesta porta através do método NetworkStream.Read(), ele não traz informação alguma ou em outros casos acusa falha de conexão.
Tem alguma forma de eu testar a conexão com esta porta? Ou seja se ela está enviando e recebendo as mensagens.
Me ajudem por favor.
Obrigado
Estou aqui como ultimo recurso, após varias tentativas, na esperança que alguem possa me ajudar.
Estou fazendo uma integração com um hardware(via TCP/IP), mais especificadamente um gravador/leitor de cartão magnético. De acordo com o manual de integração do aparelho, eu devo enviar comandos para este aparelho e ele executará as operações.
De acordo com a documentação a o padrão de mensagem a ser enviada é a seguinte:
STX | Mensagem | ETX LRC
Sendo que o caractére | se refere ao caracter ASCII (179), e que ao inves de enviar um LRC pode ser enviado um caracter ASCII (13).
Verifiquei que esse STX e este ETX são também caracteres ASCII.
STX = ASCII (02) e ETX = ASCII (03).
STX inicia a mensagem e ETX finaliza a mensagem.
O código(em C#) da minha primeira tentativa(de muitas) ficou assim:
TcpClient client = new TcpClient(localhost, 6669);
client.ReceiveTimeout = 5000;
client.SendTimeout = 5000;
NetworkStream ns = client.GetStream();
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] bytes = encoding.GetBytes(STX| + strMensagem + |ETX\n);
ns.Write(bytes, 0, bytes.Length);
----------
Tentei também enviar os dados dessa forma:
byte[] bytes = encoding.GetBytes(\x02 + (char)179 + LT + (char)179 + 1 + (char)179 + E + (char)179 + \x03 + \x013);
ns.Write(bytes, 0, bytes.Length);
Nesse caso o \x02 é o STX, o (char)179 é o |, e o \x03 é o ETX.
-----------
Minha dúvida é: Alguém conhece ou trabalhou com mensagem desse padrão ou similares a esta?
Estou enviando os dados da forma correta?
Quando tento ler alguma informação nesta porta através do método NetworkStream.Read(), ele não traz informação alguma ou em outros casos acusa falha de conexão.
Tem alguma forma de eu testar a conexão com esta porta? Ou seja se ela está enviando e recebendo as mensagens.
Me ajudem por favor.
Obrigado
Wilson Junior
Curtir tópico
+ 0
Responder
Posts
03/12/2011
Rodrigo Odasaki
Eu nunca trabalhei com isso, tenta no fórum oficial da MSDN
msdn.com.br > Fórum
msdn.com.br > Fórum
Responder
Clique aqui para fazer login e interagir na Comunidade :)