发布网友 发布时间:2022-04-24 13:25
共3个回答
热心网友 时间:2023-10-14 09:05
你通过串口助手要接受字符串或一组数据需要在单片机端开辟一个缓冲区,否则可能丢失数据。
以下程序是较为通用的串口收发例程,开辟一个16字节的缓冲区,两个指针,一个存数指针,一个取数指针,两指针相等,证明没有新的接收数据。
#include<reg51.h>
#define uchar unsigned char
uchar buf[16],getptr,putptr;
void uart_isr() interrupt 4
{
if(RI)
{
RI=0;
buf[putptr]=SBUF;
putptr++;
putptr&=0x0f;
}
}
main()
{
TMOD=0x20;
SCON=0x50;
TH1=TL1=0xfd;
TR1=1;
ES=1;
EA=1;
putptr=0;
getptr=0;
while(1)
{
if(getptr!=putptr) //取数指针和存数指针如果不等
{
SBUF=buf[getptr];
getptr++;
getptr&=0x0f;
while(!TI);
TI=0;
}
}
}
热心网友 时间:2023-10-14 09:05
不知道你说的丢失是什么情况,
大数据的话
建议使用异步方式接收,
不要和显示的实现功能写在同一个线程里,可能会阻塞.
等等.
追答我以前也用VC写过,很久了,应该也不是异步的,你看看这里的,应该 没问题
VC++ 串口调试助手源代码: http://www.newxing.com/Code/VC/xitong/1099.html
热心网友 时间:2023-10-14 09:06
通信协议是关键吧