我投降.现在尝试几周,找出阻止接收的串行数据被我的代码的图形部分更新的内容.首次使用Java编程.有大约15年的微程序编程经验,我习惯于解决自己的问题,但这超出了这种策略的效率.我的应用程序包含两个文件.
一个文件源于RXTX项目,并且每秒两次捕获以几个数据包发送的串行数据.这就像一个魅力(花了一些时间),我可以看到捕获的数据是正确和稳定的.
另一个文件是图形文件,由大约80个菜单组成,最终用户可以阅读并有时写入值.到目前为止,导航是通过按钮和滚动条上的鼠标事件完成的.这部分也可以正常工作.可以读取,更改和保存值等.
我遇到的部分是来自串行文件的更新值永远不会更新图形屏幕.试图跟随数百个示例和教程(很多来自这个网站)没有运气.
对象相关语言的概念对我来说是新的,但仍然令人困惑.很确定我的问题涉及继承和类.线程是另一个候选人......已经将代码减少到仍然会运行并呈现我的问题的最小尺寸,并希望有人可以看到什么是错误的.
package components;
import gnu.io.CommPort;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.swing.SwingUtilities;
public class SerialComm extends ScreenBuilder implements java.util.EventListener {
InputStream in;
public SerialComm() {
super();
}
public interface SerialPortEventListener
extends java.util.EventListener {
}
void connect(String portName) throws Exception {
CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("COM1");
if (portIdentifier.isCurrentlyOwned()) {
System.out.println("Error: Port is currently in use");
} else {
CommPortIdentifier.getPortIdentifier("COM1");
System.out.println("" + portName);
CommPort commPort = portIdentifier.open("COM1", 2000);
if (commPort instanceof SerialPort) …Run Code Online (Sandbox Code Playgroud)