读胶料温度代码

//读胶料温度
private void ReadJLWD(out float JLWD1, out float JLWD2, out float JLWD3, out float JLWD4, out float JLWD5)
{
JLWD1 = 0;
JLWD2 = 0;
JLWD3 = 0;
JLWD4 = 0;
JLWD5 = 0;

_serialPortJLWD.PortName = "COM1";
_serialPortJLWD.BaudRate = 9600;
_serialPortJLWD.DataBits = 8;
_serialPortJLWD.StopBits = StopBits.One;
_serialPortJLWD.Parity = Parity.Even;
_serialPortJLWD.Open();
if (_serialPortJLWD.IsOpen)
{
string strCmd = "01 03 00 00 00 02 C4 0B";
//02 03 00 00 00 02 38 C4
//03 03 00 00 00 02 E9 C5
//04 03 00 00 00 02 5E C4

string[] strs = strCmd.Split(new char[] { ' ' });
byte[] cmdBytes = new byte[strs.Length];

byte[] send_read = StringToByte(strCmd);

for (int i = 0; i < cmdBytes.Length; i++)
{
cmdBytes[i] = Convert.ToByte(strs[i], 16);
}
_serialPortJLWD.Write(cmdBytes, 0, cmdBytes.Length);
System.Threading.Thread.Sleep(500);

int lenth = _serialPortJLWD.BytesToRead;
byte[] buffer = new byte[lenth];
_serialPortJLWD.Read(buffer, 0, lenth);

JLWD1 = float.Parse(buffer[6].ToString());
}
_serialPortJLWD.Close();
}

 

以下是网上找到参考信息

基于RS485接口的Modbus-Rtu通讯

主机读取温湿度数据命令帧:01 03 00 00 00 02 C4 0B

(从机地址为01;功能码为03;数据起始地址为0,所以高位为00,低位为00;总共读取2个数据,所以数据个数高位为00,低位为02;C4和0B为CRC16校验码)【命令帧的校验码会给出,不可更改】

返回的16进制数据为:01 03 04 00 B0 01 E3 BB CD

(从机地址为01;功能码为03;2组数据的高8位和低8位共4字节,所以字节长度为04;00和B0分别为温度数据16进制的高8位和低8位,10进制数据为176,实际数据为17.6℃;01和E3分别为湿度数据16进制的高8位和低8位,10进制数据为483,实际数据为48.3%;BB和CD为返回数据的CRC16校验码)

读取地址:FF 03 00 64 00 01 D0 0B(数据格式和以上相同)

写地址:01 06 00 64 00 02 49 D4(已知原地址为01,改为02)

FF 06 00 64 00 02 5C 0A(未知原地址,改为02)

 

posted on 2019-02-21 09:31  烟灭  阅读(219)  评论(0)    收藏  举报