我覺(jué)得你很有可能是接收數(shù)據(jù)和處理數(shù)據(jù)寫(xiě)在一個(gè)函數(shù)或過(guò)程里的,這樣如果處理數(shù)據(jù)工作量很大的時(shí)候會(huì)漏掉接收數(shù)據(jù)的。建議把接收數(shù)據(jù)和處理數(shù)據(jù)分在兩個(gè)地方,接收歸接收,處理歸處理。就是接收過(guò)程收到串口字節(jié)后保存在數(shù)組里就結(jié)束了,接收過(guò)程盡量簡(jiǎn)短。然后另設(shè)一個(gè)定時(shí)器掃描數(shù)組進(jìn)行命令解析和處理。
創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)營(yíng)銷(xiāo)型網(wǎng)站、網(wǎng)站重做改版、汝城網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城系統(tǒng)網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為汝城等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
另外看一下波特率什么的要選擇合適。
不要反復(fù)打開(kāi)關(guān)閉串口
。每次執(zhí)行操作的時(shí)候都會(huì)把緩沖區(qū)的東西清掉,你也不要清空發(fā)送接收區(qū),不用你管,只要你讀取了,它就清空了。最好這個(gè)獨(dú)產(chǎn)的進(jìn)程,只管接收,收下后快速的存到別的地方供你調(diào)用。另外緩沖區(qū)設(shè)置大一些可以避免丟數(shù)據(jù)。操作得當(dāng)不會(huì)丟掉數(shù)據(jù)。
我沒(méi)搞過(guò)串口通信,但或許會(huì)對(duì)你有所幫助:
1)發(fā)送的時(shí)候你是把5個(gè)數(shù)據(jù)打包在bData中一起發(fā)送的,
2)接收的時(shí)候你認(rèn)為一個(gè)數(shù)據(jù)包只會(huì)產(chǎn)生一個(gè)OnComm事件。
但實(shí)際上你可能錯(cuò)了,一個(gè)數(shù)據(jù)包有可能產(chǎn)生若干個(gè)OnComm事件,你的程序?qū)е耇ext2.Text只能接收到最后一個(gè)。
建議:
Text2.Text = rectext這句改成Text2.Text = Text2.Text rectext