2012-04-03 3 views
5

Я только недавно начал работать в C#, и в настоящее время я использую RS-485 для связи с некоторыми другими устройствами, но я, похоже, не могу фактически заставить другие устройства реагировать , Мне было интересно, есть ли способ записи на конкретное устройство с использованием последовательной связи, поскольку все подключено через COM-порт 4. Я уже знаю serial.Write(); но, насколько я знаю, это не дает вам возможность выбрать адрес, который вы хотите отправить. Есть ли кто-нибудь, кто мог бы знать answar на этот вопрос?C# Последовательная связь с несколькими устройствами на одном порту

С наилучшими пожеланиями CVR

Спасибо за ответы. Они помогли много :)

ответ

8

Кристофа правильно, но разработать немного больше:

При общении с RS232 вы просто две конечные точки, ваш компьютер и внешние устройства. Вы общаетесь с устройством, отправляя его командам или даже отправляете их независимо. Это может быть простой текст ASCII или двоичный/шестнадцатеричный коды. Способ, которым он обменивается между двумя устройствами, известен как протокол - и ваше приложение должно реализовать этот протокол, чтобы иметь возможность «разговаривать» с устройством.

RS485 отличается от RS232 тем, что вы можете подключить несколько устройств к одному и тому же последовательному порту, который подключен к вашему ПК. В зависимости от вашего устройства у него будет свой собственный протокол, который он понимает, что вам нужно будет изучить и стать знакомым. Это должно поставляться с устройствами, к которым вы подключаетесь.

Как правило, протокол будет (по крайней мере) следующую информацию:

  • Адрес устройства - он использует это, чтобы различать, какое устройство вы хотите поговорить, как правило, могут быть установлены с помощью аппаратных средств тумблеров и тому как
  • Command - собственно команда, которую вы хотите отправить в блок
  • Data - Любые дополнительные данные, которые вы, возможно, потребуется пройти для конкретных команд

Итак, экзамен PLE команда, которую вы могли бы послать в устройство будет выглядеть (обратите внимание, что это только пример):

$01FF9A 

Где:

01 является модуль или устройства уникальный адрес FF тип команды 9A является данные

Итак, модуль с адресом устройства 01 будет читать команду и выводить «эй, вы говорите со мной», а затем обрабатывать информацию о команде. Все остальные устройства также получат данные, но поймут, что они не предназначены для себя.

Обычно устройства RS485 обмениваются данными с использованием данных Hex, поэтому вашему приложению необходимо будет отправлять шестнадцатеричные команды внешним устройствам и обрабатывать преобразование для использования для любых соответствующих ответов и т. Д. Возможно, вам нужно будет посмотреть Serial.Write(byte[], int,int), чтобы отправить шестнадцатеричные данные в устройств.

Для более подробного объяснения класса .NET последовательного порта, обратитесь к http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx

1

Вы можете создать экземпляр класса SerialPort.
Там вы можете определить скорость передачи, имя порта и т. Д.
После вызова метода Open() вы можете читать или записывать данные в порт или из порта.

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

Это не отвечает на его вопрос. –

Смежные вопросы