Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

работа с портом(232) через DLL и COM .Почему???   Найти похожие ветки 

 
Talla2k ©   (2004-04-26 17:06) [0]

Проблема такая:
в программе необходимо обращаться к порту(232) через мою dll и через вражеский COM обьект.
Написал.Работает,НО!!!
если после работы с вражеским COM обьектом я вызываю свою DLL,то не приходит ничего...(из порта 232)
Причем,COM обьект после работы закрываю,более того PortMon тоже говорит,что порт(232) закрывается как после работы COM обьекта
так и после вызова моей DLL.
Вот,даже решил выложить мониторинг порта (может так понятней будет...)

ЭТО ЧЕРЕЗ ВРАЖЕСКИЙ COM-Обьект
IRP_MJ_CREATE                             Options: Open
IOCTL_SERIAL_SET_QUEUE_SIZE InSize: 1024 OutSize: 4096
IOCTL_SERIAL_GET_BAUD_RATE
IOCTL_SERIAL_GET_LINE_CONTROL
IOCTL_SERIAL_GET_CHARS
IOCTL_SERIAL_GET_HANDFLOW
IOCTL_SERIAL_GET_BAUD_RATE
IOCTL_SERIAL_GET_LINE_CONTROL
IOCTL_SERIAL_GET_CHARS
IOCTL_SERIAL_GET_HANDFLOW
IOCTL_SERIAL_SET_BAUD_RATE Rate: 38400
IOCTL_SERIAL_CLR_RTS
IOCTL_SERIAL_CLR_DTR
IOCTL_SERIAL_SET_LINE_CONTROL StopBits: 1 Parity: NONE WordLength: 8
IOCTL_SERIAL_SET_CHAR   EOF:0 ERR:0 BRK:0 EVT:d XON:11 XOFF:13
IOCTL_SERIAL_SET_HANDFLOW Shake:80000000 Replace:80000003 XonLimit:512 XoffLimit:20
IOCTL_SERIAL_SET_TIMEOUTS RI:25 RM:0 RC:5000 WM:0 WC:0
IOCTL_SERIAL_SET_DTR
IOCTL_SERIAL_SET_RTS
IOCTL_SERIAL_PURGE              Purge: TXABORT
IOCTL_SERIAL_PURGE              Purge: TXCLEAR RXCLEAR
IOCTL_SERIAL_GET_COMMSTATUS
IRP_MJ_READ                            Length 6: 1B 61 A0 1B 61 80
IRP_MJ_READ                            Length 3: 1B 61 80
IRP_MJ_WRITE                            Length 1: 11
IRP_MJ_WRITE                            Length 2: 1B 41
IOCTL_SERIAL_PURGE             Purge: TXABORT
IOCTL_SERIAL_PURGE             Purge: TXCLEAR RXCLEAR
IOCTL_SERIAL_GET_COMMSTATUS
// ну...там,дальше обмен пошел
IRP_MJ_CLEANUP
IRP_MJ_CLOSE

