VC 串口数据接收

发布网友 发布时间: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

通信协议是关键吧

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com