读书人

读取串口缓冲区能超时.

发布时间: 2013-08-23 15:57:36 作者: rapoo

读取串口缓冲区会超时..........急!
本帖最后由 shinjixyj 于 2013-08-15 09:01:03 编辑 在读取时 有时会 发生超时 超时时间不定 有时超过10毫秒 有什么办法能快点吗 最好3毫秒内读好一个寄存器

for (int i = 0; i < len; i++)
{
c = sw.ElapsedMilliseconds;
serialPort1.Read(num, i, 1);
d = sw.ElapsedMilliseconds;
if ((d - c) > databyteout)//databyteout = 3
{
WritePrivateProfileString("error", "C:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), " " + c, FileNameerror);//记录时间
WritePrivateProfileString("error", "D:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), " " + d, FileNameerror);
Form2.isok = false;
Form2.boolcheck = false;
WritePrivateProfileString("error", "error" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "字间超时!"
+ num[i] + " " + i + " " + thenum[0], FileNameerror);//记录读取超时的寄存器
MessageBox.Show("字间超时!");
serialPort1.DiscardInBuffer();


return;
}
}
serialPort1.DiscardInBuffer();
[解决办法]
这都是你自己规定的超时。。。
要看读取串口有没有超时应该设置serialPorts的ReadTimeout属性

PC机上那么多程序,无法保证每个时刻都在执行楼主的程序
c = sw.ElapsedMilliseconds;
d = sw.ElapsedMilliseconds;
d-c并不能真实的代表读取串口的时间

楼主将serialPorts的ReadTimeout属性设置为3,看是否会发生超时
[解决办法]
串口数据有延时的
多久能读完完整的一帧数据
需要你自己多测试你的设备了

读书人网 >C#

热点推荐