//TODO? Add extra initialization here
int ret?port=1?
ret=sio open?port?? //打开串口1
sio DTR?port?0?? //置DTR为低电平
sio ioctl?port?B19200?P NONE|BIT 8| STOP 1?? //设置波特率为19200,8位数据位,
1位停止位,无校验位。
3.3 数据通信
下面举例说明PC机如何通过串口向单片机发送并接收数据。
void CTXRXDlg??SendRecv??//收发数据子函数
{
while?1?
{
int ret1?
sio flush?port?2;//清空串口输入输出缓冲区
sio- write(port,1,5);
向串口缓冲区发送5个字符
sio- SetReadTimeouts(port,40,1);
//在40ms内每隔1ms读一次串口
ret1=sio-read(port,RecvBuf,1);
if (ret1>0)
{
sio- close(port);
break;
}
//若收到数据,关闭串口,跳出循环
else;
//若未收到数据,对串口再一次发数据并再次查询接收。
}
}
4 结束语
本文给出了分布式控制系统中上位PC机与下位单片机之间进行异步串行通信的解决方案。此方案在实际运行过程中,运行稳定,通信性能良好,从而较好地解决了上位机与下位机之间的通信问题。