0

最近、USB バーコード スキャナーを購入しました。3 つの異なるインターフェイス選択オプションがあります。

  1. RS-232C
  2. USB
  3. ワンドエミュレーション

要件は、Java (Rxtx API) の助けを借りて RS-232C インターフェイスを使用して、スキャンされたバーコードを受信することだけです。私の知る限り、デバイスとのやり取りを開始するには、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

出力の後、次のコードを使用して、上記の各ポートを 1 つずつリッスンしようとしました。

jssc.SerialPort をインポートします。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);
    }
}
}

ポートがビジーであるか、出力がありません (その間、バーコード スキャナーを使用してスキャンを続けました)

4

2 に答える 2

0

私はこれらのAPIに精通していませんが、COMポートの電気的な端にはかなり精通しています。USBポートとは異なり、デバイスが接続されているかどうかを示す自動「ハンドシェイク」はありません。ただし、インターフェイスにはいくつかのステータス行があります。

TD / RD信号(送信データ/受信データ)に加えて、RTS/CTS-送信要求と送信クリアがあります。RTSとCTSは、何も接続されていないときに「準備ができていない」状態になるようなものです。

通常のプロトコルでは、デバイスがRTSをアサートし、もう一方の端がCTSを返し、すべての準備ができていることを示します。ただし、これはすべて、コンピュータが「デバイス」または「モデム」(RS-232が知っている2つのこと)のいずれかとして表示される可能性があるという事実によって複雑になっています。その結果、2つの部品の想定されるモードに応じて、ピンと信号のいくつかの異なる構成を持つことができます。(運が良ければ、スキャナーのドキュメントにその一部が記載されています。)

さらに複雑なのは、DSR / DTR信号(データセット(モデム)対応)とデータ端末対応(データ端末対応)があることです。ほとんどのPC構成では、これらは無視されますが、常にではありません。

したがって、スキャンにすぐに運がない場合は、ピン配置を確認し、電圧計といくつかのジャンパーを使用して、スキャナーが検出できる状態に物理ポートを設定する必要があります。次に、スキャナーが通信できるようにステータス信号を設定する方法を決定するためのさらなる実験が行われます。

于 2012-11-05T19:21:03.960 に答える
0

StackOverflowの他の場所に投稿されたソリューションを次に示します。基本的に、OS から利用可能なコンポートを循環させ、目的のものを表示/選択する必要があります。これに問題がある場合は、コードを投稿して確認してください。

于 2012-11-05T17:54:14.443 に答える