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)。
展开
 我来答
goorcome
2008-09-10 · TA获得超过453个赞
知道小有建树答主
回答量:688
采纳率:0%
帮助的人:520万
展开全部
那就用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")
{
//接受代码
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式