5

Java プログラムが、コンピュータに接続されているシリアル ポート デバイスを検出できません。

Windows 7 (64 ビット) コンピューターを使用しています ()。

シリアル ポート デバイスは、37860 ボーでテキスト GPS 文字列を出力する GPS モジュールで、ラップトップの USB ポートに接続されたシリアル USB コンバータに接続されています。

Windows コントロール パネル/デバイス マネージャーでは、このデバイスは COM7 として表示されます。

コンピュータで実行されている GPS アプリケーション「MiniGPS」は、COM7 として GPS チップと双方向で通信できます。

Processing のアプリケーションは、コンピューターに 2 つのシリアル ポート (com3 と com7、com3 はマウス) があることを検出できます。

GPS からシリアル ポートからデータを収集するアプリケーションを Java (または C++) で作成したいと考えています。

次のコード (以下) をどこかからコピーしましたが、同じまたは類似のコードが他の多くの質問に既に表示されている場所がわかりません。

これを実行すると、portList列挙が空に戻り、シリアル ポートがまったく見つかりません。

一度に 1 つのプログラムしかシリアル ポートを認識できないことがわかっています。これを試す前に、デバイス マネージャー アプリ、GPS アプリ、および処理アプリをシャットダウンしましたが、それでもCommPortIdentifierオブジェクトによって識別されるシリアル ポートはありません。

助言がありますか ?

public class SimpleRead implements Runnable, SerialPortEventListener {
static CommPortIdentifier portId;
static Enumeration portList;

InputStream inputStream;
SerialPort serialPort;
Thread readThread;

public static void main(String[] args) 
{
    System.out.println("Hello World");
    portList = CommPortIdentifier.getPortIdentifiers();

    JOptionPane.showMessageDialog(null,"portlist :"+portList.hasMoreElements());
    int numelt=0 ;
    while (portList.hasMoreElements()) 
    {
        numelt++;
        portId = (CommPortIdentifier) portList.nextElement();
4

3 に答える 3

4

JSSCライブラリを使用することをお勧めします。

経験によって効率的であり、コードははるかに簡潔になります

于 2012-12-24T10:50:51.480 に答える
0

Windows 7 で javax.comm を使用すると互換性の問題が発生し、Windows 7 でサポートされている RxTx API を使用してみてください。

于 2013-02-12T06:06:02.943 に答える
0

確かに言うのは難しいですが、あなたの問題は次のいずれかのように聞こえます:

  • プログラムの初期化後にデバイスを接続しました。

    私の経験から、COM ポートはプログラムの初期化時に認識されます。私の会社は、プラグインされているデバイスをリッスンする方法を見つけるために何ヶ月も取り組んできましたが、純粋な Java では不可能のようです (これには困惑しています)。プラグインしてから、プログラムを起動してみてください。

  • ドライバーファイルがありません。

    ファイルjavax.comm.propertiesとwin32comm.dllを必要とするjavax.commを使用しています(64ビットシステムでは別のドライバーを見つける必要がある場合があります)。プロパティ ファイルは %JAVA_HOME%\lib\ ディレクトリに配置し、dll は %JAVA_HOME%\bin に配置する必要があります。

于 2012-10-13T04:39:21.377 に答える