用PComm开发PC机与单片机的通信程序
(port?func);
用于清空缓冲区。当func为0时清空输入缓冲区,为1时清空输出缓冲区,为2时清空输入输出缓冲区。
●sio-putch(port?term);
用于向串口缓冲区发送一个字符,返回值为0时表示发送正确,否则表示发送错误。
●sio-write(port?buf?len);
用于从串口缓冲区发送一串字符,buf代表字符串数组,len代表数组长度。
3.2实现过程
在用Pcomm处理PC机的串口通信时,其实现过程如下:
(1)启动VC++6.0,新建一个基于对话框的应用程序TxRx。同时增加静态文本、编辑框和按钮控件,并为它们添加相应的变量。其属性见表1。
表1TxRx应用程序的属性
控件ID变量名类型按钮IDC_TRSMITT发送按钮EditIDC_TXDATAM_TxDataCstringEditIDC_RXDATAM_RxDataCstring
(2)将Pcomm.h和Pcomm.lib加入到工程中,并在TxRxDlg.cpp文件中加入#include“Pcomm.h”头文件,此后便可调用其提供的通信命令集。
(3)在TxRxDlg.cpp文件中添加有关程序代码,也就是在OnInitiDialog??函数中的TODO语句后加入以下代码:
//TODO?Addextrainitializationhere
intret?port=1?
ret=sioopen?port??//打开串口1
sioDTR?port?0??//置DTR为低电平
sioioctl?port?B19200?PNONE|BIT8|STOP1??//设置波特率为19200,8位数据位,
1位停止位,无校验位。
3.3数据通信
下面举例说明PC机如何通过串口向单片机发送并接收数据。
voidCTXRXDlg??SendRecv??//收发数据子函数
{
while?1?
{
intret1?
sioflush?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;
//若未收到数据,对串口再一次发数据并再次查询接收。
}
}
《用PComm开发PC机与单片机的通信程序(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/170024.html
用于清空缓冲区。当func为0时清空输入缓冲区,为1时清空输出缓冲区,为2时清空输入输出缓冲区。
●sio-putch(port?term);
用于向串口缓冲区发送一个字符,返回值为0时表示发送正确,否则表示发送错误。
●sio-write(port?buf?len);
用于从串口缓冲区发送一串字符,buf代表字符串数组,len代表数组长度。
3.2实现过程
在用Pcomm处理PC机的串口通信时,其实现过程如下:
(1)启动VC++6.0,新建一个基于对话框的应用程序TxRx。同时增加静态文本、编辑框和按钮控件,并为它们添加相应的变量。其属性见表1。
表1TxRx应用程序的属性
控件ID变量名类型按钮IDC_TRSMITT发送按钮EditIDC_TXDATAM_TxDataCstringEditIDC_RXDATAM_RxDataCstring
(2)将Pcomm.h和Pcomm.lib加入到工程中,并在TxRxDlg.cpp文件中加入#include“Pcomm.h”头文件,此后便可调用其提供的通信命令集。
(3)在TxRxDlg.cpp文件中添加有关程序代码,也就是在OnInitiDialog??函数中的TODO语句后加入以下代码:
//TODO?Addextrainitializationhere
intret?port=1?
ret=sioopen?port??//打开串口1
sioDTR?port?0??//置DTR为低电平
sioioctl?port?B19200?PNONE|BIT8|STOP1??//设置波特率为19200,8位数据位,
1位停止位,无校验位。
3.3数据通信
下面举例说明PC机如何通过串口向单片机发送并接收数据。
voidCTXRXDlg??SendRecv??//收发数据子函数
{
while?1?
{
intret1?
sioflush?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;
//若未收到数据,对串口再一次发数据并再次查询接收。
}
}
《用PComm开发PC机与单片机的通信程序(第3页)》