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脚短接,也会有此现象出现。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)