C# serialport串口接收到的数据如何处理(称重软件)

lq_jack 2015-05-26 03:25:20


这些数据如何处理得到我想要的数据重量,假如我要取10个字节,开始为02 结束为31 如何处理这些数据,数据源源不断的来,我应该怎么弄?
本人有点笨,最好用代码说话!


本人代码:

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{

int count = serialPort1.BytesToRead;
//string Text = serialPort1.ReadExisting();
//int count = serialPort1.ReadBufferSize;
byte[] data = new byte[count];

int bytesRed= serialPort1.Read(data, 0, count);


foreach (byte item in data)
{
if (radioButton1.Checked)
{

s += Convert.ToChar(item);

}
else
{
s += ByteToHexString(item);

}

}

if(this.InvokeRequired)
{

this.Invoke(new MethodInvoker(delegate{this.textBox1.Text=s;}));
}
else
{
this.textBox1.Text=s+" ";
}

text = DecimalDex(data);

}
...全文
923 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lq_jack 2015-05-26
  • 打赏
  • 举报
回复
恩,谢谢这些回答比较有帮助,我在想数据一般是一个时间戳发送一帧数据,我想是否可以扑捉到某一个时间戳发送的数据,然后处理,就可以了,不知道这样可以实现不?
雪狼孤竹 2015-05-26
  • 打赏
  • 举报
回复
你可以十个字节一处理 还可以把接收到的数据存在一个数组中(收到数据就存入数组),之后按十个字节一处理,处理完后删除已处理数据。
於黾 2015-05-26
  • 打赏
  • 举报
回复
serialPort1_DataReceived里 接收到的数据先add进list<byte>里 然后判断list长度是否超过10,不超过,等下一次接收数据再处理 如果超过,判断02的位置,02之前的都remove掉. 如果第0个字节是02,那么再检查第9个字节是否是31 如果第9个不是31,说明数据有错误,直接丢弃,等下一次接收 如果头尾都正确,把中间8个字节取出来做运算,再从数组里remove掉

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