1.打开COM口:
DCB dcb;
HANDLE m_hCom;//COM口句柄
m_hCom = CreateFile(
"COM1",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
2.设置COM口
if (m_hCom != INVALID_HANDLE_VALUE) // 打开串行口成功
{
// 配置通讯参数
GetCommState(m_hCom, &dcb);
dcb.BaudRate = CBR_9600;//波特率
dcb.Parity = EVENPARITY;
//EVENPARITY 偶校验 ,NOPARITY 无校验
//MARKPARITY 标记校验 ODDPARITY 奇校验
dcb.ByteSize = 8;//数据位
dcb.StopBits = ONESTOPBIT;// ONESTOPBIT 1位停止位
//TWOSTOPBITS 2位停止位
//ONE5STOPBITS 1.5位停止位
COMMTIMEOUTS m_CommTimeouts;
SetCommState(m_hCom, &dcb);
// Config timeouts设置超时
m_CommTimeouts.ReadIntervalTimeout = 0;
m_CommTimeouts.ReadTotalTimeoutConstant = 1000;
m_CommTimeouts.ReadTotalTimeoutMultiplier = 0;
m_CommTimeouts.WriteTotalTimeoutConstant = 200;
m_CommTimeouts.WriteTotalTimeoutMultiplier = 0;
SetCommTimeouts(m_hCom, &m_CommTimeouts);
// Clear buffer清除缓冲区
PureComm(m_hCom, PURGE_TXCLEAR);
PurgeComm(m_hCom, PURGE_RXCLEAR);
// 打开串行口成功
return TRUE;
}
3.写串口
char lpOutBuffer[100];
DWORD dwBytesWrite=100;
COMSTAT ComStat;
DWORD dwErrorFlags;
BOOL bWriteStat;
bWriteStat=WriteFile(hCom,lpOutBuffer,dwBytesWrite,& dwBytesWrite,NULL);
if(!bWriteStat)
{
AfxMessageBox("写串口失败!");
}
4.读串口
char str[100];
DWORD wCount;//读取的字节数
BOOL bReadStat;
bReadStat=ReadFile(hCom,str,100,&wCount,NULL);
if(!bReadStat)
{
AfxMessageBox("读串口失败!");
return FALSE;
}
return TRUE;
5.关闭
BOOL CloseHandle( HANDLE hObject; //handle to object to close );
DCB dcb;
HANDLE m_hCom;//COM口句柄
m_hCom = CreateFile(
"COM1",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
2.设置COM口
if (m_hCom != INVALID_HANDLE_VALUE) // 打开串行口成功
{
// 配置通讯参数
GetCommState(m_hCom, &dcb);
dcb.BaudRate = CBR_9600;//波特率
dcb.Parity = EVENPARITY;
//EVENPARITY 偶校验 ,NOPARITY 无校验
//MARKPARITY 标记校验 ODDPARITY 奇校验
dcb.ByteSize = 8;//数据位
dcb.StopBits = ONESTOPBIT;// ONESTOPBIT 1位停止位
//TWOSTOPBITS 2位停止位
//ONE5STOPBITS 1.5位停止位
COMMTIMEOUTS m_CommTimeouts;
SetCommState(m_hCom, &dcb);
// Config timeouts设置超时
m_CommTimeouts.ReadIntervalTimeout = 0;
m_CommTimeouts.ReadTotalTimeoutConstant = 1000;
m_CommTimeouts.ReadTotalTimeoutMultiplier = 0;
m_CommTimeouts.WriteTotalTimeoutConstant = 200;
m_CommTimeouts.WriteTotalTimeoutMultiplier = 0;
SetCommTimeouts(m_hCom, &m_CommTimeouts);
// Clear buffer清除缓冲区
PureComm(m_hCom, PURGE_TXCLEAR);
PurgeComm(m_hCom, PURGE_RXCLEAR);
// 打开串行口成功
return TRUE;
}
3.写串口
char lpOutBuffer[100];
DWORD dwBytesWrite=100;
COMSTAT ComStat;
DWORD dwErrorFlags;
BOOL bWriteStat;
bWriteStat=WriteFile(hCom,lpOutBuffer,dwBytesWrite,& dwBytesWrite,NULL);
if(!bWriteStat)
{
AfxMessageBox("写串口失败!");
}
4.读串口
char str[100];
DWORD wCount;//读取的字节数
BOOL bReadStat;
bReadStat=ReadFile(hCom,str,100,&wCount,NULL);
if(!bReadStat)
{
AfxMessageBox("读串口失败!");
return FALSE;
}
return TRUE;
5.关闭
BOOL CloseHandle( HANDLE hObject; //handle to object to close );