void CAN_to_USB_SendData(CanRxMsg* RxMessage)
{
uint8_t CANRxMessage[16];
uint8_t count;
if (RxMessage->IDE == CAN_ID_STD)
{
CANRxMessage[0] = (uint8_t)0xFF & RxMessage->StdId;
printf("IDE的第1位CANRxMessage[0]=%d \r\n",CANRxMessage[0]);
CANRxMessage[1] = (uint8_t)0xFF & (RxMessage->StdId >> 8);
printf("IDE的第2位CANRxMessage[1]=%d \r\n",CANRxMessage[1]);
CANRxMessage[2] = (uint8_t)0xFF & (RxMessage->StdId >> 16);
printf("IDE的第3位CANRxMessage[2]=%d \r\n",CANRxMessage[2]);
CANRxMessage[3] = (uint8_t)0xFF & (RxMessage->StdId >> 24);
printf("IDE的第4位CANRxMessage[3]=%d \r\n",CANRxMessage[3]);
}
else
{
CANRxMessage[0] = (uint8_t)0xFF & RxMessage->ExtId;
printf("EXT的第1位CANRxMessage[0]=%d \r\n",CANRxMessage[0]);
CANRxMessage[1] = (uint8_t)0xFF & (RxMessage->ExtId >> 8);
printf("EXT的第1位CANRxMessage[1]=%d \r\n",CANRxMessage[1]);
CANRxMessage[2] = (uint8_t)0xFF & (RxMessage->ExtId >> 16);
printf("EXT的第2位CANRxMessage[2]=%d \r\n",CANRxMessage[2]);
CANRxMessage[3] = (uint8_t)0xFF & (RxMessage->ExtId >> 24);
printf("EXT的第3位CANRxMessage[3]=%d \r\n",CANRxMessage[3]);
}
/* Get the FMI */
CANRxMessage[4]=RxMessage->FMI;
printf("FMI=%d \r\n",CANRxMessage[4]);
CANRxMessage[5]=RxMessage->RTR;
printf("RTR=%d \r\n",CANRxMessage[5]);
CANRxMessage[6]=RxMessage->IDE;
printf("IDE=%d \r\n",CANRxMessage[6]);
/* Get the DLC */
CANRxMessage[7]=RxMessage->DLC;
printf("DLC=%d \r\n",CANRxMessage[7]);
for(count=0;count<(RxMessage->DLC);count++)
{
CANRxMessage[count+8]=RxMessage->Data[count];
printf("DATA:[%d]=%d \r\n",count,CANRxMessage[count+8]);
}
if (bDeviceState == CONFIGURED)
//RxMessage 是一个结构体,buffer参数是一个8位的数组指针,要进行数据的转换
{
USB_SIL_Write(EP1_IN,CANRxMessage,RxMessage->DLC+8);
}
#ifndef STM32F10X_CL
/* Enable endpoint for transmission */
SetEPTxValid(ENDP1);
#endif /* STM32F10X_CL */
}
|