Прошу помочь советом.... Как обратится (запись/чтение) к уже открытому (занятому), другой программой, COM порту (БЕЗ изменения параметром (скорость, чётность, и.т.п.)). ??? Я так понимаю надо хэндл получить, а как... ??? И будет ли это работать (и как) через ReadFile и WriteFile (если обращатся из другой проги с хэндлом порта)??? Желательно на ASM-e под Win98,2000,XP....
drsat Та прога, которая уже юзает порт, ты писал? Если да, то напиши своего рода менеджер, пока проще ниче не могу сказать
Уважаемый EvilsInterrupt (Злые Прерывания) Если-бы я это прогу писал, то тут и вопросов-бы не было (Я-бы никогда-бы не оставил порт открытым - уж на CloseHandle - ума-бы хватило) А вот у немцев (те кто это писал) видимо не хватило.... они закрывают его только при выходе хотя больше не юзают.... Прога хаспом защищена и сертификатами безопасности по этому надо на уровне портов решать, а прогу не трогать.... (пожелание Босса)
Ну перечисляй открытые хендлы портов в системе чтоб все хендлы (их очень много) не проверять - сверяй тип полученного хендла с константами OB_TYPE_ХХХХ
По подробнее написано в статье Ms Rem`a "3 метода работы с занятыми файлами". Там есть раздел поиск открытого хендла. Тебе еще наверняка придется проверять , относится ли найденный хендл , к твоей проге.
Прога хаспом... Что за хасп? drsat В 98 легко перехватывается обмен по COM-порту на уровне VXD-драйверов. Могу предложить вырезать из моего логгера все лишнее (см. аттач) и сделать перенаправление COM1,COM2->COM1 (например). Те если программа пишет в COM1, то ты пишешь в COM2, но драйвер все "сливает" в COM1, в котором действительно есть устройство. _181334929__Hook.arj
Chingachguk вот типа лог OpenComm:COM2 Result:EAX:c16c1364 WriteComm:port:c16c1364 cchRequested:00000005 Result:EAX:00000001 cchWritten:00000005 Sended buffer:1bh,2eh,52h,32h,3ah, ReadComm:port:c16c1364 cchRequested:00000010 Result:EAX:ffffffff cchReceived:00000010 Received buffer:4fh,52h,32h,2ch,31h,36h,31h,35h,31h,2ch,37h,37h,38h,35h,3bh,0dh , CloseComm:port:c16c1364 Result:EAX:c16c1365 Result:EAX:00000004 как выдрать из этого данные 4fh,52h,32h,2ch,31h,36h,31h,35h,31h,2ch,37h,37h,38h,35h,3bh,0dh, это ответ и должно быть что то типа этого 403.78 194.63
AHTLLIKA Там же исходники в архиве! Если прочитать буфер в ascii, получается такое: Код (Text): OR 2,1615 1,7785;.
тоесть сначала на СОМ порт идет запрос 1bh,2eh,52h,32h,3ah то есть: .R2: и на это он отвечает 4fh,52h,32h,2ch,31h,36h,31h,35h,31h,2ch,37h,37h,38h,35h,3bh,0dh то есть: OR2,16151,7785; 16151 = 403.78 7785 = 194.63 хз.. если 16151 / 403.78 получиться примерно 40 и потом если 7785 / 40 то получиться примерно 194.63 =)) че там меньше миллиметра идет ??
Заюзай port splitter - шарит один реальный порт на несколько виртуальных. И цепляй обе программы к виртуальным портам, если есть возможность