Получение BREAK в tcl 8.5.1 приводит к тому, что COM-порт перестает работать (win xp) - PullRequest
1 голос
/ 12 января 2010

Я работаю над программой, которая интенсивно использует последовательный порт.

В настоящее время это программа только для Windows (к сожалению :-), работающая в Windows XP. Версия TCL - 8.5.1.0 - это может быть или не быть «официальным» TCL, не уверен.

Все работает отлично, пока устройство на другом конце не отправит BREAK (или просто отключит последовательный порт: -).

Как только это происходит, данные по-прежнему принимаются нормально, но отправка данных в порт с помощью «put» не приводит к передаче данных на последовательный порт. На самом деле, когда я отправляю символ, спрашивая fconfigure о последней ошибке, он всегда говорит BREAK. Теперь, я не знаю, это просто остатки от предыдущей ошибки или нет.

В любом случае, КАК в мире кто-то снимает условие 'break' на последовательном порту в TCL?

Спасибо!

Расти

Обновление: вот как мы открываем последовательный порт:

    set state(com_port_handle) [open $name r+]


    #      Configure the COM port.

    fconfigure $state(com_port_handle) -mode 115200,n,8,1 \
                                       -blocking 0 \
                                       -buffering none \
                                       -translation binary
    fconfigure $state(com_port_handle) -handshake none

Когда мы хотим сделать перерыв с нашей стороны, мы делаем:

    fconfigure $state(com_port_handle) -ttycontrol {break 1}
    after 100
    fconfigure $state(com_port_handle) -ttycontrol {break 0}

1 Ответ

0 голосов
/ 15 января 2010

После прочтения этой сводки управления потоком программного обеспечения, похоже, что отправка символа Xon может вернуть ссылку обратно (если она действительно была приостановлена ​​Xoff).

Кроме того, вы можете взглянуть на эти статьи в вики TCLer относительно последовательных портов. Этот код я обычно использую в качестве каркаса для всего, что связано с последовательным портом.

...