CH34X OTG,32字節(jié) 因buffer 大小,數(shù)據(jù)接收異常

您好,我們一直在用Ch34x芯片,并且應用在 安卓OTG? 與我們的設備 進行通信。

之前一直很穩(wěn)定,因為 我們的協(xié)議幀 長度固定10字節(jié) or 130字節(jié),后面? 我們 在其它項目中,發(fā)出 不定長的數(shù)據(jù),發(fā)現(xiàn)一個異常情況;

場景背景如下:

1.android 代碼 我們目前 不是直接用的 sdk

2.我們有個線程 在讀取 數(shù)據(jù),我們的buffer,usbdata 長度為1024.?

CH34X問題.jpg


我們可以正常收發(fā)數(shù)據(jù),并且在我們項目中驗證了?3-4年都沒問題。

現(xiàn)在 新情況為:我們新的項目中 與設備端 通信采用 非定長 協(xié)議(即 在協(xié)議中 約定幀長,動態(tài)解析),我們發(fā)現(xiàn) 當設備 發(fā)來32 字節(jié)的數(shù)據(jù)時,我們居然 收不到數(shù)據(jù)。? 設備一直發(fā)32,一直收不到數(shù)據(jù),直到? 撐滿1024的buffer,才一股腦的 從安卓底層上傳數(shù)據(jù)上來。

針對此情況,我將接收buffer 長度調(diào)成 32字節(jié),此時可以兼容此情況。但是 依舊存在一個問題:當設備端 發(fā)來 200+ 數(shù)據(jù)時,此時 鐵定丟包。

請問有沒有好的解決辦法


上面照片可能看不清,補發(fā)一張。

現(xiàn)象為:

  1. 當我們 將 usbdata? = new byte[32]; 時,并且 mUsbRequest.queue(buf, usbdata.length) 能正常接收 32字節(jié)的數(shù)據(jù)

? ? ? ?但是有隱患: 設備發(fā)長數(shù)據(jù)時,會丟包

2.當我們 將 usbdata = new byte[1024]時,并且??mUsbRequest.queue(buf, usbdata.length),無法接收到 32字節(jié)的 固定長數(shù)據(jù),感覺被緩存到了 底層? 直到 被撐滿 usbdata 才會上報!



image.png


您好,如上情況是因為初始化CH340設備的時候,沒有開啟0長度包上傳功能,導致按照1024長度讀取USB數(shù)據(jù)時,遇到端點整數(shù)倍大小的串口數(shù)據(jù)無法返回。

1、安卓工程師聯(lián)系您這邊增加1條設備配置指令可解決此問題,已私信您;

2、使用USB和串口傳輸效率更高,端點更大的USB轉(zhuǎn)串口芯片,如CH343解決;


好的,已經(jīng)添加。感謝支持


請問解決了嗎,我目前也遇到這個問題,大于和小于32字節(jié)的可以收到,等于32字節(jié)的串口就收不到


暈,照著安卓的DEMO寫了個CH340串口調(diào)試app,今天正好看到,試了下也是32字節(jié)無法接收,發(fā)送沒有問題。

DEMO程序好像可以,沒看到哪個設備配置指令啊,能說明下嗎


我是用registerDataCallback回調(diào)里獲取串口接收數(shù)據(jù)的


您好,可直接對接安卓同事,聯(lián)系方式已私信您。


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频