來電管理器返回數據處理庫函數 |
gao在2017/4/12發表,被瀏覽1919次
|
點擊下載庫函數:JD2000_clib.rar 為了讓更多的用戶輕松嵌入廣州高深商電子技術有限公司生產的記得系列(JD-2000)來電管理器,我們特別編寫了本函數庫。由于我們的設備,可以用在眾多的操作系統如 windows(XP win7(32&64位) win8(32&64位) win10(32&64位)) Linux Android;而設備又有眾多不同的接口 如COM(串口) USB-COM(模擬竄口) USB-HID(人機界面)WLAN(無線WIFI) BLUETOOTH(藍牙) LAN(以太網) GPRS等。暫時我們將庫函數進行簡化,忽略操作系統和接口,先以C++的方式進行處理。數據的獲得,在不同的操作系統,不同的接口會有所不同,這里不做說明,大家可以參考網上的一些例子。此外我們在將來也會陸續補充在不同操作系統下獲得數據的介紹。 設備數據的格式 設備的數據是以字節流的方式向外發送的,從接口到后把它們以字節數組的方式保存好。 數據的發送特點 數據是以包的方式逐包送出的,同一包數據會連續送出,包與包之間或者有間隔,同一個包相鄰的2個字節之間的時間間隔不會大于200ms。在讀取端口的數據時記錄本次的讀取時間,若本次的讀取時間與上次間隔超過1秒有未處理的數據可以刪除,只保留本次讀到的。 處理庫函數的數據結構 為便于處理從設備返回的數據包,定義如下的數據結構 typedef struct { int chsta; //已接收到的數據包狀態 0初始 9正確接收到完整數據包 中間狀態為1-8 int dlength; //數據包長度 int dtype; //數據包類型 int no; //已接收到的數據字節數 BYTE ddata[70]; //數據包內容 } TRFDATAPACKET; 處理過程 在庫函數中,首先定義一個靜態變量,并在程序加載的時候對它進行初始化 static TRFDATAPACKET reda 然后就是將從設備端口讀到的字節數據不斷地交給主解析函數逐個字節進行處理,以獲取完整的數據包。 void getjddevpack(BYTE lch) 當reda.chsta的值為9時,表示獲得一個完整的數據包,然后根據包的數據類型dtype進行不同的包處理。 注意事項: 當獲得一個完整的數據包后,建議不要花太多的時間來進行用戶程序處理,而是將包數據保存好,由另一個進程進行處理,以免阻塞設備上傳數據,使得接收設備數據緩存區爆滿而丟失數據。當有錄音數據上傳時,這點尤為重要。
|
|
|
|