WINCE串口通讯经验小结
這兩天由于工作要求,需要在WINCE上開(kāi)發(fā)一個(gè)通過(guò)串口傳輸文件的小工具,經(jīng)過(guò)測(cè)試,調(diào)用WriteFile一直寫(xiě)數(shù)據(jù)時(shí),當(dāng)數(shù)據(jù)長(zhǎng)度超過(guò)50K就會(huì)返回WriteFile出錯(cuò),而且使用GetLastError返回的錯(cuò)誤值是87,1814兩種,如果出錯(cuò)時(shí)不予理解,繼續(xù)向串口寫(xiě)數(shù)據(jù),每隔50K就會(huì)產(chǎn)生一個(gè)WRITEFILE錯(cuò)誤,如此循環(huán)大概到總共寫(xiě)了200多K時(shí),整個(gè)系統(tǒng)都會(huì)崩潰掉。打印崩潰地址如下:
? ? ? ? ? ??Exception 'Data Abort' (4): Thread-Id=05490006(pth=83bbe978), Proc-Id=00400002(pprc=81529308) 'NK.EXE', VM-active=0675000e(pprc=82297a08) 'edm2.exe'
PC=c00713ac(k.coredll.dll+0x000513ac) RA=c0ad637c(orionvsp.dll+0x0000637c) SP=d235f5b0, BVA=0019f9d4
然后再往串口寫(xiě)數(shù)據(jù),永遠(yuǎn)都失敗了。估計(jì)是串口驅(qū)動(dòng)異常了。在網(wǎng)上搜索了很多資料,均無(wú)解決辦法。最終終于被我自己找到一個(gè)解決方法,每次當(dāng)WRITEFILE出錯(cuò)或者寫(xiě)的長(zhǎng)度等于0字節(jié)時(shí)就關(guān)閉串口,再重新打開(kāi)串口,這樣就不會(huì)導(dǎo)致整個(gè)系統(tǒng)的串口驅(qū)動(dòng)崩潰。我們測(cè)試過(guò),傳輸12M的文件都沒(méi)有問(wèn)題,發(fā)送的文件和接收的文件大小完全一樣。
哈哈,終于搞定了!!!
總結(jié)
以上是生活随笔為你收集整理的WINCE串口通讯经验小结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: springboot aop加载流程
- 下一篇: iOS线程锁中你还不知道的内容