📄 comoper.cpp
字号:
#include "StdAfx.h"
#include "ComOper.h"
/*****************************************************************
* 函数名 :InitDCB
* 功能 : 用来为指定的串口设备设置固定的硬件协议,包括串口工作的波特率
* 数据长度,校验位,和帧停止位
* 输入参数:
* Param1: hPort 有效的串口设备句柄
* 返回值 : 0 失败 非0成功
******************************************************************/
int InitDCB(HANDLE hPort)
{
DCB PortDCB;//DCB串口参数结构
PortDCB.DCBlength = sizeof(DCB);
GetCommState(hPort,&PortDCB);
PortDCB.BaudRate = CBR_9600;//9600..波特率
PortDCB.ByteSize = 8; //数据位
PortDCB.Parity = NOPARITY; //校验位
PortDCB.StopBits = ONESTOPBIT; //停止位
return SetCommState (hPort, &PortDCB);
}
/*****************************************************************
* 函数名 :InitCommTimeouts
* 功能 : 为指定的串口设置响应延时时间参数
* 输入参数:
* Param1: hPort 有效的串口设备句柄
* 返回值 : 0 失败 非0成功
******************************************************************/
int InitCommTimeouts(HANDLE hPort)
{
COMMTIMEOUTS CommTimeouts;//时间参数
GetCommTimeouts (hPort, &CommTimeouts);//取得时间参数
CommTimeouts.ReadIntervalTimeout = MAXDWORD; //最大时间参数
CommTimeouts.ReadTotalTimeoutMultiplier = 0;
CommTimeouts.ReadTotalTimeoutConstant = 0;
CommTimeouts.WriteTotalTimeoutMultiplier = 0;
CommTimeouts.WriteTotalTimeoutConstant = 0;
return SetCommTimeouts (hPort, &CommTimeouts);
}
/*****************************************************************
* 函数名 :OpenPort
* 功能 : 开启串口设备1,并初始化
* 返回值 : 串口设备的上下文句柄
******************************************************************/
HANDLE OpenPort(int port)//打开函数实现
{ //打开串口
HANDLE hPort = NULL;
switch(port)
{
case 1:
hPort = CreateFile("COM1:", GENERIC_READ | GENERIC_WRITE,0, NULL, OPEN_EXISTING, 0, NULL);
break;
case 2:
hPort = CreateFile("COM2:", GENERIC_READ | GENERIC_WRITE,0, NULL, OPEN_EXISTING, 0, NULL);
break;
case 3:
hPort = CreateFile("COM3:", GENERIC_READ | GENERIC_WRITE,0, NULL, OPEN_EXISTING, 0, NULL);
break;
default:
return NULL;
}
if(hPort == INVALID_HANDLE_VALUE)//失败
{
return hPort;
}
if(!InitDCB(hPort))//串口参数初始化
{
ShutPort(hPort);
hPort = NULL;
return hPort;
}
if(!InitCommTimeouts(hPort))//时间参数设置
{
ShutPort(hPort);
hPort = NULL;
return hPort;
}
if(!SetCommMask(hPort, EV_RXCHAR))//设置字符事件
{
ShutPort(hPort);
hPort = NULL;
return hPort;
}
if(!SetupComm(hPort,2048,2048))//设置串口读写缓冲区大小
{
ShutPort(hPort);
hPort = NULL;
return hPort;
}
return hPort;
}
/*****************************************************************
* 函数名 :ShutPort
* 功能 : 关闭串口
* Param1: hPort 有效的串口设备句柄
* 返回值 : 无
******************************************************************/
void ShutPort(HANDLE hPort)//关闭串口
{
SetCommMask(hPort,0);//取消串口事件
CloseHandle(hPort); //关闭串口句柄
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -