c# 串口接收数据
我现在需要接收两种大小的十六进制数:一种6Byte,另一种4Byte。每一种的第三位表示该数据的长度。我并不知道串口发过来的数据是哪一种,所以应该怎么接收呢?接收6位的数...
我现在需要接收两种大小的十六进制数:一种6Byte,另一种4Byte。每一种的第三位表示该数据的长度。我并不知道串口发过来的数据是哪一种,所以应该怎么接收呢?
接收6位的数据可以这样接收:
int buffersize = 6;
Byte[] buffer = new Byte[buffersize];
serialport1.Read(buffer, 0, buffersize);
并且把receivedbytesthreshold=6.
同样接收4位也可以这样接收。
但是再不知道对方发过来的数据是哪一种的前提下,怎么接收呢?(但知道每一种数据的第三位表示该组数据的长度,比如第三位为6或者4)。 展开
接收6位的数据可以这样接收:
int buffersize = 6;
Byte[] buffer = new Byte[buffersize];
serialport1.Read(buffer, 0, buffersize);
并且把receivedbytesthreshold=6.
同样接收4位也可以这样接收。
但是再不知道对方发过来的数据是哪一种的前提下,怎么接收呢?(但知道每一种数据的第三位表示该组数据的长度,比如第三位为6或者4)。 展开
展开全部
那就用ReadByte(),读3次,第3次不就是那个值,就可以判断了么。
string s1 = ((char)serialPort1.ReadByte()).ToString();
string s2 = ((char)serialPort1.ReadByte()).ToString();
string s3 = ((char)serialPort1.ReadByte()).ToString();
if(s3 == "4")
{
//接受代码
}
if(s3 == "6")
{
//接受代码
}
string s1 = ((char)serialPort1.ReadByte()).ToString();
string s2 = ((char)serialPort1.ReadByte()).ToString();
string s3 = ((char)serialPort1.ReadByte()).ToString();
if(s3 == "4")
{
//接受代码
}
if(s3 == "6")
{
//接受代码
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询