来电管理器返回数据处理库函数 |
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进行不同的包处理。 注意事项: 当获得一个完整的数据包后,建议不要花太多的时间来进行用户程序处理,而是将包数据保存好,由另一个进程进行处理,以免阻塞设备上传数据,使得接收设备数据缓存区爆满而丢失数据。当有录音数据上传时,这点尤为重要。
|
|
|
|