#include "tchar.h"
#include int main()
{
/*****************************打開串口*************************************/
HANDLE hCom;//全局變量,串口句柄
hCom = CreateFile(_T("COM3"),//COM3口
GENERIC_READ | GENERIC_WRITE,//允許讀和寫
0,//獨占方式
NULL,
OPEN_EXISTING,//打開而不是創建
0,//同步方式
//FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERAPPLE,//重疊方式
NULL);
if(hCom == (HANDLE)-1)
{
printf("打開COM失敗!");
return 0;
}
/****************配置串口***************/
SetupComm(hCom, 20480, 20480);//輸入緩沖區和輸出緩沖區的大小都是20480
COMMTIMEOUTS TimeOuts;
TimeOuts.ReadIntervalTimeout = 1000;//設定讀超時
TimeOuts.ReadTotalTimeoutMultiplier = 500;
TimeOuts.ReadTotalTimeoutConstant = 5000;
TimeOuts.WriteTotalTimeoutMultiplier = 500;//設定寫超時
TimeOuts.WriteTotalTimeoutConstant = 2000;
SetCommTimeouts(hCom, &TimeOuts);//設置超時
DCB dcb;
GetCommState(hCom, &dcb);
dcb.BaudRate = 115200;//波特率為115200
dcb.ByteSize = 8;//每個字節有8位
dcb.Parity = NOPARITY;//無奇偶校驗位
dcb.StopBits = TWOSTOPBITS;//兩個停止位
dcb.fParity = FALSE;
dcb.fNull = FALSE;
SetCommState(hCom, &dcb);
PurgeComm(hCom, PURGE_TXCLEAR|PURGE_RXCLEAR);//在讀寫串口之前清空緩沖區
/********同步寫串口********/
int i;
unsigned char sendData[256] = {0};//寫入串口緩存區的數組
for(i=0; i<16; i++)
{
sendData[i] = i;
}
DWORD dwWriteLen = 0;
if(!WriteFile(hCom, sendData, 16, &dwWriteLen, NULL))
{
printf("串口發送數據失敗!
");
}
printf("串口發送數據成功!
");
printf("發送的數據為:
");
for(i=0; i<16; i++)
{
printf("%02X ", sendData[i]);
}
printf("
");
/***********關閉串口***********/
CloseHandle(hCom);
std::cout << "Hello World!
";
return 0;
}
運行效果:
配套VS2017工程下載地址:https://download.csdn.net/download/qinrenzhi/10774388