我有一个java应用程序,我正在开发一个方案,如果我的应用程序可以工作,如果我的体重秤关闭。但当我关闭我的体重秤时,我的JFrame冻结了这个错误的代码吗?这是代码 系统冻结在第4行。
serialPort.openPort();//Open serial port
serialPort.setParams(9600, 8, 1, 0);//Set params.
serialPort.writeBytes("R".getBytes());
String a = serialPort.readString(13).trim();
答案 0 :(得分:3)
好吧,看起来你在UI线程中这样做了。你基本上应该避免在UI线程中进行I / O,因为这意味着当I / O等待时,你的UI将没有响应。
相反,您应该使用异步I / O,或者在单独的线程中执行所有I / O,但是请记住将任何结果封送回UI线程,因为您不应该执行任何UI工作< UI线程上的em> not 。有关详细信息,请参阅Swing concurrency tutorial。
顺便说一句,我强烈强烈建议不要在未指定编码的情况下调用{{1}} - 您真的不想使用平台编码。 (在这种情况下,我怀疑你知道你要写的单个字节,所以我直接写这个......)