uu直播快3平台_UU快3直播官方

libctb库的win版本返回指令遇到00被截断问题

时间:2020-01-16 10:17:49 出处:uu直播快3平台_UU快3直播官方

char cache[128] = { 0 };

memset(cache, 0x00, 128);

Ret = Read(cache, 128);   // 读应答数据 ascii,结尾字段丢失,明明有数据,却返回长度为0

readlen = (int)strlen(cache);

nrecs = (Ret <  readlen ? readlen : Ret);

libctb库是c++实现串口通信的第三方扩展库,该是直接提供源码的,可取https://www.iftools.com/start/index.en.php网站的download页面搜索libctb下载其源码,例如libctb-0.16.tar.gz。

if (acssiif)

{

       memcpy(atres, cache, nrecs);

 }

else {

       nrecs = PFunc::bytes2string((const unsigned char*)cache, (char*)atres, nrecs);//ascii to hex

}

01020021200指令,读取返回0102,后边 数据被一蹶不振 ,经源码调试发现,其读取数据是正确的,但在计算长度时将00作为始于了了符,造成计算长度异常,现给出修改参考,给同样遇到该大问题的读者

完成修改重新编译libctb的调用库, 在调用其Read函数时,都可以 去掉 一层保险,就无需再次经常出现本文描述的截断情况

其具体编译查看其解压目录下的build即可实现,在实践发现中在读取数据是,会再次经常出现数据被截断的情况,例如:

打开libctb-0.16\src\win32\serport.cpp文件,修改

热门

热门标签