Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Помогите справиться с RTS последовательного порта   Найти похожие ветки 

 
dielectric ©   (2004-09-02 16:22) [0]

WinXP Устанавливаю в DCB dcb_RtsControlToggle RTS рухает через 10мс поле выдачи байта в линию, а нужно тютька в тютьку, использую EscapeCommFunction(PortH,CLRRTS) при dcb_RtsControlDisable по признаку EV_TXEMPTY рухает сразу же как устанавливается. Как же всётаки отследить последний байт
                          Заранее благодарен, Dielectric


 
Германн ©   (2004-09-03 02:08) [1]

Интересный вопрос! Узнаешь ответ - сообщи плиз!
Пока что "отследить последний байт" по EV_TXEMPTY, удавалось только при отключении аппаратного FIFO микросхемы UART.


 
dielectric ©   (2004-09-03 09:01) [2]

Пока что "отследить последний байт" по EV_TXEMPTY мне так и не удалось и при отключении аппаратного FIFO, RTS падает раньше (по осцилографу вижу), где то я слышал что EV_TXEMPTY появляется когда пуст буфер винды а не самого уарта. Кто скажет как прочитать регистр состояния порта в компе или какой другой способ определить конец выдачи, очень надо, пожалуйста. (напоминаю, у меня XP, не Win9X)
P.S. Даже на старом 51 уарте прерывание такое есть


 
Defunct ©   (2004-09-04 02:52) [3]

> P.S. Даже на старом 51 уарте прерывание такое есть

Отключить ком порты в текущей конфигурации винды. И работать с ними напрямую.

In/Out


 
Германн ©   (2004-09-05 03:28) [4]

2 Defunct ©   (04.09.04 02:52) [3]
>Отключить ком порты в текущей конфигурации винды. И работать с >ними напрямую.

>In/Out

Объясни тогда как? Как в NT работать "напрямую с портами"!
Без драйвера режима ядра?


 
dielectric ©   (2004-09-06 08:49) [5]

Я как бы сделал "прямое управление", т.е. напрямую запрашиваю байт состояния порта, RTS вырубается вовремя, но только при посредстве giveio.sys  

initialization
lpServiceArgVectors:=nil;
hSCMan:=OpenSCManager(Nil,Nil,SC_MANAGER_ALL_ACCESS);
hService:=CreateService(hSCMan,"giveio","giveio",SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER,
     SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,PChar(ExtractFilePath(ParamStr(0))+"giveio.sys"),
     nil,nil,nil,nil,nil);
If hService<>0 then CloseServiceHandle(hService);
hService:=OpenService(hSCMan,"giveio",SERVICE_ALL_ACCESS);
If hService<>0 then
 begin
  StartService(hService,0,PChar(lpServiceArgVectors));
  CloseServiceHandle(hService);
 end;
hDevice:=CreateFile("\\.\giveio",GENERIC_READ or GENERIC_WRITE,0,PSECURITY_DESCRIPTOR(nil),OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
 CloseHandle(hDevice);
end.

вырезал из dataport.pas
я так понял стандартными способами х. добьёшься


 
Германн ©   (2004-09-07 02:49) [6]

Ну, я бы уточнил бы. "Стандартными" способами можно и нужно добиваться. Но "стандартный" для NT способ - написание драйвера!


 
dielectric ©   (2004-09-10 10:57) [7]

По любому придётся использовать нерегламентированые функции ядра, тобишь получиться тот же самый giveio



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

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.029 c
4-1094127765
dielectric
2004-09-02 16:22
2004.10.10
Помогите справиться с RTS последовательного порта


1-1096266185
samumka
2004-09-27 10:23
2004.10.10
События в TDBGrid ?


14-1094544398
9k33
2004-09-07 12:06
2004.10.10
Альтернатива для RENT A CODER


1-1095775737
hgd
2004-09-21 18:08
2004.10.10
Как залить Bitmap одним цветом?


9-1086797256
karlsn
2004-06-09 20:07
2004.10.10
ии в игре типа "генералов"





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский