简体   繁体   English

Java Com端口读写问题

[英]Java Com port read write issue

In my application I am trying to write to a COM port. 在我的应用程序中,我试图写入COM端口。 The connected device is an arduino that returns the message I send (for testing purposes). 连接的设备是一个arduino,它返回我发送的消息(出于测试目的)。 However when I write to it I don't get the response I expect but when I use a button in a GUI I do. 但是,当我写它时,没有得到我期望的响应,但是当我在GUI中使用按钮时,却可以。

The write method: 写入方法:

public void write(String x) {
    try {
        outStream.write(x.getBytes());
        outStream.flush();
    } catch (IOException e) {
        logger.error(e.getMessage(), e);
    }
}

The event listener 事件监听器

public void serialEvent(SerialPortEvent event) {
    logger.debug("listener called");
    if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
        BufferedReader portReader = new BufferedReader(new InputStreamReader(inStream));
        try {
            String line = portReader.readLine();
            test(line);
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
        }
    }
}

The serialport will notify if data is available and the listener is called after I write the data however I get an OUTPUT_BUFFER_EMPTY response while I expect the string I have sent. 串行端口将通知数据是否可用,并在写入数据后调用侦听器,但是在我希望已发送的字符串的同时,我得到OUTPUT_BUFFER_EMPTY响应。

The SerialPortHandler is based on instances so I can use the same one everywhere in my application. SerialPortHandler基于实例,因此我可以在应用程序中的任何地方使用相同的实例。

example: 例:

SerialPortHandler handler = SerialPortHandler.getInstance();
handler.write("hello world");

expected: 预期:

DEBUG [SerialPortHandler.java] - listener called
hello world

actual: 实际:

DEBUG [SerialPortHandler.java] - listener called

问题是我在写入和初始化serialportHandler的那一刻之间没有延迟

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM