工業級串口編程利器:Pcomm lite 串口庫介紹 (Pcomm.dll)



PComm Lite是家叫moxa的公司出的,做了幾十年工業串口卡、串口服務器之類設備了。提供的pcomm易用性、可靠性久經考驗。

下載地址:http://www.moxa.com/product/download_pcommlite_info.htm


目前最新版是Version 1.5 Released 2010-09-20 支持XP/win7, 32/64bit的庫都有,開發環境支持VC/VB/Delphi。

pcomm庫函數爲用戶提供了基於win32 api的開發接口。pcomm庫函數分爲7大類:控制函數、數據輸入函數、數據輸出函數、狀態函數、事件驅動函數、傳輸文件函數、特殊設定函數。

這些函數均返回int型數據,若函數調用成功則返回0,否則返回一個負整數。


(1)控制函數主要包括

sio_open(PortNum) 打開串口;

sio_open(PortNum) 關閉串口;

sio_ioctl(PortNum, baud, mode)設置串口的工作模式,包括波特率、數據位元,停止位,校驗等;

sio_flush(ProtNum, func) 清除發送、接收緩衝區,其中func爲0表示清空輸入、爲1表示清空輸出、爲2表示清空輸入輸出。

sio_SetWriteTimeouts(int port, DWORD TotalTimeouts):設置串口寫操作的超時;

sio_lctrl(PortNum, mode) 設置串口RTS/DTS。


(2)數據輸入函數主要包括

sio_getch(PortNum) 從輸入緩衝區讀一個字符;

sio_read(PortNum, buf, len) 從輸入緩衝區讀指定個數的字符

sio_iqueue(PortNum) 讀取輸入緩衝區中的字符長度;


(3)數據輸出函數主要包括

sio_putch(PortNum) 寫一個字符到輸出緩衝區;

sio_write(PortNum, buf, len) 寫指定個數的字符到輸出緩衝區;


(4)狀態函數主要包括

sio_lstatus(PortNum) 獲取串口的CTS, DST, DCD, RI線的狀態;

sio_getbaud(PortNum) 獲取串口的波特率;

sio_getmode(PortNum) 獲取串口的工作模式。對應sio_ioctl函數


(5)事件函數主要包括

sio_term_irq(portNum, func, code) 當接收到指定字符時響應事件,func爲回調函數名,code爲指定的字符;

sio_cnt_irq(portNum, func, count) 當接收到指定個數字元時響應事件,func爲回調函數名,count爲接收的個數;


(6)傳輸文件函數主要包括

sio_FtASCIITx(portNum, fname, func, key) 發送一個文本文件;

sio_FtASCIIRx(portNum, fname, func, key) 接收一個文本文件;


用起來很簡單,pcomm.h/pcomm.lib兩個文件複製到項目目錄並引用,pcomm.dll丟到windows\system32下。
整個庫包含50多個函數,最常用的也就10來個:
打開、關閉、設波特率的:sio_open ()、sio_close()、sio_baut()
發送數據的:sio_putch(),sio_write() 
接收數據的:sio_getch(),sio_read()
查詢輸入輸出緩衝區狀態的:sio_iqueue(), sio_oqueue()
有時可能要設讀寫超時:sio_SetReadTimeouts(), sio_SetWriteTimeouts()
這些函數見名知義,用法查一下PComm.chm就行了。
接收數據一般免不了要開線程的,在接收線程裏sio_iqueue()看一下有沒有數據,有就處理,沒就Sleep()一會。接收數據時它至少會幫你緩衝幾十k,一般也不會丟數據。也可以用sio_term_irq()指定接收一定長數據數據就調用一個CALLBACK函數。

這些基本就齊活了。需要控制DTS/RTS、自動流控件有都有,甚至還有Xmoderm/Ymoderm/Zmoderm發送文件。如果要Modbus之類的協議就要自己寫了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章