serialport的datareceived事件响应次数有问题 最近在用一个usb虚拟串口做个东西,用单片机的usb与pc传输数据。上位机采用调用cdc类,不过这部分驱动有st公司提供,遇到的问题是当单片机发送''abcd‘’和''ABCD‘’两个字符串时候,pc这边会偶尔出现将这两个字符串一次性接收,即接收到的是''abcdABCD‘’,而不是分开的两个字符串,也就说明本应该datareceived事件响应两次,结果只响应了一次,这是什么原因造成的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实要找根据很简单的,在DataReceived事件里加个显示功能,定义局部变量存储接收到的数据并在textBox里显示出来,如果是一次性接收显示的就是abcdABCD,如果是两次接收,第二次的显示会覆盖第一次的数据,那么显示的就是ABCD。或者定义个全局计数变量好了,每进入一次DataReceived事件就+1,最后看次数。 从串口接收到数据到进入DataReceived事件是存在一定时间间隔的,serialPort的ReceivedBytesThreshold默认为1,不知楼主有没改过。这个属性是设置设置 DataReceived 事件发生前内部输入缓冲区中的字节数,虽然设置成1,但是往往进入事件时读取的字节数并不是1,也就是从缓冲区有第一个字节起到进入数据读取缓冲区的这段时间里,缓冲区内又有数据进入,也许这是时间问题。楼主有时一次性接收,有时分成两次接收,一是跟“abcd"和"ABCD"的发送时间间隔有关,间隔得稍长点,就会分为2次接收,间隔得短就有可能1次接收。二是跟PC有关系,之前有人告诉我可能跟系统进程间的调度有关系。 C#界面添加进来了东西,但是文件名为什么不全部显示 是... 文件名更改后无法加载怎么办? c# windowsForm程序中弄了一个TabControl,两个MenuStrip 简单的C#控制台程序哦 怎样判断一个网络链接是否有效?[急!!!!!] 分类取数据库中的数据 读取XML的问题 C# 调用java+axis2发布的webservcie出现问题 已纠结一周 在DataGrid中定义了一个超级链接列,该如何获取用户点击的行的行号? 如何实现这种效果?解决就给分! 在C#的子窗体画图 VS2010 在调试中,无法查看 Dataset。提示未能加载此自定义查看器
或者定义个全局计数变量好了,每进入一次DataReceived事件就+1,最后看次数。
楼主有时一次性接收,有时分成两次接收,一是跟“abcd"和"ABCD"的发送时间间隔有关,间隔得稍长点,就会分为2次接收,间隔得短就有可能1次接收。二是跟PC有关系,之前有人告诉我可能跟系统进程间的调度有关系。