文章

Auto answer transmit CAN messages with NTCAN

refer to NTCAN Application Developers Manual document charpter

  • 3.12 Object Mode (Transmit), Autoanswer Mode
  • 4.2.9 canIoctl(), Tx-Object Mode related I/O controls

example code

autoanswer.c:程序展示如何配置Auto Answer Mode。执行过程中使用canRead()方式循环读取CAN消息,并且根据CAN消息的ID的不同,做出如下响应。

  1. 如果收到CAN消息ID为0,则退出程序。
  2. 如果收到CAN消息ID为1,则开启自动应答功能。
  3. 如果收到CAN消息ID为2,则关闭自动应答功能。
  4. 如果收到CAN消息ID为3,并且为RTR消息,则自动应答一条CAN消息,ID同样为3,Data为1 byte记录了程序接收到CAN消息的数目。

执行过程

可以使用CANreal工具发送ID为3的RTR消息,参见下面图一。

Send CAN msg with 11-bit ID to: 
ID=0:       Exit program
ID=1:       Switch ON auto answer
ID=2:       Switch OFF auto answer
ID=3 + RTR: Get auto answered CAN msg recording
            the total number of received CAN msgs. 

canRead() returned timeout
canRead() returned timeout
Id of received message :4!
Id of received message :5!
Id of received message :6!
Id of received message :7!
Id of received message :8!
Id of received message :9!
Id of received message :a!
canRead() returned timeout
canRead() returned timeout
Id of received message :2!
Auto answer switched OFF!
Id of received message :1!
Auto answer switched ON!
Id of received message :0!
Exit program!

截图

  1. 图一