int SendPacket(uint16_t cmd, uint16_t len, uint8_t* data) { short ret; uint16_t sum; // command & length buf[0] = LSB(cmd); buf[1] = MSB(cmd); buf[2] = LSB(len); buf[3] = MSB(len); ret = USB_SendData(buf, 4, TIMEOUT); if(ret) return ret; // data ret = USB_SendData(data, len, TIMEOUT); if(ret) return ret; // checksum sum = CheckSum(buf, 4) + CheckSum(data, len); buf[0] = LSB(sum); buf[1] = MSB(sum); // send ret = USB_SendData(buf, 2, TIMEOUT); if(ret) return ret; return 0; }
/** * @brief 串口打印输出 * @param None * @retval None */ int main(void) { uint8_t data[64]; uint32_t i=0,ret=0; Set_System();//系统时钟初始化 USART_Configuration();//串口1初始化 printf("\x0c\0");printf("\x0c\0");//超级终端清屏 printf("\033[1;40;32m");//设置超级终端背景为黑色,字符为绿色 printf("\r\n*******************************************************************************"); printf("\r\n************************ Copyright 2009-2012, ViewTool ************************"); printf("\r\n*************************** http://www.viewtool.com ***************************"); printf("\r\n***************************** All Rights Reserved *****************************"); printf("\r\n*******************************************************************************"); printf("\r\n"); USB_Interrupts_Config(); Set_USBClock(); USB_Init(); while(1) { if(USB_Received_Flag){ USB_Received_Flag=0; ret = USB_GetData(data,sizeof(data)); printf("usb get data %d byte data\n\r",ret); for(i=0;i<ret;i++){ printf("0x%02X ",data[i]); } printf("\n\r"); USB_SendData(data,sizeof(data)); } } }
void USBDataGet(uint8_t data[64],uint8_t BrailleDots[40],uint8_t InPacket[2]) { uint32_t i=0,ret=0; if(USB_Received_Flag){ USB_Received_Flag=0; ret = USB_GetData(data,sizeof(data)); // switch(data[0]) { case 0x80: for(i=0;i<CELL_COUNT;i++) {BrailleDots[i]=data[i+1];} break; case 0x81: // InPacket[0]=0x81; // InPacket[1]=GetKeynum; break; default: break; } printf("usb get data %d byte data\n\r",ret); for(i=0;i<ret;i++){ printf("0x%02X ",data[i]); } printf("\n\r"); USB_SendData(data,sizeof(data)); } }
/** * @brief Sends a string based on pattern passed over USB. * A wrapper around USART * @param format a format string * @param ... values to replace patterns in the string * @retval None. */ void USB_SendPat(char *format, ...) { va_list args; char buffer[100]; va_start(args, format); vsprintf(buffer, format, args); USB_SendData((uint8_t *)buffer, strlen(buffer)); }
void IDLE1_Task(void* parameters) { while(1) { vTaskDelay(1000); if(usbDevice.state == CONFIGURED) { USB_SendData(&str1[0], 12); } } }