单片机模拟串口通讯,将串口接收到的数据原样发送,收到的数据长度不同。怎样判断数据接收完毕?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机模拟串口通讯,将串口接收到的数据原样发送,收到的数据长度不同。怎样判断数据接收完毕?相关的知识,希望对你有一定的参考价值。

单片机串口接收数据,接收完以后发送数据,但是数据的长度不同,3个5个7个字节不等,怎样确定在接收完了以后再发送啊?请高手指教

参考技术A 字符串收发的话,一般你可以增加一个字节的结束位作为你整个字符串的结束。单片机可以通过比较是否为结束位来判断字符串接受是否完毕。本回答被提问者采纳

51单片机串口通讯,数据在发送后,上位机没有接收到数据。

#include<Bjx_Type.h>
#include<REG8F301A.h>
#define MODE1 0X40 //模式1
#define MODE2 0x80 //模式2
sbit LED1=P1^7;
u8 Wdata,Rdata;
void SetIoInitPro(void);
void Uart_Init(void); //初始化UART
u8 Uart_WriteByte(u8 dat); //写字节
u8 Uart_ReadByte(void); //读字节
void main()

Uart_Init();
while(1);

/****************初始化UART**********************************************/
void Uart_Init(void)

SBDEN=1; //使能波特率发生器
SOVRH=0X05; //设置波特率
SOVRL=0XB2;
SCON = MODE1; //模式一
REN=1; //URATEN使能
ES=1; //打开串口中断
EA=1; //打开总中断

/*****************写 byte**************************************/
u8 Uart_WriteByte(u8 dat)
//写字符
SBUF=dat; //将数据发送到SBUF中
while(!TI); //等待数据发送完毕
TI=0; //软件清零
return 1;

/*********************读 byte**********************************/
u8 Uart_ReadByte(void)

u8 temp;
while(!RI); //是否接收完毕

temp=SBUF; //将SBUF中的数据接受读取
RI=0; //软件清零

return temp; //函数返回读取的数据


void Uart_Int(void) interrupt 4

if(TI)

TI=0;
SBUF=Wdata;

else if(RI)

RI=0;
Rdata=SBUF;


而且 串口中断也没进去 ,弄了很久不知道是什么问题!

51单片机,数据在发送后,上位机没有接收到数据。
而且,串口中断也没进去,弄了很久不知道是什么问题!

----

既然没有收到,也没有进入串口中断,
那么,你怎么就知道,数据发送出去了?

既然,你确信是发出去了,应该就是上位机的问题,
那么,你换一个上位机,再试试看。
参考技术A 需要给你做一份吗

以上是关于单片机模拟串口通讯,将串口接收到的数据原样发送,收到的数据长度不同。怎样判断数据接收完毕?的主要内容,如果未能解决你的问题,请参考以下文章

51单片机串口通讯

STM32串口通讯程序

51单片机串口通讯,数据在发送后,上位机没有接收到数据。

13.串口通讯的高级方式

VC串口通信,从串口中读取串口摄像头图片,接收到的数据转换成JPG图片

STM32单片机通过USART1接收到数据后,怎么把接收到的数据通过单片机的CAN口发送出去啊?