关于SerialPort接收数据的问题 本帖最后由 RedFish2010 于 2010-06-24 10:18:25 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HComPort.BaudRate = 921600;//set to your using HComPort.DtrEnable = true; HComPort.RtsEnable = true; while (ATresult == ATstatus.WaitingResponse) { Thread.Sleep(100); if (HComPort.BytesToRead > 0) { ATRx = ATRx + HComPort.ReadExisting(); if (TestOK(ATRx)) ATresult = ATstatus.OK; if (TestERROR(ATRx)) ATresult = ATstatus.Error; } if (TimerCount > 30) { ATresult = ATstatus.TimingOut;} else { TimerCount++; }; } 我用serialPort类写过程序的。但当时是在线程里面处理的。函数DataReceived时,当有出发时,串口里是有缓冲的。我有点不明白怎么会乱。你需要把一条数据都读出来,而不要去一位一位的去读取。不然的话就会出现一个触发和触发之间出现交替读取的。除非你所发的数据只有一位,同时串口通讯对于读取一条数据,是通过判断'\n'来取得结束的。所以你的那个短信猫发送的一条数据必须以'\n'结束。 我用serialPort类写过程序的。但当时是在线程里面处理的。函数DataReceived时,当有出发时,串口里是有缓冲的。我有点不明白怎么会乱。你需要把一条数据都读出来,而不要去一位一位的去读取。不然的话就会出现一个触发和触发之间出现交替读取的。除非你所发的数据只有一位,同时串口通讯对于读取一条数据,是通过判断'\n'来取得结束的。所以你的那个短信猫发送的一条数据必须以'\n'结束。 ls可否把你做过的代码打包发我一份,邮箱[email protected]。100分相送 可以用ReadLine(),不要用DataReceived 用同步阻塞线程读取数据,就不会同时触发多个DataReceived事件参考下面这个连接的SynReceiveData方法http://blog.sina.com.cn/s/blog_4a5e327701008880.html 你可以考虑在函数执行,主程序等待0.5s,然后根据CMIT和CMGR来判断读到的数据是否合适,然后对这些进行判断一一解析,其实我们关注的是短信内容,至于短信序号,谁在乎呢? 如何设置sqlite的权限?win7下提示 write a read-only database silverlight5 能否实现CS以及BS模式下的3D开发? 新手求解ASP.NET的分布式架构 [winform]自动升级 C# 调用7Z解压缩 ROW_NUMBER函数分页 在.NET中,哪些对象可以被序列化,哪些不能被序列化?可以通过哪些来识别这些对象呢? UTF-8与ANSI编码的纯文本文件,一个字符也没有,用filestream的length来统计字节数,前者为3后为0怎么回事? 打开其他计算机的项目,等。。。。。。。 怎样关闭子窗体? 关于url重写 字数过多,无法更新
HComPort.BaudRate = 921600;//set to your using
HComPort.DtrEnable = true;
HComPort.RtsEnable = true; while (ATresult == ATstatus.WaitingResponse)
{
Thread.Sleep(100);
if (HComPort.BytesToRead > 0)
{
ATRx = ATRx + HComPort.ReadExisting();
if (TestOK(ATRx)) ATresult = ATstatus.OK;
if (TestERROR(ATRx)) ATresult = ATstatus.Error;
}
if (TimerCount > 30) { ATresult = ATstatus.TimingOut;}
else { TimerCount++; };
}
函数DataReceived时,当有出发时,串口里是有缓冲的。我有点不明白怎么会乱。你需要把一条数据都读出来,而不要去一位一位的去读取。不然的话就会出现一个触发和触发之间出现交替读取的。
除非你所发的数据只有一位,同时串口通讯对于读取一条数据,是通过判断'\n'来取得结束的。所以你的那个短信猫发送的一条数据必须以'\n'结束。
函数DataReceived时,当有出发时,串口里是有缓冲的。我有点不明白怎么会乱。你需要把一条数据都读出来,而不要去一位一位的去读取。不然的话就会出现一个触发和触发之间出现交替读取的。
除非你所发的数据只有一位,同时串口通讯对于读取一条数据,是通过判断'\n'来取得结束的。所以你的那个短信猫发送的一条数据必须以'\n'结束。
http://blog.sina.com.cn/s/blog_4a5e327701008880.html