Using SocketCAN Plugin,记录一下我的摸索历程。

1.准备工作

1.我手中的一个工业安卓平板,已内置socketcan

2.qt serialbus源码,qt默认不安装

2.编译qt serialbus源码

官方源码github:https://github.com/qt/qtserialbus

在windows平台下,安装目录中能找到QtSerialBus

android onAccessibilityEvent有的界面不调用_Google

 但是在android的include下,却没有这个模块,查阅官方资料,发现不能在android平台使用socketcan插件,但是qt帮助手册里却说socketcan需要linux内核支持什么的,我寻思安卓不就是linux吗,为什么不能用,就开始尝试编译官方源码。

android onAccessibilityEvent有的界面不调用_Google_02

 下载解压后,就长这个样子,打开顶层pro,添加一个安卓构建,我这边的qt版本是5.15.2

android onAccessibilityEvent有的界面不调用_github_03

 

android onAccessibilityEvent有的界面不调用_android_04

 直接编译会有很多错误,找到错误一个个解决就ok了,基本上都是找不到头文件,在源码中找相应的头文件即可,最后,只剩下最后一个错误,make install,不用管,这时打开dubug目录,就已经看到编译好的文件了,一个个复制到qt安装目录即可,

注意:mkspecs目录下有两个子目录,module 和module-inst,qt目录下没有module-inst,所以我就复制了前者,但是后来发现前者引用的文件是我debug里面的文件,后者才是正解,怪不得我修改了debug的目录名,编译就不通过了。打开pri文件一看便知。

其实我一开始就采取编译源码的解决方案,也不知道哪里操作不对,serialbus模块还是无法使用,最后Google什么的折腾一大圈,就在要放弃的时候,想着再试最后一次,不行只好放弃了,然后就成功了。。。

android onAccessibilityEvent有的界面不调用_android_05

android onAccessibilityEvent有的界面不调用_帮助手册_06

所有复制完之后,就可以开始使用了,使用起来就很简单了,参考qt帮助手册,pro文件添加serialbus

android onAccessibilityEvent有的界面不调用_github_07

 到这里终于能够检测到插件了,并且连接没有报错,感觉事情就已经成了!

但是,下面的编译信息却报错,无法加载库,socketcan!

好在我之前搜谷歌的时候,发现有个老外说,显示无法加载,但实际可以读写,我就有了个心理准备,不然,看到这样的报错,心得凉一半。。

关于qt的文章,国内还是太少太少了,特别是这种冷门的问题,我在百度是一个都搜不到,唉,还是得看Google。

android onAccessibilityEvent有的界面不调用_qt_08

 到这里就已经大功告成了,注册到qml,就可以开始写界面了。这里点击按钮发送56789

android onAccessibilityEvent有的界面不调用_Google_09

 接收也正常

android onAccessibilityEvent有的界面不调用_android_10

android onAccessibilityEvent有的界面不调用_android_11

 

难的在于对qt模块的理解和源码编译,我也是在不断的尝试中,对qt的理解越来越深,再次感叹qt的强大!