Vb.net интерфейс RS232 получите шестнадцатеричных данных
Я посылаю команду rs232 Hex к датчику температуры и влажности follow up manual. но результат не сработал
Дим данных как Byte() = {&амп;Н1 &амп;Н4 &амп;х0, &ампер;Н1 &амп;х0, &ампер;Н1 &амп;Н60, &ампер;га}
SerialPort1.Write(data, 0, 8)
Результат в ручном режиме = 0x131
моя программа = 01 04 02 01 2B F8 BF
Что я уже пробовал:
Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) обрабатывает SerialPort1.DataReceived
'ReceivedText(SerialPort1.ReadExisting())
Dim Count As Integer = SerialPort1.BytesToRead
Тусклый Буфер(От 0 До Count - 1) В Виде Байта
Dim Text2Display As String = ""
SerialPort1.Read(Буфер, 0, Счетчик)
For I As Integer = 0 To Buffer.GetUpperBound(0)
Text2Display += Буфер(I).ToString("X2") & " "
Следующий
ReceivedText(Text2Display)
Конец Подводной Лодки
Private Sub ReceivedText(ByVal [text] As String)
Если я.rtbReceived.Свойство Invokerequired Тогда
Dim x As New SetTextCallback(AddressOf ReceivedText)
Me.Invoke(x, New Object() {(text)})
Еще
Я.rtbReceived.Text &= [text] & vbNewLine
Конец, Если
Конец Подводной Лодки
End Класса
OriginalGriff
И это все, что вам нужно знать.
Он точно говорит вам, что вы посылаете сверху, и что он дает в качестве ответа.
Он говорит, что использует протокол MODBUS, и объясняет, что это за данные.
01 04 02 01 2B F8 BF правильно: посмотрите на "значение температуры отклика от ведомого устройства", и все данные там есть.
Возьмите свое сообщение, проверьте правильность DA, проверьте правильность CRC-16, затем вы можете проверить количество байтов и получить временные данные.
Это довольно простая вещь (за исключением CRC, который требует немного работы, но есть масса примеров этого:
http://comfiletech.com/blog/modbus-crc-algorithm-for-net/
например.