Как изменить скорость передачи без закрытия соединения? - PullRequest
6 голосов
/ 09 июля 2011

Я хочу подключиться к устройству, которое подключено к последовательному порту (COM4) с начальной скоростью 300 бод, устройство может изменить свою скорость передачи данных до 9600 с помощью команды, мой код Java отправляет эту команду на устройство и скорость передачи данных устройство изменилось, но я не знаю, как изменить скорость передачи в моей программе, не закрывая соединение. Когда соединение было закрыто, устройство возвращается к начальной скорости передачи.

Есть ли способ изменить скорость передачи данных в Java при открытом соединении?

После того, как я отправляю команду «изменить скорость передачи данных» на устройство, когда приведенный ниже код выполняется, устройство теряет соединение. Я думаю, что этот метод только для инициализации, а не для изменения скорости передачи в середине связи.

port.setSerialPortParams(
    9600,
    SerialPort.DATABITS_8,
    SerialPort.STOPBITS_1,
    SerialPort.PARITY_NONE);

Ответы [ 2 ]

3 голосов
/ 09 августа 2011

Скорее всего, устройство распознает DTR или RTS. Windows будет переключать их, когда порт открыт, и восстанавливать их, когда порт закрыт. Таким образом, у вас есть 3 варианта. Я не уверен, какой из них будет работать - возможно, вам придется попробовать их все, у меня нет окна с последовательным портом.

  1. Используйте другую библиотеку Java, например, "gnu.io.RXTXPort" из librxtx, которая может изменять скорость передачи данных, не закрывая соединение.

  2. Попробуйте использовать команду windows mode: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/mode.mspx. Попробуйте оба режима RTS и DSR: «Вкл.» И «Выкл.», И посмотрите, поможет ли какой-либо параметр. Обратите внимание, что в случае успеха устройство никогда не будет сброшено, даже если вы выйдете из Java-программы. Вам придется снова вызвать «режим» для сброса устройства.

  3. Получить специальный последовательный кабель, который не пропускает сигналы DTR. Они называются «3-проводными» (только RX и TX) или «5-проводными» (RX / TX + RTS / CTS) кабелями RS232, и их легко сделать.

0 голосов
/ 19 июля 2011

Вы всегда указываете скорость передачи данных при подключении к устройству. Даже если вы этого не сделаете, используемое вами программное обеспечение / API сделает это за вас. Скорее всего, ваш API подключается к этому устройству со скоростью передачи по умолчанию 300. Скорость передачи определяется для последовательного соединения, а не для устройства. Если вы не подключены, скорость в бодах отсутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...