Использование библиотеки Rxtx для отправки сообщений на телефон, подключенный через USB, приводит к зависанию / сбоям компьютера - почему? - PullRequest
2 голосов
/ 05 апреля 2011

В конечном итоге я хотел бы использовать программу Java для отправки и получения сообщений с телефона, который я подключил через USB. Я могу сделать это с помощью программы на C #, однако программа, которую я хочу отправлять и получать сообщения, написана на Java. Для этого я использую библиотеку Rxtx (но использую скомпилированную версию Windows x64 из Cloudhopper ). Но всякий раз, когда я пытаюсь отправить любые команды на телефон через USB, мой компьютер полностью блокируется, и мне приходится его перезагружать.

Код, который я запускаю, находится здесь: Двухсторонняя связь с последовательным портом . Я думаю, что он успешно устанавливает связь, поскольку он достигает стадии, на которой он принимает ввод с консоли, хотя, когда я нажимаю клавишу ввода, и ввод отправляется, компьютер блокируется.

Я использую Windows 7 x64, использую Eclipse. Спасибо за любую помощь.

1 Ответ

2 голосов
/ 05 апреля 2011

Немного сложно сказать по коду, но вот несколько советов по отладке:

  • Попробуйте построчно пройти по коду с помощью отладчика, и зайдите в саму библиотеку, чтобы увидеть, можете ли вы найти проблему.
  • Вместо чтения / записи с консоли, попробуйте отправить коды символов программно. Консоль работает совсем не так, как прямой доступ. то есть вместо System.in.read ()) просто попробуйте передать хорошо известную строку.
  • Имейте в виду, что Java работает с UCS-16 внутренне, но консоли обычно работают с различными кодировками символов (например, cp1252 для Windows). Таким образом, ваш «ввод» может быть совершенно другим персонажем, чем ожидает система. Если ваше устройство ожидает ASCII 13, а клавиатура генерирует ASCII 12, этого может быть достаточно, чтобы запутать вещи.
  • Авария делает очень вероятным, что что-то происходит с нативной библиотекой. Если вы обнаружите, что отладка Java продолжает сбивать вас с границы JNI, вам может потребоваться отладка с помощью набора инструментов C / C ++.

Удачи!

...