CANCANCANCAN编程接口说明编程接口说明编程接口说明编.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:4 大小:51KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

CANCANCANCAN编程接口说明编程接口说明编程接口说明编.pdf

CANCANCANCAN编程接口说明编程接口说明编程接口说明编.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

CAN编程接口说明111、1、、、与上位机通讯方式MixNet设备支持CAN数据包传输模式。此模式下MixNet设备使用特定的数据结构与上位机软件进行通讯。MixNet设备使用了一个通用的数据结构来进行数据传输,只需要改动很少的代码,就可以将使用CAN通讯卡的上位机软件直接升级为以使用太网&TCP/IP通通通讯。上位机可以通过222种方式与MixNet设备通讯:1)1)1)SocketTCP/IP通讯方式上位机软件通过Socket规范与MixNet设备建立TCP/IP连接,在成功建立TCP/IP连接后,上位机与MixNet就就就可以进行双向数据通讯。就可以进行双向数据通讯。MixNet设备支持TCP/IPServerServer、、、、ClientClient两种工作模式,默认工作在Server模式,设备监听TCP/IP端口,等待连接。2)2)2)串口通讯方式TNodeTNode----232232232、、、、485485使用此方式,TNodeTNode----NNNN必须要先使用VSPM虚拟串口软件将MixNet的的的CAN端口映射为虚拟COM口。任何设备都可以直接使用传统的串口操作方式,通过串口(RS232RS232、、、、RS485RS485RS485)与)与MixNet设备的CAN断口CAN数据交换。对于使用RS232转转转CAN设备的软件,可以使用虚拟串口与MixNet设备通讯,整个只需简单的修改相关的通讯部分数据结构就可以完成升级。222、2、、、数据结构及代码编写要点1)1)1)MixNet的的的NETWORK_CANFRAME通讯数据结构typedefstruct__attribute__((packed))_NETWORK_CANFRAME{{{u_charcandevindex;//CAN端口,000-0---3333对应AAA-A---DDDD四个CAN端口,//上位机接收有效,发送忽略。u_longid;//CAN包包包IDIDIDu_charlen;//数据长度,111-1---8888字节u_charbyte[8];//CAN包数据u_charext;//11----为扩展消息格式,为扩展消息格式,000-0---标准消息格式标准消息格式u_charrtr;//远程传输位u_longparam1;//备用参数}NETWORK_CANFRAME;上述结构为GCC定义,sizeof(sizeof(NETWORK_CANFRAMENETWORK_CANFRAMENETWORK_CANFRAME))))为为为为202020个字节。TNetwork_CANFrame=packedrecordcandcandevindex:byte;evindex:byte;//CAN端口,000-0---3333对应AAA-A---DDDD四四四CAN端口//上位机接收有效,发送忽略。id:LongWord;//CAN包包包IDIDIDlen:byte;//数据长度,111-1---8888字节candata:array[1..8]ofByte;//CAN包数据ext:byte;//11----为扩展消息格式,为扩展消息格式,000-0---标准消息格式标准消息格式rtr:byte;//远程传输位param1:Lparam1:LongWord;ongWord;//备用参数end;上述结构为Delphi定义,Delphi中中中sizeof为为为202020个字节。MixNet以上述数据结构为数据帧与上位机进行数据通讯。CAN总线参数(如速率等)可以通过MixNet设备本身的参数配置功能,透明的进行设置,无须编写任何代码。2)2)2)代码实例(1)接收代码://////接收缓冲//接收缓冲NETWORK_CANFRAMErecbuf;//Socket接收,串口的接收操作与此类似,只不过调用的API不同len=len=recv(sock,recv(sock,&&&recbuf&recbufrecbuf,,sizeof(recbuf)sizeof(recbuf),,0);if(if(len!=sizeof(recbuf))len!=sizeof(recbuf)){//////接收错误//接收错误}}};};;;//recbuf中为接收到的CAN数据。(2)发送代码://////发送缓冲//发送缓冲NETWORK_CANFRAMEsendbuf;//CAN端口,上位机发送时可以忽略此参数,要设置为000。0