Javaのシリアルケーブルを介してPCBボードから読み出されたデータ

エール最終:

PCBボードのデータはバイナリ形式でケーブルを介して到着するので、どのようにシリアルケーブルでのPCBボードからデータを読み取るためにEclipseとJavaを使用しました。コンパイラに表示されるデータを保存するには?私は喜ば誰かの助け。

以下は、私がこれを行うために書いていたコードですが、私は、シリアルケーブルで接続したときには、任意のポートを検出しません。

import gnu.io.*;
import java.awt.Color;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.TooManyListenersException;


public class SimpleRead implements Runnable, SerialPortEventListener {
    static CommPortIdentifier portId;
    static Enumeration        portList;
    InputStream           inputStream;
    SerialPort            serialPort;
    Thread            readThread;


    public static void main(String[] args) {
    boolean           portFound = false;
    String            defaultPort ="COM 1" ;

    if (args.length > 0) {
        defaultPort = args[0];
    } 

    portList = CommPortIdentifier.getPortIdentifiers();

    while (portList.hasMoreElements()) {
        portId = (CommPortIdentifier) portList.nextElement();
        if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
        if (portId.getName().equals(defaultPort)) {
            System.out.println("Found port: "+defaultPort);
            portFound = true;
            SimpleRead reader = new SimpleRead();
        } 
        } 
    } 
    if (!portFound) {
        System.out.println("port " + defaultPort + " not found.");
    } 

    } 


    public SimpleRead() {
    try {
        serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
    } catch (PortInUseException e) {}

    try {
        inputStream = serialPort.getInputStream();
    } catch (IOException e) {}

    try {
        serialPort.addEventListener(this);
    } catch (TooManyListenersException e) {}

    serialPort.notifyOnDataAvailable(true);

    try {
        serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, 
                       SerialPort.STOPBITS_1, 
                       SerialPort.PARITY_NONE);
    } catch (UnsupportedCommOperationException e) {}

    readThread = new Thread(this);

    readThread.start();
    }


    public void run() {
    try {
        Thread.sleep(20000);
    } catch (InterruptedException e) {}
    } 


    public void serialEvent(SerialPortEvent event) {
    switch (event.getEventType()) {

    case SerialPortEvent.BI:

    case SerialPortEvent.OE:

    case SerialPortEvent.FE:

    case SerialPortEvent.PE:

    case SerialPortEvent.CD:

    case SerialPortEvent.CTS:

    case SerialPortEvent.DSR:

    case SerialPortEvent.RI:

    case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
        break;

    case SerialPortEvent.DATA_AVAILABLE:
        byte[] readBuffer = new byte[20];

        try {
        while (inputStream.available() > 0) 
        {
            int numBytes = inputStream.read(readBuffer);
            System.out.print("The Read Bytes from SerialPort are");
            System.out.write(readBuffer);
            System.out.println();
        } 

        System.out.print(new String(readBuffer));
        } catch (IOException e) {}

        break;
    }
    } 

}

ログの結果:

ポートCOM 1が見つかりません。

アレックス・テイラー:

ポート名は、それらにスペースを持っていません。変更してみてください:

String            defaultPort ="COM 1" ;

に:

String            defaultPort ="COM1" ;

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=191098&siteId=1