Получилось связаться с упсом... но только в "одну сторону"

Тема в разделе "WASM.ASSEMBLER", создана пользователем senseysensor, 11 апр 2009.

  1. senseysensor

    senseysensor New Member

    Публикаций:
    0
    Регистрация:
    11 мар 2009
    Сообщения:
    17
    Здравствуйте!

    Работаю потихоньку над прогой - драйвер под DOS для UPS. Не получалось связаться через прерывание (int 14H). Теперь пользуюсь портами. Часть задачи решена - упс воспринимает сигналы с компа (например, команду самодиагностики - это можно увидеть невооружённым глазом). Но осталась ещё (одна?) проблема - не могу нормально принять ответ с порта :dntknw:

    В ответ на запрос вида "Q1<cr>" мне должна прийти строка в 47 байт. Кстати, интересно, что из-под винды (xp) можно получить прямой доступ к COM-порту. Ну так вот. Под виндой в дебагере (afdpro) пошагово ответ через раз приходит. Через раз. В половине случаев вместо корректного ответа приходит половина нормально, а остальное какие-то вообще не в тему буквы и прочий хлам. Если прогонять всю процедуру за один раз, то обычно вообще получаю один-два байта :dntknw: Получается, упс не успевает мне нормально ответить. Ну да ладно. То есть в принципе устройство нормально функционирует.

    Хуже ситуация из-под DOS'а: там вообще не получается принять нормальный ответ! Я в дебагере смотрю: после передачи на упс последнего управляющего байта на запрос статуса приходит байт 63, т.е. в буфере готовый к передаче символ, который был перезаписан! И это при том, что прямо перед этим я проверял статус - и никакого символа там не было! Непонятно - что на что наложилось? А в буфере и лежит тот символ, что я только что послал. Вот так :dntknw: Что делать - непонятно.......


    то есть я постоянно при отправке на упс смотрю статус: 60, 60, 60... то есть всё нормально, устройство не сообщает об ошибке. И тут вдруг передал последний байт - и вот на, 63 -
    В буфере лежит последний или предпоследний посланный мной байт, я его принимаю, а больше ничего нет. Ни ответа, ни привета.

    Извините, что заставил столько прочитать - но если бы кто-то мог посоветовать что-то дельное, был бы очень благодарен.
    Спасибо заранее!
     
  2. senseysensor

    senseysensor New Member

    Публикаций:
    0
    Регистрация:
    11 мар 2009
    Сообщения:
    17