一、 CAN数据包传输模式 1、 与上位机通讯方式 设备的 CAN端口支持<流传输模式>和两种传输模式: <流传输模式>兼容 RS232/RS485工作方式。 传输模式支持包括 CAN ID在内的所有 CAN2.0A/B特性,数据结构及功能类似于传统的 CAN接口卡。 设备默认设置为<流传输模式>,用户可以通过网络或 RS232管理口,将 CAN端口设置为模式。管理口参数为:9600bps,8数据位,1停止位,无校验,无流控。可以使用超级终端直接打开并登录到设备进行管理。 1) Socket TCP/IP通讯方式 上位机软件通过 Socket规范与设备直接建立 TCP/IP连接,在成功建立 TCP/IP连接后,上位机与设备就可以进行双向数据通讯。 CAN-bus设备支持 TCP/IP Server、Client两种工作模式,默认工作在 Server模式,设备监听 TCP/IP 6020端口,等待连接。 2) 虚拟串口或硬件串口通讯方式 TNode-N、ICAN设备支持虚拟串口技术,可以将 CAN端口对应 TCP/IP连接映射为虚拟 COM口。而 TNode-232、485这些 CAN转 UART设备可以直接使用设备的硬件串口。 上位机软件只需要按照常规的串口编程方式,使用特定的数据结构就可以与设备进行通讯,无需编写复杂的网络代码。 2、 通讯数据结构 模式所使用的NETWORK_CANFRAME通讯报文结构: typedef struct __attribute__ ((packed)) _NETWORK_CANFRAME { u_char candevindex; // [1个字节长度],CAN端口,0-3对应 A-D // 四个 CAN端口,接收有效,发送时忽略。 u_long id; // [4个字节长度],CAN包 ID u_char len; // [1个字节长度],数据长度,1-8字节 u_char byte[8]; // [8个字节长度],CAN包数据 u_char ext; // [1个字节长度],1-为扩展消息格式, // 0-标准消息格式 u_char rtr; // [1个字节长度],远程传输位 u_long param1; // [4个字节长度],备用参数 } NETWORK_CANFRAME; 上述为 GCC定义,单字节对齐,sizeof(NETWORK_CANFRAME)为 20个字节。 TNetwork_CANFrame=packed record candevindex:byte; // CAN端口,0-3对应 A-D四 CAN端口 // 上位机接收有效,发送忽略。 id:LongWord; // CAN包 ID len:byte; // 数据长度,1-8字节 candata:array[1..8] of Byte; // CAN包数据 ext:byte; // 1-为扩展消息格式,0-标准消息格式 rtr:byte; // 远程传输位 param1:LongWord; // 备用...