WinXP проблема COM-порта !!!

Тема в разделе "Delphi - Сети", создана пользователем GR, 10 мар 2004.

Статус темы:
Закрыта.
  1. GR

    GR Гость

    Есть консольное Win-приложение, читающее данные из прибора через COM-порт. При запуске нескольких экземпляров приложения в Win98, данные нормальным образом читаются параллельно из двух приборов (COM1, COM2). При попытке проделать тоже самое под XP возникают какие-то недоразумения. Два экземпляра начинают работать синхронно, т.е. сначала читает одна программа, затем идет переключение на вторую, первая при этом ждет и так далее ... Может кто сталкивался с такими проблемами в XP, возможно что-то связанное с потоками. Возможно есть характерные особенности работы с портами и потоками под XP.
     
  2. ????

    ???? Гость

    GR
    А как в программе реализована работа с портами? Напрямую XP этого не даёт.
     
  3. GR

    GR Гость

    Работа реализована стандартными API-функциями, которые вобщем- то детально описаны в MSDN-е. Ни слова о особенностях их функционирования под XP не написано, и видимо, я так понимаю, никаких особенностей и быть не должно, однако не работает ....
    А что значит напрямую не дает, каким же тогда образом ведется работа и где можно найти документацию ? Спасибо.
     
  4. ????

    ???? Гость

    GR
    Мне было интересно знать используется ли в программе что-то типа:
    asm:
    out dx, ax
    C:
    outport(...)
    .
    .
    .
    Или используеся CreateFile .... и подобные.
    Дело в том, что первые варианты используют привелигированные инструкции и могут выполняться только в Ring0, программы же выполняются в Ring3. Вариант - использования собственного драйвера (а они выполняются в Ring0), использование дополнительных модулей разными способами дающих необходимый результат. В 98 в виду её "незащищенности" в Ring3 можно было спокойно выполнять привелигированные инструкции почти без проблем, в ХР с этим строго.
    Если используется что-то типа
    Код (Text):
    hPort = CreateFile (lpszPortName, // Pointer to the name of the port
              GENERIC_READ | GENERIC_WRITE,
                     // Access (read-write) mode
              0,      // Share mode
              NULL,     // Pointer to the security attribute
              OPEN_EXISTING,// How to open the serial port
              0,      // Port attributes
              NULL);    // Handle to port with attribute
                     // to copy
    то тут уже надо разбираться посерьёзней.
     
Загрузка...
Похожие Темы - WinXP проблема COM
  1. malor
    Ответов:
    0
    Просмотров:
    5.685
  2. malor
    Ответов:
    1
    Просмотров:
    5.734
  3. AgniXRudra
    Ответов:
    2
    Просмотров:
    52
  4. Zloikaktus
    Ответов:
    0
    Просмотров:
    30
  5. c0de3r
    Ответов:
    5
    Просмотров:
    153
Статус темы:
Закрыта.

Поделиться этой страницей