数据结构论坛

首页 » 分类 » 分类 » CH375发送和接收数据函数使用说明第一
TUhjnbcbe - 2024/10/26 15:54:00
著名治疗白癜风专家 http://www.pfzhiliao.com/

CH发送和接收数据函数使用说明之打开设备和发送

1打开设备

HANDLEWINAPICHOpenDevice(//打开CH设备,返回句柄,出错则无效

ULONGiIndex);//指定CH设备序号,0对应第一个设备,-1则自动搜索一个可以被打开的设备并返回序号

如调用

CHOpenDevice(0);//默认的是打开第一个设备,如果你只有一个设备的话依次类推即可

一般使用之前先保证设备是打开的,再进行数据的接收和发送

2发送数据

BOOLWINAPICHWriteData(//写出数据块

ULONGiIndex,//指定CH设备序号

PVOIDiBuffer,//指向一个缓冲区,放置准备写出的数据

PULONGioLength);//指向长度单元,输入时为准备写出的长度,返回后为实际写出的长度

发送调用例程如下:

定义相关的数据结构体:

typedefstructtagCANMsg

{

UINT32sendID;//发送/接收ID

UINT8IDE;//是否为扩展ID格式(=0为标准11位ID,=1为扩展29位ID)

UINT8RTR;//是否为远程帧(=0发送数据帧,=1远程发送请求)

UINT8data[8];//帧数据

UINT8dataLen;//帧数据长度

UINT8priority;//发送优先极(数据越小优先级越高,可以选择0,1,2)

}CANMsg;//这个是can板上固定的数据结构,如果使用的不是,就不用这个结构体

typedefunion{

UCHARdata[16];

CANMsgmyStruct;

}testUionCan;

CHWriteData(0,tSendData.data,iSendLenth)

即传入要发送的设备号,数据和数据长度即可

数据结构根据自己的需要进行相关的定义即可

代码举例:

对于发送数据的操作,应先调用CHSetBufDownload()函数后,在去调用CHWriteData方法进行写数据。

CANMsgmsg;

msg.sendID=1;

msg.data[0]=0x2B;

msg.data[1]=0x47;

msg.data[2]=0x18;

msg.data[3]=0x48;

msg.data[4]=0x05;

msg.data[5]=0x00;

msg.data[6]=0x00;

msg.data[7]=0x00;

msg.dataLen=8;

msg.RTR=0;

msg.priority=1;

msg.IDE=0;

if(CHSetBufDownload(0,1)){

if(CAN_STATE)

bRet=CHWriteData(0,(void*)msg,iSendLength);

if(bRet){

//发送完,直接读取

CANMsguDataTemp;

uDataTemp.sendID=1;

uDataTemp.IDE=0;

uDataTemp.priority=1;

uDataTemp.RTR=0;

uDataTemp.dataLen=8;

ULONGRxLength=16;

if(CHSetBufUpload(0,1)){

bReadSuccess=CHReadData(0,(void*)uDataTemp,RxLength);

if(bReadSuccess){

CANMsg*p=(CANMsg*)uDataTemp;

}}}}

1
查看完整版本: CH375发送和接收数据函数使用说明第一