[英]C# representation of hex in byte array
我想通过串口发送十六进制值。
设备手册显示数据应如下所示:
Protocol sent ’ENQ’ ’0’ ’0’ ’3’ ’,’ ’0’ ’0’ ’0’ ’ETX’ Hexadecimal 05 30 30 33 2C 30 30 30 03
编码:
_serial.BaudRate = 9600;
_serial.Parity = Parity.None;
_serial.DataBits = 8;
_serial.StopBits = StopBits.One;
_serial.Open();
byte[] bytesToSend = new byte[9] { 05,30, 30, 33 , 2C , 30 , 30 , 30 , 03 }; // This should be represent bytes equivalent to hex value
_serial.Write(bytesToSend,0,9);
我知道我应该使用字节数组发送此消息,但是我不知道如何在数据字节数组中表示十六进制值。
根据您提供的示例,您的设备需要将数据编码为ASCII。 0x30 = ASCII中的'0'。
正如其他人所说,您使用“ 0x”表示十六进制值。
对于以ENQ开头并以ETX结尾的一般消息:
ASCIIEncoding asciiEncoding = new ASCIIEncoding();
string msg= "003,000";
byte[] msgBytes = asciiEncoding.GetBytes(msg);
byte[] bytesToSend = new byte[msgBytes.Length +2];
bytesToSend[0] = 0x05;
bytesToSend[bytesToSend.Length -1] = 0x03;
Buffer.BlockCopy(msgBytes, 0, bytesToSend, 1, msgBytes.Length);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.