新手C#串口调试问题,能够发送,但是不能接收到数据。请大侠们指导。

新手C#串口调试问题,能够发送,但是不能接收到数据。请大侠们指导。,第1张

获取串口中的数据,可以这样试试
int bytes = serialPort1BytesToRead; //读取数据长度
byte[] buffer = new byte[bytes];
serialPort1Read(buffer, 0, bytes); //读取串口数据
serialPort1ReadLine()是输入缓冲区中直到首次出现NewLine值,出现异常参见csdn

没有看见你的接收函数的嘛,参考我的接收和发送函数
//
//Function:通过串口发送1个字节的数据
//输入:dat为发送的数据
//输出: 无
//日期:2011/12/12
//
void uart_sendByte(unsigned char dat)
{
SBUF=dat;
while(!TI); //waite for data to transmit completely
SCON &= 0xFD;
}
//
//Function:接收一个字节的数据
//输入:无
//返回:rec 函数返回读取到的数据
//日期:2011/12/12
//
unsigned char uart_recByte(void)
{
unsigned char rec=0;

while(!RI); //waite to recieve data in SBUF0
rec=SBUF;
SCON &= 0xFE;
return rec;
}

首先,你的程序没有问题,不能接收数据,从以下几个原因找:

1、这是在实验板上做测试吗,那看一下实验板上单片机的晶振频率是不是110592MHz,必须是这个频率,否则就无法接收数据。

2、实验板的单片机要接收数据,你是怎么向单片机发数据的,是用电脑发的吗,在电脑是用串口助手发的吗。你这程序是必须先由对方发送数据,单片机才能接收,接收后才返回数据的。

3、你的程序,用仿真图测试的,是对的,见下图,可以接收并返回数据的。

如果与
下位
连接的话,依据
通信协议
,发送数据,下位机会返回应答数据。或者下位机本身就处在循环发送数据状态。另一可能,即使未与下位机联通,串口的2与3脚短接,也会有此现象出现。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13164395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-14
下一篇 2023-06-14

发表评论

登录后才能评论

评论列表(0条)

保存