当前位置: 代码迷 >> QT开发 >> 关于在linux停使用Qt编写CAN通讯程序
  详细解决方案

关于在linux停使用Qt编写CAN通讯程序

热度:72   发布时间:2016-04-25 04:15:22.0
关于在linux下使用Qt编写CAN通讯程序
之前有用过在网上找的第三方串口类,进行串口通讯过,知道里面有一些串口的基本功能,以及Windows串口类和Linux串口类。
目前我有几个疑惑:
1,之前Windows串口类和Linux串口类都是对操作系统底层串口文件进行操作,串口读写,设置波特率,数据位等等。那么我现在想写一个CAN通讯的类,都需要哪些信息呢?
2,linux有没有底层CAN的通讯文件(类似串口那样的)?想利用PC与单片机通讯,肯定需要CAN卡,那是不是PC这边连接的CAN卡的USB接口可以看成是串口,QT里的程序直接按串口那样写就可以?
3,如果改成单片机和ARM核心板通讯,把在PC上QT的CAN通讯程序移植到ARM上还能不能用,当然在ARM上就不需要CAN卡了,直接接CAN总线。
我在网上找了一些关于CAN的程序,但是他们写的是CAN的有关SPI的驱动程序,这个驱动程序是针对SPI总线的吗?是存在ARM芯片里了吗?
我现在就很迷惑这些接口和驱动的问题,希望懂的人能给小弟指点迷津,在此先谢谢大家了!
------解决方案--------------------
既然要CAN通讯,就别使用第三方串口类了。还是直接使linux下的系统调用对串口操作的好,可能出现的问题会少一些。
别的问题和qt的关系就不大了……CAN方面……希望有经验的人能给你提供些经验分享吧
------解决方案--------------------
哈哈,这个我做过。。
1:你先选择CAN控制器芯片,一般的PC和ARM都没有CAM控制器,需要你自己选一般是MCP2515和SJA1000,主要区别是MCP2515是SPI接口,SJA1000是I/O接口。所以MCP2515占用资源少,5-6个管脚就可以控制,SJA1000占用的管脚就多了,不知道你的系统资源宽松不。
2:linux源代码中没有CAN的通讯文件,你想做嵌入式的程序,可以买个USB转CAN的模块,然后WINDOWS上送你个软件,(不知道会不会告诉你接口,没告诉你接口你的QT也使用不了)。这样通过这个CAN模块你的PC机可以发送CAN帧,不过是通过他给的软件不是你自己的QT程序。
3:硬件上你ARM上没有CAN控制器没有CAN收发器怎么发送数据呢?软件上你ARM没有驱动怎么操作硬件?那些程序就是操作SPI接口的CAN控制器,说白了就是控制CAN控制器发送CAN帧的。
GOOD LUCK!这个我也看了好久的资料,你先看硬件再看软件,不然软件你看不懂!
------解决方案--------------------
我还真没遇到过ARM自带CAN这样的呢?不过驱动里面定义了文件,就是你open的对象,一般定义成字符型设备,然后像操作串口一样,open(),ioctl();read()write()了。不可能没文件的,问下写驱动的人。