4個COM port 輪詢與關閉問題

各位先進好

小弟有個問題請教各位

我有四個板子(自己做的)分別接到PC的四個COM port

想在同一個程式裡輪詢每一個板子的資料,只做單一板子時的指令傳收都正確

同時做多個板子時,我想要每隔固定的時間(如三秒)輪詢下個板子

ex.

A.第一次(COM 1)先送詢問指令後,直到詢問COM 2前的三秒鐘內均是等待接收COM 1資料的時間

B.不論COM 1接收資料成不成功,三秒鐘一到則改port number(我一開始用serial I/O,後來也有用VISA,最後遇到的問題都一樣),改port number後會先做一次initial 的動作,之後再送詢問指令(此時就是對COM 2溝通了),其餘以此類推

遇到的狀況:

A.兩個板子都確實有收到詢問指令,因收完後會作動馬達,示波器亦可觀察到板子接收與回送資料的信號

B.但在PC上只看得到其中一個PORT所接到的資料,我用的baud rate=9600bps,我也有試過在每一次改port number前先將前一次的port number 關閉(用close的vi),似乎沒有改善

不好意思,沒有剪貼自己的程式上來,因為寫的有些複雜,以各位的經驗來看,這是程式的問題還是我板子的問題,是不是程式少了什麼,還是我邏輯有誤,還請各位先進給點意見,謝謝!

PS第一次發文,還不會用傳檔,若不過清楚,我寫一個簡單的版本,再放上來求教,謝謝

請問你可以同時收和發嗎?

我也想了解這種情況呢

若有試過和兄弟請介紹下可以嗎

[QUOTE=cfhong]

各位先進好

小弟有個問題請教各位

我有四個板子(自己做的)分別接到PC的四個COM port

想在同一個程式裡輪詢每一個板子的資料,只做單一板子時的指令傳收都正確

同時做多個板子時,我想要每隔固定的時間(如三秒)輪詢下個板子

[/QUOTE]

我之前也有作過類以的東西,我主要是同時作六個RS-232 對我的板子抓資料,我發現有一些主機板(可能是SUPER IO 的 16550 的支援不良)同時間對兩個RS-232作動作時常常會有掉一兩個字元的問題,我用的是VISA SERIAL 的方式去抓,後來改成用六個 USB to RS-232 就沒這個問題了.

以你的例子來說,我想大可不必用輪詢的,大可同時去抓四個PORT的資料,只要把delay time 設定好就行了.

請問一下,你所指的Delay time是放在什麼之間,我現在的CASE可能會存取到200多個COM port,而且是即時的.不過我現在使用16個COM port對接就會有掉字元的現象…

dear

我是剛加入這個討論群組的

對於你問的問題

你可以嘗試去使用Thread的方式控制

可以同時控制所有的Com Port

小弟都是用這樣的方式  可以讓VI 更簡單化

執行效率 也好很多喔

第一次發言 有發言不當的地方請見諒

我對LV並不是很熟

對於你的問題,我提出我的看法:

1:PC下完COMMAND後,板子接收完資料是否會回應?

    如會回應,可做資料接收完成的依據。

2:您的通訊方式為全工或半工?

3:接收完畢,板子回應訊息正確時,設旗號動作可以不必很長 DELAY TIME 

 

200 個 COM PORT ?

請問 要如何才能有 200 個 COM PORT

[QUOTE=Alexwang]請問一下,你所指的Delay time是放在什麼之間,我現在的CASE可能會存取到200多個COM port,而且是即時的.不過我現在使用16個COM port對接就會有掉字元的現象...[/QUOTE]

這個不用擔心,RS-232 不來就不是同時的,只要設定好Flow Control , 而且16550 上有HW Buffer , VISA 上也有SW Buffer 我想不是問題,我剛剛試了一下,24個COM Port 同時作讀取,都是每隔150ms 讀取一次,並沒有發生問題.

[QUOTE=海馬]

200 個 COM PORT ?

請問 要如何才能有 200 個 COM PORT

[/QUOTE]

http://www.moxa.com/product/NPort_5600.htm

目前市面上很多使用這種使用Ethernet的interface來做multi I/O的設備

而且它是對應到你PC上真正的Com port,

只不過現在我的需求是必需對200多台一直會發出訊息的機器做監控並且丟出指令

一直重複下去,現在擔心的是,如果其中一台機器發的指令我沒攔截到,或者buffer塞滿

造成控制端無法正確判斷...後續動作便會停止...小弟不才...已經嘗試過很多方法..

不過都一直不順利,還請各位大大多多指教

 

 

 

[QUOTE=Alexwang][QUOTE=海馬]

200 個 COM PORT ?

請問 要如何才能有 200 個 COM PORT

[/QUOTE]

http://www.moxa.com/product/NPort_5600.htm

目前市面上很多使用這種使用Ethernet的interface來做multi I/O的設備

而且它是對應到你PC上真正的Com port,

只不過現在我的需求是必需對200多台一直會發出訊息的機器做監控並且丟出指令

一直重複下去,現在擔心的是,如果其中一台機器發的指令我沒攔截到,或者buffer塞滿

造成控制端無法正確判斷...後續動作便會停止...小弟不才...已經嘗試過很多方法..

不過都一直不順利,還請各位大大多多指教

[/QUOTE]

200個啊...或許這有一點挑戰性,但因為Labview有多功的能力,用多個While Loop 去抓資料,每個LOOP 作 DELAY 50 ms ,我想應讓都不成問題的,因為我目前手上只有24個USB TO RS323 的線,我試了一下,24個是完全OK的而且佔用的CPU時間也非常的少,所以我大膽的推測200個一定沒問題(大不了來個雙核心CPU),建議你還是把你的程式上傳來看看,不然大家都只能用"猜"的去想像你的程式是怎麼作的,也很難提出什麼建議.