А ЭТО ВЫЗОВ МОЕЙ DLL,после работы вражеского COM-обьекта
(напомню,если не вызывать вражеский COM-обьект,то все работает...)
IRP_MJ_CREATE                         Options: Open
IOCTL_SERIAL_GET_BAUD_RATE
IOCTL_SERIAL_GET_LINE_CONTROL
IOCTL_SERIAL_GET_CHARS
IOCTL_SERIAL_GET_HANDFLOW
IOCTL_SERIAL_GET_BAUD_RATE
IOCTL_SERIAL_GET_LINE_CONTROL
IOCTL_SERIAL_GET_CHARS
IOCTL_SERIAL_GET_HANDFLOW
IOCTL_SERIAL_SET_BAUD_RATE          Rate: 38400
IOCTL_SERIAL_CLR_RTS
IOCTL_SERIAL_CLR_DTR
IOCTL_SERIAL_SET_LINE_CONTROL     StopBits: 1 Parity: NONE WordLength: 8
IOCTL_SERIAL_SET_CHAR   EOF:0 ERR:0 BRK:0 EVT:d XON:11 XOFF:13
IOCTL_SERIAL_SET_HANDFLOW         Shake:80000000 Replace:80000003 XonLimit:2048 XoffLimit:512
IOCTL_SERIAL_SET_TIMEOUTS       RI:-1 RM:0 RC:0 WM:0 WC:0
IOCTL_SERIAL_SET_WAIT_MASK          Mask: RXFLAG RLSD
IOCTL_SERIAL_PURGE                  Purge: TXCLEAR
IOCTL_SERIAL_PURGE                  Purge: RXCLEAR
IOCTL_SERIAL_SET_TIMEOUTS      RI:0 RM:25 RC:100 WM:0 WC:0
IOCTL_SERIAL_PURGE                       Purge: TXCLEAR
IOCTL_SERIAL_PURGE                       Purge: RXCLEAR
IOCTL_SERIAL_PURGE                       Purge: TXABORT
IRP_MJ_READ                                     Length 0:  
// вот,ничего не приходит...
IRP_MJ_READ                                     Length 0:
IRP_MJ_READ                                     Length 0:
IRP_MJ_READ                                     Length 0:
// ну ... и так далее
IRP_MJ_CLEANUP
IRP_MJ_CLOSE

Не могу понять в чем дело...
Вроде и сброс делаю в начале работы (PurgeComm) и закрываю все(closehandle)


 
tesseract ©   (2004-04-26 19:08) [1]

Судя по всему вражеский объект handle не осовобождает. А логи, если не вызывать объект отличаются???? Может он меняет настройки порта. - У тебя например не выставлен размер буфера приёма/передачи.


 
Talla2k ©   (2004-04-26 20:21) [2]

>Судя по всему вражеский объект handle не осовобождает.
А как проверить???Сказать честно,ДОЛЖЕН освобождаться.Ведь все действия у меня в потоке и когда поток заканчивается,то он все сам мочит...
>А логи, если не вызывать объект отличаются????
Не понял вопроса.
>У тебя например не выставлен размер буфера приёма/передачи.
Не,это не из-за этого.100%


 
Jack128 ©   (2004-04-26 20:40) [3]


> А как проверить???
у тя в dll порт открывается? Если да, то вражий ком объект порт отпускает..


 
Talla2k ©   (2004-04-26 20:44) [4]

>у тя в dll порт открывается? Если да, то вражий ком объект порт отпускает..
Да,конечно...Ведь я даже лог монитора выложил.


 
Jack128 ©   (2004-04-26 21:02) [5]


> Talla2k ©   (26.04.04 20:44)
угу - туплю.

а асцилогрофом не пытался проверить реально в порт приходит что нить?


 
Talla2k ©   (2004-04-26 21:58) [6]

Короче,всем спасибо разобрался.
Оказывается ВРАЖЕСКИЙ COM обьект посылал XOFF и соответственно устройство молчало.Сделал XON из своей DLL и все заработало.

НО,рву себе волосы на лоб... ПОЧЕМУ,PORTMON промолчал???Ведь если посылается XOFF ,то при повторном вызове COM-обьекта ОН ПРОСТО ОБЯЗАН послать XON что-бы устройство разморозилось.(а он не посылает)



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.041 c
4-1081779841
Евгения
2004-04-12 18:24
2004.05.30
Чем лучше пользоваться для работы с файлами и каталогами?


1-1084895972
Beglec
2004-05-18 19:59
2004.05.30
Как объекту в Delhi присвоить цвет HTML. Например: color #B7C3D7


14-1084158197
Alex Konshin
2004-05-10 07:03
2004.05.30
Возникновение жизни


6-1081931225
Makhanev A.S.
2004-04-14 12:27
2004.05.30
Sockets: SysError, code = 1400...


4-1081638815
Gott
2004-04-11 03:13
2004.05.30
Уникальное сообщение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский