51单片机st89c52读取字符串数据和发送字符串数据,但是字符串的长度未知,在通过串口吧接受的数据发送出来
字符串以0结尾,或者你可以在后面再加上换行符之类的
做个队列,接收的时候扔进队列,处理的时候从队列取出,再发送出去。如果不需要处理,直接短路TX RX即可。
任何两端通信,都是要有个通信协议的,就是两端约定什么数据怎么表示意思
比如发送方先发送2个字节长度N,再发送N字节实际字符串内容
接收方先接收2个字节,得到长度N,再接收N个字节
这样接收方每次接收多少长度就确定的,实现起来更简单
如果只是文本显示
设一个足够大的缓冲区,中断接收,都丢进去
检测到接收空闲一定时间,比如50毫秒,则把缓冲区的数据发送出去。
不知道你想干啥,如果只是单纯的转发,UART是双工的,你收一个发一个就好
可以参考modbus协议,开启接收串口中断做数据接收,同时做超时检测,根据波特率设置超时时间,超过3.5个字符时间就认为一帧数据接收完毕。
字符串长度未知,这个不影响吧,直接读取即可,只要是字符串类型的应该就行
就像qllaoda说的一样做个队列,接收的时候扔进队列,处理的时候从队列取出,再发送出去。如果不需要处理,直接短路TX RX
串口传递数据,参考这个 https://www.jianshu.com/p/5b2a3acf4351
百度一下就知道了,还省事
参考我的博客,有关串口通讯的文章,里面有接收不定长数据的思路