首先明白串口繼電器協議(0x24協議),發送的指令要求格式一般
幀頭(1 字節)、地址(1 字節)、命令長度(1 字節)、命令(1 字節)、參數碼(N 字節)、校驗(1 字節)
波特率:9600,校驗位:N,數據位:8,停止位:1
其次確定控制燈開燈滅
那麼必先實現硬件軟件對接,涉及串口通信,
獲取通信端口,並打開
C# serialPort 類用於打開串口
先看看serialPort 有沒有串口,沒有便實例化一個
serialPort = new SerialPort("COM4");
serialPort.BaudRate = 9600;
serialPort.Parity = Parity.None;
serialPort.StopBits = StopBits.One;
serialPort.DataBits = 8;
緊接着打開串口
serialPort .Open();接着發送指令,指令是按協議拼成的16進制字符
字符串,串口通訊裏發送的都是byte,是不存在十六進制數據的,十六進制的全稱叫十六進制字符串,也就是說比如F0,轉換後就是一個byte字節,值爲十進制240,只有當把收到的240轉成十六進制字符串時纔有F0
也就是說,我們需要向串口發送字節,這時需把16進制指令轉換成byte字節
//16進制轉byte
public static byte[] HexStringToByteArray(string s)
{
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
return buffer;
}
再發送指令即燈滅火燈亮的指令():
serialPort.Write(array, 0, array.Length);
可獲取響應返回
byte[] recData = new byte[serialPort.BytesToRead];
serialPort.Read(recData, 0, recData.Length);
最後關閉串口
serialPort.Close();