?? comm.cpp
字號:
#include "stdafx.h"
#include "Comm.h"
// 串口設備句柄
HANDLE hComm;
// 打開串口
// 輸入: pPort - 串口名稱或設備路徑,可用"COM1"或"\\.\COM1"兩種方式,建議用后者
// nBaudRate - 波特率
// nParity - 奇偶校驗
// nByteSize - 數據字節寬度
// nStopBits - 停止位
BOOL OpenComm(const char* pPort, int nBaudRate, int nParity, int nByteSize, int nStopBits)
{
DCB dcb; // 串口控制塊
COMMTIMEOUTS timeouts = { // 串口超時控制參數
100, // 讀字符間隔超時時間: 100 ms
1, // 讀操作時每字符的時間: 1 ms (n個字符總共為n ms)
500, // 基本的(額外的)讀超時時間: 500 ms
1, // 寫操作時每字符的時間: 1 ms (n個字符總共為n ms)
100}; // 基本的(額外的)寫超時時間: 100 ms
hComm = CreateFile(pPort, // 串口名稱或設備路徑
GENERIC_READ | GENERIC_WRITE, // 讀寫方式
0, // 共享方式:獨占
NULL, // 默認的安全描述符
OPEN_EXISTING, // 創建方式
0, // 不需設置文件屬性
NULL); // 不需參照模板文件
if(hComm == INVALID_HANDLE_VALUE) return FALSE; // 打開串口失敗
GetCommState(hComm, &dcb); // 取DCB
dcb.BaudRate = nBaudRate;
dcb.ByteSize = nByteSize;
dcb.Parity = nParity;
dcb.StopBits = nStopBits;
SetCommState(hComm, &dcb); // 設置DCB
SetupComm(hComm, 4096, 1024); // 設置輸入輸出緩沖區大小
SetCommTimeouts(hComm, &timeouts); // 設置超時
return TRUE;
}
// 關閉串口
BOOL CloseComm()
{
return CloseHandle(hComm);
}
// 寫串口
// 輸入: pData - 待寫的數據緩沖區指針
// nLength - 待寫的數據長度
// 返回: 實際寫入的數據長度
int WriteComm(void* pData, int nLength)
{
DWORD dwNumWrite; // 串口發出的數據長度
WriteFile(hComm, pData, (DWORD)nLength, &dwNumWrite, NULL);
return (int)dwNumWrite;
}
// 讀串口
// 輸入: pData - 待讀的數據緩沖區指針
// nLength - 待讀的最大數據長度
// 返回: 實際讀出的數據長度
int ReadComm(void* pData, int nLength)
{
DWORD dwNumRead; // 串口收到的數據長度
ReadFile(hComm, pData, (DWORD)nLength, &dwNumRead, NULL);
return (int)dwNumRead;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -