2012-04-03 27 views
5

Comencé a trabajar brevemente en C# y actualmente estoy usando RS-485 para comunicarme con otros dispositivos, pero parece que no puedo hacer que los demás dispositivos respondan . Me preguntaba si había alguna forma de escribir en un dispositivo específico mediante comunicación en serie, ya que está todo conectado a través del puerto COM 4. Ya sé serial.Write(); pero hasta donde yo sé, no le da la opción de elegir a qué dirección desea enviar. ¿Hay alguien que pueda conocer una respuesta a esta pregunta?C# Comunicación en serie con múltiples dispositivos en un puerto

Saludos Cvr

Gracias por las respuestas. Ayudaron mucho :)

Respuesta

8

Kristof es correcto, pero para elaborar un poco más:

Cuando se comunica con RS232 sólo tiene dos puntos finales, el PC y el dispositivo externo. Se comunica con el dispositivo enviándole comandos, o incluso puede enviarlos independientemente. Puede ser texto ASCII simple o códigos binarios/hexadecimales. La forma en que se comunica entre los dos dispositivos se conoce como protocolo, y su aplicación debe implementar este protocolo para poder 'hablar' con el dispositivo.

RS485 es diferente a RS232, ya que puede conectar varios dispositivos en el mismo puerto serie que está conectado a su PC. Dependiendo de su dispositivo, tendrá su propio protocolo que entiende que necesitará estudiar y familiarizarse. Esto debe ser suministrado con los dispositivos a los que se está conectando.

Por lo general, el protocolo tendrá (al menos) la siguiente información:

  • Dirección del dispositivo - que utiliza este para distinguir entre los distintos dispositivos para hablar, por lo general se puede establecer mediante interruptores de palanca de hardware o el como
  • comando - el comando real que desea enviar a la unidad
  • datos - Cualquier dato adicional que tenga que pasar por comandos específicos

Así, un examen comando PLE es posible enviar a la unidad se verá como (tenga en cuenta que esto es sólo un ejemplo):

$01FF9A 

Dónde:

01 es el módulo o los dispositivos de dirección única FF es el tipo de comando 9A es los datos

Aquí, el módulo con la dirección del dispositivo 01 leerá el comando y deducirá 'hey me está hablando' y luego procesará la información del comando. Todos los demás dispositivos también recibirán los datos, pero se darán cuenta de que no están destinados a sí mismos.

Por lo general, los dispositivos RS485 comunicarse utilizando los datos Hex, por lo que su aplicación tendrá que enviar comandos hexagonales a los dispositivos externos, y manejar la conversión a partir de las respuestas pertinentes, etc. Es posible que tenga que mirar Serial.Write(byte[], int,int) para enviar datos a hexagonales los dispositivos.

Para una explicación más detallada de la clase .NET puerto serie, consulte http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx

1

Puede crear una instancia de la clase SerialPort.
Allí puede definir la tasa de baudios, el nombre del puerto, etc.
Después de llamar al método Open(), puede leer o escribir datos desde o hacia el puerto.

var port = new SerialPort(); 
port.PortName = "COM4"; 
port.Open(); 
+0

esto no responde a la pregunta. –

Cuestiones relacionadas