MyException - 我的异常网
当前位置:我的异常网» QT开发 » Qt开发:UDP、TCP发送文字讯息、检测U盘插拔、SYSZU

Qt开发:UDP、TCP发送文字讯息、检测U盘插拔、SYSZUXpinyin软键盘输入法移植-[源码奉送]

www.myexceptions.net  网友分享于:2015-08-26  浏览:50次
Qt开发:UDP、TCP发送文字消息、检测U盘插拔、SYSZUXpinyin软键盘输入法移植------[源码奉送]

         开发环境为Linux+Qt, 功能是实现tcp 、udp发送消息,检测U盘插拔、同时在arm端移植syszuxpinyin软键盘出入法。下面是我当时的工作总结。下面是效果图:

关于tcp、udp:

 

工作

状况

总结

 

 

工作状况:

1,  调通了Qt下的TCP通信模块,并在板子上测试通过,A8开发板与PC通信良好,发送中文无乱码。

2,  TCP模块和UDP模块整合到一起,做到一个GUI界面里。由于TCP的服务端和客户端是不同的,所以合到一起后代码分两份。

3,  解决Tiny210开发板上没有键盘的情况下不能输入的问题,尤其是不能输入中文。移植并改进了SYSZUXpinyin输入法,在Qt的程序里能正常调出软键盘,利用软键盘输入中文。由于SYSZUXpinyin的文字编码方式是GB2312,而linuxqt默认的正常显示中文编码方式是UTF-8,为了解决两者之间的冲突,费了一些功夫。最终顺利解决,发送和接收都能正常显示中文。

4,  利用Qt检测U盘的插拔情况。具体用到了Qtdbus模块。在PC上已经初步检测成功,但移植到arm时发现默认的编译Qt时是不带dbus模块的。现在需要重新编译带dbus模块的armQt。在编译时发现需要先安装dbus库。

总结:

1,  移植输入法后,由于既要解决GB2312UTF-8编码的矛盾,又要解决UDPTCP通信模块在对端收到文字时能正常解析,让我费了不少事。这方便网上资料基本没有,最后通过看qt自带的帮助文档参考众多资料,才得以解决。

2,  利用Qt检测U盘的插拔,通过研究发现,在linuxU盘插进去后会注册大约7usb-device,只里面只有最后一个是真正的USB存储设备。也只有真正的USB存储设备注册成功后,用户才可以正常读写U盘。

 

关于检测U盘:

 

工作

状况

总结

 

 

工作状况:

1,  PCx86平台下,实现了基于HAL机制和UDISKS机制的qdbus检测U盘插拔的设计,在pc平台下能正常检测U盘插拔。

2,  在将以上两种方法移植到arm平台时,发现arm平台并不支持HALUDISKS。原因是HALUDISKS机制都是接收的udev的消息,而udev需要sysfs文件系统做支持,而现在的嵌入式文件系统大多数为yaffs系统。

3,  基于以上种种问题,最终选择了内核的hotplug机制,hotplug接收内核的消息。当有U盘插入或拔出时会有消息从内核发出。利用这些消息发出的关键字如“add”和“remove”可以检测U盘的插拔,及整个内核识别usb的过程。

4,  考虑到当用户还在U盘目录的下拔出U盘,此后若不重启开发板就会识别异常。在未重启开发板前,希望程序对U盘的这种情况进行检测并提醒用户。试验了很多种方法,最终采用了往U盘内写测试文件,来检验U盘是否真正识别。

总结:经过仔细研究发现,当用户还在U盘目录下直接拔出U盘,linux系统还来不及对U盘原挂载目录/udisk进行卸载,因此当未重启再次插入U盘,U盘依旧要访问申请挂载到/udisk就会出错。这种状况除了往/udisk里写数据进行测试外,很难检测。因此,不妨在检测拔出U盘时,判断/udisk目录是否存在,如果存在则执行umount /udisk,这样再次插入U盘就能正常访问。

代码分为服务器端和客户端,每个端都有x86版本和编译好的arm版本,共4份源码,供大家参考。

下面是说明:

Esto-client-arm.tar   ----------交叉编译后arm版本的客户端程序,实现功能有:udp传输、tcp传输、U盘监测,交叉编译器为arm-linux-gcc-4.5.1
Esto-server-arm.tar   ----------交叉编译后arm版本的服务器端程序,实现功能有:udp传输、tcp传输、软键盘移植
Esto-client-x86.tar   ----------PC机上,客户端程序,实现功能有:udp传输、tcp传输、u盘监测
Esto-server-x86.tar   ----------PC机上,服务器端程序,实现功能有:udp传输、tcp传输
备注:SYSZUXpinyin只能在arm上编译,无法再x86上编译运行,原因是其实现基于QWSInputMethod,这个类是arm版本的库所特有的。

 

客户端的两份源码:http://www.pudn.com/downloads529/sourcecode/embedded/detail2190912.html

服务器端的两份源码:http://www.pudn.com/downloads529/sourcecode/embedded/detail2190909.html

文章评论

老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员应该关注的一些事儿
程序员应该关注的一些事儿
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
老程序员的下场
老程序员的下场
为什么程序员都是夜猫子
为什么程序员都是夜猫子
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
我是如何打败拖延症的
我是如何打败拖延症的
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员和编码员之间的区别
程序员和编码员之间的区别
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
编程语言是女人
编程语言是女人
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
我的丈夫是个程序员
我的丈夫是个程序员
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
每天工作4小时的程序员
每天工作4小时的程序员
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
那些争议最大的编程观点
那些争议最大的编程观点
程序员的鄙视链
程序员的鄙视链
旅行,写作,编程
旅行,写作,编程
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员必看的十大电影
程序员必看的十大电影
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Java程序员必看电影
Java程序员必看电影
总结2014中国互联网十大段子
总结2014中国互联网十大段子
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
如何成为一名黑客
如何成为一名黑客
代码女神横空出世
代码女神横空出世
鲜为人知的编程真相
鲜为人知的编程真相
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
漫画:程序员的工作
漫画:程序员的工作
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
一个程序员的时间管理
一个程序员的时间管理
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有