请教个实际问题,C# serialPort在读取数据有时候会连续触发DataReceived事件

我把波特率设置为115200;我传数据长度500字节到1000字节(理想是1200字节),我想在serialPort读取一次就把数据读完,但是实际情况中会触发2次Data... 我把波特率设置为115200;我传数据长度500字节到1000字节(理想是1200字节),我想在serialPort读取一次就把数据读完,但是实际情况中会触发2次DataReceived事件 。假如传总字节是500,情况一:第一次触发DataReceived事件 就会把500字节的数据全部读完,第二次触发DataReceived事件 得到的数据长度为0,我是用sp.BytesToRead判断的;情况二:第一次触发DataReceived事件为499,第二次触发DataReceived事件的数据长度为1了;问题是怎么设置可以避免情况二,希望是读取一次就把500字节读完,请大家帮帮忙啊! 展开
 我来答
克里斯采
2013-07-28 · 超过11用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:32.8万
展开全部
设置serialPort的某一属性,使缓存达字节到设置值,才触发DataReceived事件
更多追问追答
追问

我 的属性是这样的,其中readbuffersize和writebuffersize开始默认值和我后面设置的值还是存在我上面的情况,请帮忙看下 谢谢

追答
ReceiveBytesThreshol改为500
cjj796
2013-07-27 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3461万
展开全部
没有碰到你说的情况,是不是你设置的有问题?

把代码贴出来看看吧
更多追问追答
追问

上面是我的代码,我用一个移动设备,可以理解成扫描枪,触发这个事件后,扫描一次会弹出2次MessageBox.Show,就是我问题描述的情况了,请帮忙看下 谢谢

追答
你串口读入的是16进制数据吗?

还有你的接收缓存区,为什么要设置成动态的?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式