자바와 시리얼 케이블을 통해 PCB 보드에서 데이터 읽기

에일 마지막 :

PCB의 보드의 데이터를 바이너리 형식의 케이블을 통해 도착하기 때문에, 어떻게 시리얼 케이블로 PCB 보드에서 데이터를 읽는 일식과 자바를 사용. 어떻게 컴파일러에 표시되는 데이터를 저장하려면? 나를 기쁘게 누군가의 도움이됩니다.

아래는 내가이 일을 쓰고 있어요 코드입니다,하지만 난 시리얼 케이블을 연결 할 때 어떤 포트를 감지하지 않습니다

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=191096&siteId=1