C#NModbus获取String表单byte []

时间:2018-01-07 16:37:05

标签: c# mono modbus bcd

我使用NModbus4.dll与modbus设备通信。 我读了这个寄存器:

注册:0257-0288

寄存器数量:32

变量名称:监视缓冲区

数据类型:BCD

描述:可读

使用此代码:

byte slaveId = byte.Parse ("1");
ushort startAddress = 257;
ushort[] readValue =  _serialMaster.ReadHoldingRegisters(slaveId, startAddress, 32);
byte[] asciiValue = Modbus.Utility.ModbusUtility.GetAsciiBytes(readValue);
string result = System.Text.Encoding.UTF8.GetString(asciiValue);

我使用this converter从十六进制转换为文本,我得到了这个:

epo tureD aiemet r 7 646.58 mm 4

该寄存器用于读取设备lcd内容,此内容为:

管道外围      2345.78毫米

我无法获得正确的lcd内容。

2 个答案:

答案 0 :(得分:0)

根据source codeGetAsciiBytes方法将对话应用于UTF8;

string result = Encoding.UTF8.GetString(asciiValue);

答案 1 :(得分:0)

我解决了问题。代码没有问题,设备响应不好。