как отправить команду на встроенный компьютер, подключенный через последовательный порт - PullRequest
0 голосов
/ 04 августа 2011

Я хочу отправлять команды на встроенный компьютер, подключенный к моему компьютеру через последовательный порт ... вот код, который я использую ...

открытый класс Write {

static Enumeration portList;
static CommPortIdentifier portId;
static String messageString = "Hello, world!\n";
static SerialPort serialPort;
static OutputStream outputStream;

public static void main(String[] args) {
    portList = CommPortIdentifier.getPortIdentifiers();
    while (portList.hasMoreElements()) {
        portId = (CommPortIdentifier) portList.nextElement();
        if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
            if (portId.getName().equals("COM1")) {
                try {
                    serialPort = (SerialPort) portId.open("SimpleWriteApp", 2000);
                    System.out.println("openning the port...");
                } catch (PortInUseException e) {
                }
                try {
                    outputStream = serialPort.getOutputStream();
                    System.out.println("sending the command...");
                } catch (IOException e) {
                }
                try {
                    serialPort.setSerialPortParams(9600,
                            SerialPort.DATABITS_8,
                            SerialPort.STOPBITS_1,
                            SerialPort.PARITY_NONE);

                } catch (UnsupportedCommOperationException e) {
                }
                try {
                    outputStream.write(messageString.getBytes());
                    serialPort.close();
                } catch (IOException e) {
                }
            }
        }
    }
}

}

является ли этот код правильным, или в этот код должны быть внесены некоторые изменения ....

1 Ответ

0 голосов
/ 04 августа 2011

Если это сработает, то я не вижу ничего плохого в этом!Единственное, на что я хотел бы указать, это то, что хорошей практикой является помещать операторы close (например, когда вы закрываете последовательный порт в конце) в блоки finally, чтобы они всегда выполнялись (за исключением завершения виртуальной машины.) В настоящее время, еслиoutputStream.write(messageString.getBytes()); выдается исключение, метод close() не будет выполнен.

Вы также не должны игнорировать исключения, по крайней мере, сделайте printStackTrace(), чтобы убедиться, что ничего не происходит.

...