【发布时间】:2021-02-16 05:39:40
【问题描述】:
我正在尝试使用“CDC_Transmit_FS()”通过 USB 从 ADC 发送值
在接收端,我使用 readline() 接收数据并将“字符串”解码为“int”
代码运行良好,但有时我会收到例如 b'\x00234\n' 而不是 b'1234\n',这会引发解码错误。
你知道为什么会出现'\x'吗?
还有一个问题:有没有更聪明的方法通过 USB 发送 ADC 值而不是将 int 值转换为字符串?
我想让传输更快。 提前致谢!
uint32_t adcbuff[sample];
char endofpacket[5] = {'9', '9', '9', '9', '\n'};
char txbuff[sample*5];
while(1)
{
HAL_ADC_Start_DMA(&hadc2,(uint32_t*)adcbuff, sample);
for(i = 0; i < sample; i++)
{
sprintf (tempbuff, "%u\n", ((adcbuff[i] * 5000) / 0xFFFF)-2000);
strcat( txbuff,tempbuff);
}
strcat( txbuff,endofpacket);
CDC_Transmit_FS( (uint8_t*)txbuff, strlen(txbuff));
strcpy(txtbuff,"");
}
【问题讨论】:
标签: printf usb stm32 strcat cdc