比如我要发送两个报文,都是8字节,是不是这样做的
TxMessage.StdId=0XE0; //标识符
TxMessage.RTR=CAN_RTR_DATA; //传输消息的帧类型为数据帧
TxMessage.IDE=CAN_ID_STD; //标准帧格式
TxMessage.DLC=8; //帧长度,单位:字节
for(i=0;i<8;i++)
{TxMessage.Data[i]=TX_DATA[i]; } //第一组待传数据
j=CAN_Transmit(CAN1, &TxMessage);
TxMessage.StdId=0XE1; //标识符
TxMessage.RTR=CAN_RTR_DATA; //传输消息的帧类型为数据帧
TxMessage.IDE=CAN_ID_STD; //标准帧格式
TxMessage.DLC=8; //帧长度,单位:字节
for(i=0;i<8;i++)
{TxMessage.Data[i]=TX_DATA[i]; } //第二组待传数据
j=CAN_Transmit(CAN1, &TxMessage);
接收的时候,接收条件这样
if((RxMessage.IDE == CAN_ID_STD)&& (RxMessage.DLC==8))
{
for (i = 0; i < 8; i++)RX_DATA[i]=RxMessage.Data[i];
RX_DATA[8] =RxMessage.StdId;
然后过滤报文的时候再根据接收到的RxMessage.StdId的值来确定是那一组数据吗,如果不行应该怎么做,麻烦帮出个主意,谢谢 |