如果是STM32的话,给你一个关键词:空闲中断
简单来说,当串口收到过数据之后 ,经过一个短暂的时间没有收到新的内容,就会触发空闲中断(当然,你要配置开启这个中断)
如果是51单片机,用个最笨的方法:
开串口接收中断和一个定时器中断(假设定为20ms)
每次触发接收中断,把收到的数据放入数组,给定时器计数器重新置位
一旦定时器中断触发,就说明20mS内没有新数据产生,即可认为一批数据收全了。
uart是一个字符一个字符接收的,一般会定义(约定)一个缓冲极限,具体怎么定义是通信双方预定义的。
在这之上会有相应的字符串结束标志等
这样就可以发送、接收不定长的啦。
还是靠通讯协议吧,这个复杂点,却是很靠谱。
像机智云,涂鸦云,都是靠协议完成的。
可以使用串口空闲中断啊
也可以每收一定的数据进行判断