2012-11-05 43 views
0

我最近購買了USB條形碼掃描儀。它有3個不同的接口選項:使用java接收RS-232C設備的數據

  1. RS-232C
  2. USB
  3. Wand仿真

要求僅使用RS-232C接口與接收所掃描的條形碼Java(Rxtx API)的幫助。 所以據我所知,我將需要在RXTX中定義一個COM端口來啓動與設備的交互

但問題是我在RS-232C接口中使用時無法找到它的COM端口。

在通訊RS-232C端口時是否有任何缺失,我如何找到端口號。

請幫我這個。

更新:由於建議我掃描我的系統使用下面的代碼的所有串行端口(使用JSSC

import jssc.SerialPortList; 

public class Main { 

public static void main(String[] args) { 
    String[] portNames = SerialPortList.getPortNames(); 
    for(int i = 0; i < portNames.length; i++){ 
     System.out.println(portNames[i]); 
    } 
} 
} 

有一點要注意:當我連接我的條碼掃描和刪除掃描儀,有在通過上述代碼獲得的端口列表中沒有變化。

輸出: COM3 COM11 COM18 COM32 COM33 COM34 COM35 COM36 COM37 COM38 COM39 COM40 COM42 COM45 COM52 COM53 COM59 COM60 COM61​​ COM62 COM63

輸出後我試着用以下代碼一個一個地聽上面的每個端口:

import jssc.SerialPort; import jssc.SerialPortException;

公共類主要{

public static void main(String[] args) { 
    SerialPort serialPort = new SerialPort("COM63"); //manually setting all the ports above one by one 
    try { 
     serialPort.openPort();//Open serial port 
     byte[] buffer = serialPort.readBytes(10); 
     System.out.println(buffer.toString()); 
     serialPort.closePort();//Close serial port 
    } 
    catch (SerialPortException ex) { 
     System.out.println(ex); 
    } 
} 
} 

我要麼端口忙或無輸出

回答

0

Here's a solution在計算器上的其他地方發佈(在此期間使用我的條形碼掃描器不停掃描)。基本上你需要從你的操作系統中循環使用可用的comports並顯示/選擇預期的。如果您遇到此問題,請發佈一些代碼供我們審覈。

+0

我已經更新了這個問題,請參閱 – Deepak

+0

那麼查看jSSC文檔,你的代碼看起來不錯。讓我們倒退一下。當您將條形碼掃描器連接到PC時,您是否能夠從設備管理器中檢測到它正在使用哪個COM端口?你在Windows/Linux/Mac上嗎?我插入的條碼掃描器目前被我的操作系統識別爲鍵盤設備,而不是串行設備。 – Grambot

+0

我正在使用Windows和是的,你是對的,在我的計算機中,條形碼掃描器被識別爲鍵盤,即其默認接口,但是我想將接口設置爲RS-232C(幸運的是我的設備可以切換到此接口)使用它開發一些Java應用程序。 ,只要我切換其接口,設備管理器不會顯示它在鍵盤或COM部分下 – Deepak

0

我對這些API並不熟悉,但對COM端口的電氣端非常熟悉。與USB端口不同,沒有自動「握手」指示設備是否連接。但是,界面中有幾條狀態行。

除了TD/RD信號(發送數據/接收數據)之外,還有RTS/CTS - 請求發送和清除發送。 RTS和CTS是這樣的,當沒有連接時它們會「未準備就緒」。

通常的協議是設備聲明RTS,然後另一端返回CTS以指示一切準備就緒。然而,這一切都因計算機可能顯示爲「設備」或「調制解調器」(RS-232知道的唯一兩件事)而變得複雜。結果是,您可以擁有幾種不同的引腳和信號配置,具體取決於兩個模塊的假定模式。 (如果您幸運的話,掃描儀文檔將描述其中的一些內容。)

更復雜的是DSR/DTR信號 - 數據集(調制解調器)就緒和數據終端就緒。在大多數PC配置中,這些被忽略,但並非總是如此。

因此,如果您在掃描時很快就沒有運氣,您可能需要查看pinouts,並使用電壓表和一些跳線將您的物理端口設置爲掃描儀可以找到的狀態。然後會有進一步的實驗來確定如何設置狀態信號來讓掃描儀通話。

+0

你是絕對正確的,因爲我也知道RS端口工作。我的條碼掃描器是基於USB的設備,這意味着它沒有實際的RS-232C插頭。 事情是製造商已經提供了軟件級別的接口切換功能,以便USB也可以作爲RS232工作。 但問題是如何才能識別RS232設備使用特定的端口,因爲只有在那之後我們才能發送RTS或CTS命令到該設備(請糾正我,如果我錯了) – Deepak

+0

@Deepak - 是的,它可能做老石頭/硬地的事情。一個想法:你用設備管理器來顯示連接的USB設備?有一次,它會告訴你什麼COM端口被使用,但我不知道最新版本的Windows。 –

+0

是的,因爲我也更新了這個問題「編程我得到了我的系統中的所有串行端口,並且當我插入或移除掃描器時這些串行端口沒有變化」,即一個非常奇怪的事情 – Deepak