Java 使用串行端口打开PDO
我正在努力理解CANopen协议 目前,我没有任何CAN硬件或CANopen堆栈可供试验 我想知道如何编写一个Java程序来简单地解释在RS-232端口接收到的CANopen消息Java 使用串行端口打开PDO,java,serial-port,can-bus,canopen,Java,Serial Port,Can Bus,Canopen,我正在努力理解CANopen协议 目前,我没有任何CAN硬件或CANopen堆栈可供试验 我想知道如何编写一个Java程序来简单地解释在RS-232端口接收到的CANopen消息 是否有作为串行端口安装的CAN接口 我能写一个程序来处理CANopen消息吗?我只想能够接收和解释信息。它是否简单到为输入流创建一个缓冲区,然后根据SOF和EOF将传输分解为单独的消息?由于SOF/EOF只有1位长,我如何知道它是什么 为什么对CAN节点的PDO数量有限制 如何处理PDO以识别发送它的节点以及数据类型
- 是否有作为串行端口安装的CAN接口
- 我能写一个程序来处理CANopen消息吗?我只想能够接收和解释信息。它是否简单到为输入流创建一个缓冲区,然后根据SOF和EOF将传输分解为单独的消息?由于SOF/EOF只有1位长,我如何知道它是什么
- 为什么对CAN节点的PDO数量有限制
- 如何处理PDO以识别发送它的节点以及数据类型和值?PDO是标准的CAN机架吗
((CAN_ID&0x780)>>7)
,给出功能代码(TxPDO1=3),其余位为(CAN_ID&0x7f)
,给出模块ID(在本例中为0x10)。因此,如果您在CAN总线上读取CAN ID为0x190的消息,您将知道这是来自模块ID为0x10的设备的PDO
(表达这一点的一种更简单的方式可能是,TxPDO1的CAN ID设置为0x180+
,TxPDO2的CAN ID设置为0x280+
,等等。)
如何解释PDO中的数据取决于您的设备
我建议你找一个好的CANopen教程。不幸的是,它们中的大多数使一切听起来比实际情况复杂得多。因此,四处看看,直到找到一个看起来可以理解的接口。有许多CAN接口可以通过串行端口运行—VSCOM、Vector和许多其他接口。还有一些免费的程序可以让你发送和接收原始的罐头框架,比如CANhacker等等,谷歌搜索其中的一些 我还没有找到一个免费的程序来解释CANopen——大多数是付费程序。Linux是个例外——它用来拉入数据包,可以解析所有CANopen帧 我以1Mbit/s的速度运行CAN总线,并使用VSCOM接口在串行端口上对其进行监控 是一个很好的开源堆栈,可以轻松地移植到Linux和裸机上