程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C++ 串口編程 打開串口 關閉串口 設置串口參數 讀寫串口函數 參

C++ 串口編程 打開串口 關閉串口 設置串口參數 讀寫串口函數 參

編輯:關於C語言
 

使用Windows API函數操作串口比較簡單,只需要掌握下面幾個函數:
CreateFile 打開串口
GetCommState 獲取串口參數(波特率、數據位、效驗位等)
SetCommState 設置串口參數
ReadFile 讀串口數據
WriteFile 寫串口數據
CloseHandle 關閉串口

下面給出一些簡單的參考代碼:

 

// 打開串口
HANDLE hCom; //全局變量,串口句柄
hCom=CreateFile("COM1",//COM1口
GENERIC_READ|GENERIC_WRITE, //允許讀和寫
0, //獨占方式
NULL,
OPEN_EXISTING, //打開而不是創建
0, //同步方式
NULL);
if(hCom==(HANDLE)-1)
{
AfxMessageBox("打開COM失敗!");
return FALSE;
}
return TRUE;

// 寫串口
char lpOutBuffer[100];
DWORD dwBytesWrite=100;
COMSTAT ComStat;
DWORD dwErrorFlags;
BOOL bWriteStat;
ClearCommError(hCom,&dwErrorFlags,&ComStat);
bWriteStat=WriteFile(hCom,lpOutBuffer,dwBytesWrite,&dwBytesWrite,NULL);
if(!bWriteStat)
{
AfxMessageBox("寫串口失敗!");
}

// 讀串口
char lpInBuffer[1024];
DWORD dwBytesRead=1024;
BOOL bReadStatus;
DWORD dwErrorFlags;
COMSTAT ComStat;
OVERLAPPED m_osRead;
.
ClearCommError(hCom,&dwErrorFlags,&ComStat);
if(!ComStat.cbInQue)
return 0;
dwBytesRead=min(dwBytesRead,(DWORD)ComStat.cbInQue);
bReadStatus=ReadFile(hCom, lpInBuffer,dwBytesRead,
&dwBytesRead,&m_osRead);
if(!bReadStatus) //如果ReadFile函數返回FALSE
{
if(GetLastError()==ERROR_IO_PENDING)
{
GetOverlappedResult(hCom,
&m_osRead,&dwBytesRead,TRUE);
// GetOverlappedResult函數的最後一個參數設為TRUE,
//函數會一直等待,直到讀操作完成或由於錯誤而返回。

return dwBytesRead;
}
return 0;
}
return dwBytesRead;

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved