Назад | Перейти на главную страницу

Последовательный порт (COM1) не отвечает

Изначально я делал POS-приложение с помощью Excel / VB. Все работало на отлично, особенно последовательная связь с POS-дисплеем. Вот пример кода, с помощью которого приложение взаимодействовало:

Function Send2Display(ln1$, Optional ln2$)
    On Error GoTo theEnd
    Dim ln1Space As Byte, ln2Space As Byte
    ln1 = Left(ln1, 20): ln1Space = 20 - Len(ln1)
    ln2 = Left(ln2, 20): ln2Space = 20 - Len(ln2)
    Open "COM1:" For Output As #1
        ' Write lines and then set cursor to start
        Print #1, ln1; Spc(ln1Space); ln2; Spc(ln2Space)
        Print #1, Chr$(&H1B)
theEnd:
    Err.Clear: Close #1
End Function

Как я уже сказал, это сработало. Однако теперь я переместил приложение POS в RoR, и мне пришлось создать Java-апплет для связи с дисплеем. Апплет работает нормально, за исключением следующей проблемы:

Я не уверен, что за причина это есть, но в определенный момент Java сообщает, что я использую «неверную || отсутствующую функцию» при отправке данных в COM-порт. Мне нужно закрыть приложение (веб-страницу), затем отключить COM1 в диспетчере устройств и снова включить его. Затем, когда я снова загружаю веб-страницу, она начинает работать. Видеть эта страница для кода Java и JNLP.

Если COM-порт не отвечает на запросы веб-приложения, я могу загрузить старый файл Excel, и он все равно будет работать. Я не понимаю, почему это не работает для Java-апплета.

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