byte[] bte = { 170, 0, 15, 31,, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204 };
port.Write(bte);
这样发送一个数组会报错,要转成string类型,但转成后发送就不是想要的数据了。比如要发送:AA 00 31 00 00 CC 这样的数据。求大佬解惑
函数:Write(array[], Int32, Int32)
报错的原因你缺少参数
函数:Write(String)
如果发字符串是用上面这个函数
所以发送字符串和发送16进制数据需要的传递参数是不一样的
byte[] bte = new byte[];
bte[1]=0xAA;
bte[2]=0x00;
bte[3]=0x31;
bte[4]=0x00;;
bte[5]=0x00;
bte[6]=0xCC;
就是说你往Byte中存值得时候放16进制的值
你传char[] 因为每一个char字符都可当成一个数字 比如a =97 你 char ch=97你输出ch时就是字符a 你把它转成整数时就是97,正好char数组的每一位置就是你的一个数字,如果超出255就要在转换时2位转成一个数字
为什么TCP通讯就可以直接传数组 串口不行吗?
byte[] buf=new byte[5];
buf[0]=0xAA;
buf[1]=0x00;
buf[2]=0x31;
buf[3]=0x00;;
buf[4]=0x00;
if (port.IsOpen == false)
return -1;
port.Write(buf, 0,5);
return 0;