串口通信笔记
来源:互联网 发布:本机mac地址查询 编辑:程序博客网 时间:2024/05/29 15:18
串口通信主要用到下面几个函数:
CreateFile 打开通信端口
CloseHandle 关闭通信端口
GetCommState 取得端口的参数
SetCommState 设置端口参数
WriteFile 端口发送数据
ReadFile 端口读取数据
ClearCommError 清除端口错误,并取得信息
PurgeComm 清除数据缓冲区
SetCommMask 设置触发事件
WaitCommEvent 等待事件触发
EscapeCommFunction 控制端口的硬件状态
GetCommModemState 取得端口硬件线路状态
(1)串口同步通信
Handle hComm=CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0); //打开COM1端口
if(hComm==INVALID_HANDLE_VALUE)
//打开端口失败
else
{
DCB dcb;
GetCommState(hComm,&dcb);//取得端口状态
dcb.BaudRate=CBR_9600; //波特率设为9600
dcb.ByteSize=8;//字节为8位
dcb.Parity=NOPARITY;//无校验
dcb.StopBits=ONESTOPBIT;//1位停止位
if(!SetCommState(hComm,&dcb))
{
//端口状态设置失败
CloseHandle(hComm);
}
else
//端口设置成功
}
读数据
char inbuff[1024];
DWORD nBytesRead,dwEvent,dwError;
COMSTAT cs;
//取得状态
ClearCommError(hComm,&dwError,&cs);
if(cs.cbInQue>sizeof(inbuff))//数据是否大于缓冲区
{
PurgeComm(hComm,PURGE_RXCLEAR);
return;
}
ReadFile(hComm,inbuff,cs.cbInQue,&nBytesRead,NULL);
....
发送数据
...
WriteFile(hComm,SendData,sizeof(SendData),&nBytesSend,NULL);
...
(2)串口异步通信
使用同步通信时,读数据时若端口没有数据,程序将一直停在ReadFile处,程序当掉.解决的办法是使用异步通信.
Handle hComm=CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,//使用异步通信方式
0); //打开COM1端口
if(hComm==INVALID_HANDLE_VALUE)
//打开端口失败
else
{
DCB dcb;
GetCommState(hComm,&dcb);//取得端口状态
dcb.BaudRate=CBR_9600; //波特率设为9600
dcb.ByteSize=8;//字节为8位
dcb.Parity=NOPARITY;//无校验
dcb.StopBits=ONESTOPBIT;//1位停止位
if(!SetCommState(hComm,&dcb))
{
//端口状态设置失败
CloseHandle(hComm);
}
else
//端口设置成功
long EvWait;
EvWait=EV_ERR + EV_BREAK + EV_RXCHAR;
if(!SetCommMask(hComm,EvWait))
//设置失败
}
收数据
TEvent *WEvent;
OVERLAPPED OverLap;
TWaitResult EE;
unsigned long EvWait;
WEvent=new TEvent(NULL,true,false,"");
OverLap.hEvent=WEvent->Handle;
if(WaitCommEvent(hComm,&EvWait,&OverLap))
{
EE!=wrSignaled)return;//未触发
WEvent->ResetEvent();
if(EvWait & EV_RXCHAR)
{
ReadFile(..);
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xgbing/archive/2007/01/29/1497128.aspx
- 串口通信笔记
- 串口通信笔记
- 串口通信笔记
- 串口通信调试笔记
- C# 串口通信 学习笔记
- java串口通信开发笔记
- STM32:USART串口通信笔记
- qt串口通信学习笔记
- MFC学习笔记-串口通信
- C#中串口通信笔记
- Linux下的串口通信学习笔记
- Linux下的串口通信学习笔记
- Linux下的串口通信学习笔记
- stm32学习笔记——串口通信
- VS2015串口通信编程(MFC)笔记
- STM32F103学习笔记——串口通信
- 学习笔记之-51单片机串口通信
- Qt学习笔记2—串口通信
- Vc++6.0如何同时打开两个文件
- 通用展BOM程序
- 用c#实现的语法高亮控件
- WINCE快捷方式详解
- Hibernate学习笔记:session操作对象
- 串口通信笔记
- 优秀的资源
- 数据库表操作总结
- 限制只能输入数字的方法
- 读好书和做好书
- 如何删除runauto..病毒
- 转一篇比较详细介绍FatFs文件系统移植的文章 FatFs文件系统的移植
- csdn一员
- S3C2440A学习笔记之存储控制器(Memory Controller)