当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 入门指导 > 物联网仓储项目学习遇到的困难【学员笔记】

物联网仓储项目学习遇到的困难【学员笔记】 时间:2018-07-11      来源:未知

1. QT的客户端,c的服务器之间不好沟通。解决:框架用 QT风格写(包括信号与槽,QT界面,连接服务器,发送接收等),数据用c的风格写,做到与服务器一致。

2. Tcp粘包拆包,收发数据一致,结构体成员类型大小一致。

3. Tcp处理登录,udp处理发送视频,导致开线程pthread_create传参不好传。Tcp的connfd,udpfd封装成结构体传,或者开2个线程。

4. 回收资源时候,关闭connf;但不能关闭udpfd,否则下一次连接传不了图片(视频)了。

5. V4l2框架需要自学,转码压缩算法需要自学。

6. Memcpy之段错误: //1在unix上,系统对内存管的比较松,而在linux下,指针可能是指向了一个只读的内存。buffer = (char*)malloc(outqueue.length);

7. Arm-linux-gcc编译代码的时候需要很多头文件和库的支持(sqlite3,jpeg),应该将它们放在相应的位置。

8. -ljpeg一直报错,cannot found。

通过比对正常的库文件:libsqlite3.la

# Directory that this library needs to be installed in:

libdir='/home/farsight/libjpeg/lib'

发现libjpeg.la虽然通过arm-linux-gcc交叉编译了的,但是生成的文件的路径仍为gcc编译后libjpeg目录,而不是自己修改后的armjpeg目录。

# Directory that this library needs to be installed in:

libdir='/home/farsight/libjpeg/lib'

解决:删除解压后的文件,重新解压,重新arm-linux生成新的文件夹

9. 应该用buf【】装图片数据,不应该用char* buf = NULL装。

10. 应该把摄像头采集等模块分开,便于调试。

11. 自学M0模块(串口函数),LCD模块。

12. 服务器循环发图片,QT客户端只显示了一张,因为虚拟机的原因,交叉编译放在板子上跑,ok

13. 多个客户端同时访问的时候出现图片花的情况,因为会出现抢占队列资源的情况。把get_picture单独开一个线程,把取得的图片放在全局变量buf里,客户端访问buf就好,因为客户端要读buf,服务器要写buf,所以得加锁保护。Udp发送不消耗时间,mencpy消耗时间,避免抢锁,udp发送后加点延时

14. 客户端异常卡死,服务端while(1)发送,客户端无法及时处理,数据太多,导致卡死。???

15. 视频不流畅,图片数据太大,占宽带,设置320*240,QT设置为饱满缩放scaledContents打钩

16. 图片花,QT那边接受数组定小了。

17. Test_ser模式加不加锁都OK。True_ser模式加不加锁两个客户端都相互干扰,且段错误。

18. True_ser中:pthread_t pid_play;//多客户端会导致值被修改,导致干扰

19. True_ser中:pthread_cancel(pid_play);//存在暴力取消,导致死锁的风险

20. True_ser中:因为udp的关系,无法判断客户端什么时候退出,客户端退出时候,服务器依然会发送图片,浪费。综上放弃true_ser,采用test_ser。

上一篇:hi,告诉你嵌入式硬件开发中要留意的,不得不看

下一篇:arm程序汇编指令总结,让你更高效的学习

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部