如果系統當前有com1、com2、com5、com7四個串口,如何判斷我的外設是接的是哪一個?
我原先的思路是采用輪詢,因為如果上位機發出字符‘T’,外設接收到后會回復字串‘OK!’,但這樣程式運行會出錯。
同樣的思路,用在spccom上一點問題都沒有,但是現在我的XE2上安裝spcomm一直有問題,只能用mscomm了,唉
==============主要程式如下
首先設定將1、2、5、7這4個可用埠號存放在字串串列port中
for i:=0 to port.count-1 do begin
mscomm1.commport:=strroint(port[i]);//讀取埠號
mscomm1.portopen:=true;//打開埠
mscomm1.output:=‘T’;
sleep(100);
mscomm1.portopen:=false;
end;
同時在MSComm1Comm事件中做檢測,如后收到‘OK!’字符就表明當前串口是應用程式所占用的
procedure TForm1.MSComm1Comm(Sender: TObject);
var
buffer:string;
begin
if MSComm1.CommEvent = comEvReceive then begin
buffer:=mscomm1.input;
if buffer='OK!' then label1.caption:='當前程式占用的串口是'+inttostr(mscomm1.commport);
end;
end
===============================
請高手幫忙看下以上思路,按說應該沒什么問題的,但是實際運行的時候根本檢測不出來,問題出在哪里?RThreshold的設定是沒問題的。
uj5u.com熱心網友回復:
try..exceptuj5u.com熱心網友回復:
樓主解決了嗎 個人對于通信編程這塊比較關心uj5u.com熱心網友回復:
通過API識別,更加靈活可靠。uj5u.com熱心網友回復:
用cport吧uj5u.com熱心網友回復:
mscomm這個盡量不要用,麻煩轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/90344.html
標籤:網絡通信/分布式開發
下一篇:前臺呼叫存貯程序與查詢分析器呼叫結果不同,用查詢分析器執行的結果是對的,程式里不連續的有部份代碼沒有執行到,很奇怪
