?? com.cpp
字號:
// COM.cpp: implementation of the CCOM class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "COM.h"
#define READBUFFER 1024
#define WRITEBUFFER 1024
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CCOM::CCOM()
{
}
CCOM::~CCOM()
{
}
BOOL CCOM::InitCOM(int m_hCom,int m_hBaud,int m_nDataBits,int m_nParity,int m_nStopBits)//初始化串口
{
DCB dCB;
COMMTIMEOUTS ct;
CString m_sCom;
switch(m_hCom)
{
case 1:
m_sCom="COM1";
break;
case 2:
m_sCom="COM2";
break;
case 3:
m_sCom="COM3";
break;
case 4:
m_sCom="COM4";
break;
case 5:
m_sCom="COM5";
break;
case 6:
m_sCom="COM6";
break;
case 7:
m_sCom="COM7";
break;
case 8:
m_sCom="COM8";
break;
default:
m_sCom="COM1";
break;
}
//得到打開串口,并得到串口句柄
hCOM = CreateFile( m_sCom, GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL);
if(hCOM == INVALID_HANDLE_VALUE)
return FALSE;
//初始化串口,READBUFFER和WRITEBUFFER是用戶自己定義的兩個宏
SetupComm(hCOM, READBUFFER, WRITEBUFFER);
PurgeComm(hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR);
//設置DCB結構
if(!GetCommState(hCOM, &dCB))
{
CloseHandle(hCOM);
return FALSE;
}
dCB.BaudRate = m_hBaud;
dCB.ByteSize = m_nDataBits;
switch(m_nParity) // 校驗設置
{
case 0:
dCB.Parity=NOPARITY;
break;
case 1:
dCB.Parity=ODDPARITY;
break;
case 2:
dCB.Parity=EVENPARITY;
break;
case 3:
dCB.Parity=MARKPARITY;
break;
case 4:
dCB.Parity=SPACEPARITY;
break;
default:
dCB.Parity=NOPARITY;
break;
}
switch(m_nStopBits) // 停止位
{
case 0:
dCB.StopBits=ONE5STOPBITS;
break;
case 1:
dCB.StopBits=ONESTOPBIT;
break;
case 2:
dCB.StopBits=TWOSTOPBITS;
break;
default:
dCB.StopBits=ONESTOPBIT;
break;
}
if(!SetCommState(hCOM, &dCB))
{
CloseHandle(hCOM);
return FALSE;
}
//設置超時值
ct.ReadIntervalTimeout = MAXDWORD;
ct.ReadTotalTimeoutConstant = 0;
ct.ReadTotalTimeoutMultiplier = 0;
ct.WriteTotalTimeoutConstant = 0;
ct.WriteTotalTimeoutMultiplier = 0;
if(!SetCommTimeouts(hCOM, &ct))
{
CloseHandle(hCOM);
return FALSE;
}
return TRUE;
}
BOOL CCOM::SendCOMCode(unsigned char *chCode, int nNum)//寫串口
{
DWORD dwWritenNum;
return WriteFile(hCOM, chCode, nNum, &dwWritenNum, NULL);
}
DWORD CCOM::GetCOMData(unsigned char *pchBuffer)//讀串口
{
DWORD dwReadNum;
ReadFile(hCOM, pchBuffer, READBUFFER, &dwReadNum, NULL);
return dwReadNum;
}
void CCOM::CloseCOM()
{
CloseHandle(hCOM);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -