上位机软件(C/Python/Java等)
直播中

jf_29843582

1年用户 4经验值
擅长:嵌入式技术
私信 关注
[问答]

c#中的serialport数据接收异常

Thread.Sleep(100);
int receiveData = serialPort1.BytesToRead; //读取缓存区字节数目
textBox15.Text = Convert.ToString(receiveData);//这里数据长度为40
DateTime ReadStartTime = DateTime.Now;
byte[] rdata=new byte[serialPort1.BytesToRead];
//try
//{
serialPort1.Read(rdata, 0, rdata.Length);
//}
// catch
//{
// MessageBox.Show("读取数据失败,请检查串口号", "失误");
//}
int q = 0;
q = serialPort1.BytesToRead;
textBox15.Text=textBox15.ToString() + " "+q;//这里的数据长度为0.
int i=0;
//for (i = 0; i < serialPort1.BytesToRead; )
//{
foreach (byte member in rdata)
{
Readbuff[i] = (byte)member;
i++;
// }
}
Thread.Sleep(10);
serialPort1.DiscardInBuffer();
serialPort1.DiscardOutBuffer();
analysisdata();//数据分析函数
Thread.Sleep(10);

在这个代码里面第一次分析接收的数据长度为40,后面的数据接收一直为0,我用的是Visual studio的framwork4.7版本。有人知道这是为什么吗?

回帖(2)

jf_42554907

2023-10-19 11:57:52
好像是接收代码没写完,在后面加上这个试试
foreach (byte xx in buff)
                {
                    string str = Convert.ToString(xx, 16).ToUpper();
                    ReceivedHex.Append(str.Length == 1 ? ("0" + str + " ") : str + " ");
                }
举报

jf_42554907

2023-10-19 11:58:37
foreach (byte xx in buff)
                {
                    string str = Convert.ToString(xx, 16).ToUpper();
                    ReceivedHex.Append(str.Length == 1 ? ("0" + str + " ") : str + " ");
                }
加上这个试试

举报

更多回帖

发帖
×
20
完善资料,
赚取积分