< div class = "字段field-name-taxonomy-forums field-type-taxonomy-term-reference field-label-above”> < div class = "字段标签" >论坛:,< / div > < div class = "字段条目" > < div class =”field-item甚至“rel = " sioc: has_container " > < a href = " /论坛/ dialog-smartbond-bluetooth-low-energy - % E2 % 80% 93 -软件”“=“sioc:容器sioc:论坛”属性= " rdfs: label skos: prefLabel”数据类型= " " >对话框Smartbond蓝牙低能量-软件< / > < / div > < / div > < / div > < div class =”字段field-name-body field-type-text-with-summary field-label-hidden”> < div class = "字段条目" > < div class =”field-item甚至“财产=“内容:编码”> < p >你好,< / p > < p >我连接传感器使用UART1接受可变长度的命令(22到28字节)。为了响应这些命令,传感器确认并附加可变长度(27到40字节)的有效载荷响应。我使用uart_data_ready_getf 读取直到数据可用。读取长度总是16字节。当我在COM端口上单独检查传感器响应时,情况并非如此。传感器发送27字节(已验证),但每次连接到UART1时,固定读取16字节。我已经附上了调试信息PDF。我在这个问题上被困了好长时间。 How to tackle this issue to implement flexible receive on UART1? Note: UART2 is debug UART
int count=0; uint8_t rx_buff[50]; printf_string(UART2, "\n\r<="); while(uart_data_ready_getf(UART1) == 1) { uint8_t buffer[1]; // temporary rx element variable uart_receive(UART1, (uint8_t *)buffer, 1, UART_OP_BLOCKING); rx_buff[count] = buffer[0]; count++; } for(int i=0; i<count; i++) printf_byte(UART2,rx_buff[i]); printf_string(UART2, "\n\rRx length: "); printf_byte_dec(UART2, count); printf_string(UART2, "\n\r");