2011-04-04 92 views
2

最终,我想使用Java程序来发送和接收来自通过USB插入的手机的消息。我可以使用C#程序执行此操作,但是我想要发送和接收消息的程序是用Java编写的。为此,我使用Rxtx库(但使用Cloudhopper的Windows x64编译版本)。但是,每当我尝试通过USB发送任何命令给手机,我的电脑就会完全锁定,我必须重新启动它。使用Rxtx库向USB连接的手机发送消息会导致计算机锁定/崩溃 - 为什么?

我正在运行的代码是:Two way communication with the serial port。我认为它成功地建立了一个链接,因为它已经到了它接受来自控制台的输入的阶段,但是当我按下回车键,并且输入被发送时,计算机锁定。

我使用Eclipse运行Windows 7 x64。感谢您的任何帮助。

回答

2

有一点很难从代码告诉,但这里有一些调试技巧:

  • 试图通过与在线调试器行步执行代码,并介入到图书馆本身看,如果你能发现问题。
  • 而不是从控制台读取/写入,请尝试以编程方式发送字符代码。控制台的操作与直接访问非常不同。即代替System.in.read())只是尝试传入一个已知的良好字符串。
  • 请记住,Java在内部使用UCS-16,但该控制台通常使用不同的字符编码(例如Windows的cp1252)。所以,你的“输入”可能与系统所期待的完全不同。如果您的设备需要使用ASCII 13,并且您的键盘正在生成ASCII 12,那么这可能足以导致混淆。
  • 这次崩溃使得看起来很有可能是本地库发生了一些事情。如果您发现Java调试不断让您进入JNI边界,则可能需要使用C/C++工具集进行调试。

祝你好运!

+0

感谢您花时间回复,不幸的是我突然做了很多工作,所以我没有时间跟进,但我马上就会开始调试!我忘了在原帖中提到我通常擅长调试,但锁定/崩溃的突然性使我完全惊慌,所以我很想深入其中。再次感谢。 – aSemy 2011-04-05 22:23:08

+0

我认为你是对的,System.in有问题。这可能是早期版本的Rxtx(如Cloudhopper)或Win x64版本的问题。我试图编译Rxtx的不稳定版本来解决这个问题,但它不起作用。我反而在我的笔记本电脑上运行Win x86 Rxtx(运行Win 7 x86)。一个耻辱,但至少它的作品! – aSemy 2011-04-11 16:59:10

相关问题