用戶手冊提到“由于 UDP 模式下 CH395 無法提供流控,建議接收到的數(shù)據(jù)及時快速的讀完,以免被后續(xù)的數(shù)據(jù)覆蓋?!?br>
1、用單個SOCKET作為UDP服務(wù)器。我采用中斷接收數(shù)據(jù),以最快的速度將數(shù)據(jù)接收下來,并放入自己創(chuàng)建的隊列結(jié)構(gòu)中,退出中斷后再處理數(shù)據(jù)。但仍未能解決多個客戶端的數(shù)據(jù)覆蓋的問題,數(shù)據(jù)在CH395的緩沖區(qū)已被覆蓋;
2、用多個SOCKET作為UDP服務(wù)器,數(shù)據(jù)手冊說,只能采用不同的本地端口,這種方式下,可以解決多個客戶端的數(shù)據(jù)覆蓋問題,因為每個SOCKET采用各自的數(shù)據(jù)緩存區(qū),但應(yīng)用場景要求,UDP服務(wù)器需采用相同的端口。
3、以上兩種方法,采用方法1,如果能解決多客戶端的數(shù)據(jù)覆蓋問題;采用方法2,如果能解決多個SOCKET使用相同的本地端口問題,均能滿足我的應(yīng)用需求,請各位幫忙指點一下。
問題思考: 既然用方法2能解決數(shù)據(jù)覆蓋,說明UDP模式下CH395是有可能提供流控的,只需要把CH395把緩沖區(qū)設(shè)計成環(huán)形隊列結(jié)構(gòu),看廠家能否優(yōu)化芯片的固件,以滿足更多應(yīng)用需求。