2013-02-28 2 views
0

Я разрабатываю программу, которая связывается с COM-устройством (Fluke 123 Scopemeter). Когда я отправляю данные ASCII, у меня не было проблем.Отправка данных String и Hex с использованием RS232 VB.net

Что мне нужно сделать, это отправить комбинацию данных ASCII и HEX. Я смотрел несколько сообщений на этом сайте, но они, похоже, сосредоточены на исключительно отправке HEX-данных. Мне нужно найти способ отправки комбинированных ASCII и HEX - по существу, мне нужно найти способ эффективно форматировать данные HEX, чтобы он понимался с помощью COM-устройства.

Пример того, как я строю свою строку, следует. Это дает мне ошибку «Преобразование из строки PS # 0x» в тип «Двойной» недействителен », который я предполагаю, потому что я смешиваю два типа данных! Надеюсь, я делаю что-то действительно глупо, и это на самом деле ! просто

'Building my command line 
Command = "PS" 
Command += ControlChars.Cr 
Command += "#0 x" 
Command += &H0 + &H2 + &H0 + &H0 + &H0 
Command += " y" 
Command += &H0 + &H1 + &H0 + &H0 

... 

'Writing my command to the COM device 
moRS232.Write(Command) 

Любая помощь, кто может дать бы оценивать

ответ

1

Хитрость заключается в отправке байтов, что означает, что ваши строки необходимо преобразовать в байты. Пример:

Dim buf As New List(Of Byte) 
    buf.AddRange(moRS232.Encoding.GetBytes("PS" & ControlChars.Cr & "#0 x")) 
    buf.AddRange(New Byte() {0, 2, 0, 0, 0}) 
    buf.AddRange(moRS232.Encoding.GetBytes(" y")) 
    buf.AddRange(New Byte() {0, 1, 0, 0}) 
    moRS232.Write(buf.ToArray, 0, buf.Count) 

У вас есть руководство, показывающее протокол? Если вы вставляете ссылку.

+0

Это был код, на котором я основал мой COM-коммуникацию. [Последовательная связь с VB.Net] (http://www.codeworks.it/net/VBNetRs232.htm) –

0

Вы правы - это будет получить очень запутанным для Fluke, если он получает как ASCII и шестнадцатеричные данные [даже если бы это было возможно отправьте одним методом].

Итак, если для метода Write требуется строка, вам необходимо преобразовать шестнадцатеричные команды в строку, а также увидеть ASC()/CHR() команды

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