Pcomm 在數字汽車衡稱重軟件中的應用
本文著重介紹在數字地磅稱重軟件中,用Pcomm實現數字傳感器與計算 機的高速數據通訊。
在數字地磅稱重系統中,般是采用 485-232轉換器直接連接數字傳感器。用電腦代替儀表進行稱重并完成數據管理。
實際應用中發現,在Windows環境下進行數據高速傳輸時,使用些現成的控件存在嚴重的 數據丟失現象。而使用MOXA PcommPro提的 為異步通訊設計的AH函數庫,就可以解決上述 冋題。本文介紹在C++builder中調用Pcomm.dll實 現上位機與數字傳感器通訊的過程。
從M0XA公司下載安裝包,安裝后得到 Pcomm.dll,用 C++builer 中的 Implib.exe 導出對應的 靜態庫,取名為Pcomm.lib,添加到工程中,同時在 安裝目錄下找到Pcomm.h文件,添加到工程中。
在串口通訊過程中,主要使用的函式如下: int sio_open(int port) // 打開串口,port 是串口號 int sio_ioctl(int port,B9600,P_N()NE丨BIT_8 丨S ^1); //設置串口波特率,如9600,n,8,l
int sio_cnt_irq(int port,char *p,l); II 設置中斷 函數,port是串口號,p是回調服務函數指針
int sio_write(int port,char *p,int len); // 發送數 據,*p發送內容,len是長度
int sio_flush(int port,2); //清空串口緩沖區,第二個參數清空緩沖區類型,2是同時清空輸人和輸 出緩沖區
int sio_iqueue(int port); //獲得接收字節數 int sio_read(int port,char *p,int len); II 讀取串
口數據,*p接收內容
int sio_close(int port); II 關閉串 口 主要程序代碼如下:
void _stdcall cntirq(int port)// 聲明中斷服務函數 void fastcall TForml::OPENClick (TObject *Sender); //打開串口,設置中斷服務函數 {
port=StrToInt(ComboBoxl->Text); // 將要打開的 串口號
sio_open(port)// 打開串口 sioJoctKporuBQGOaP.NEIBnLSISJ)//設 置此端口的通訊參數,包括波特率,數據位,校 驗位,停止位
void _stdcall(*p)(int);// 回調函指針 p=cntirq ;
int i=sio_cnt_irq(port,*p, 1); II 設置中斷函數 }
//中斷服務函數,讀者手工編寫,用來處理 接收到的數據,類似于MSC0MM中的接收事件
void _stdcall cntirq(int port)
{
Sleep(20);//為了保證在和傳感器通訊時,能進 行其他操作,需要加人此函數
unsigned char RecProBuf [1024]={‘\0’ }; int n=sio_iqueue(port); //獲取接收的字節數 if(n>0)//有數據接收,無數據跳出
sio_read(port,RecProBuf, 1024); II 讀取數據 //讀到數據后,按協議解析,并顯示 }
sio_write(port,SendData,7); II 發送數據 //SendData為讀傳感器內碼命令,7是發送長度, 不同廠家協議不同
sio_flush(port,2); II 刷新串 口 }
void _fastcall TForm 1 ::SendClick (TObject lender)//點擊開始發送命令,觸發中斷服務 函數,以后在中斷服務函數中發送命令
{
char *SendData; //讀傳感器內碼命令 sio_write(port,SendData,7); II 發送數據 sio_flush(port,2);
void 15 Sender)
fastcall TF orm 1: :CloseClick (TObject
sio_cnt_irq(port, N U LL,0);// 關中斷 sio_close(port);// 關串口
Pcomm是建立在Win32通訊API函數的基礎 上的,并對其進行了封裝,提了的調用接 口。在數字地磅稱重軟件的編寫中,數據高速 可靠的傳輸非常重要。使用Pcomm通訊時,可以 看到RS485-232轉換器的RXD和TXD狀態燈, 處于常亮狀態。
經過連續長時間運行測試,工作正常,未發現 數據丟失現象。在計算機上同時進行其他操作時, 也未對稱重系統產生明顯妨礙。
用于測試的計算機配置如下:
1、CPU:C530 1.7G 內存:1G 硬盤:80G 操作 系統:xp蕃前花園ghost版;
2、CPU:In Core 2.2G 雙核內存:1G 硬盤: 160G操作系統:xp蕃前花園ghost版。
這是筆者近期開發的《數字攝像地磅稱重軟件》如圖2,應用了文中相關的技術。