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

Вниз

Помогите справиться с 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 вся ветка

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

Наверх





Память: 0.46 MB
Время: 0.032 c
1-1096359082
46_55_41_44
2004-09-28 12:11
2004.10.10
Не печатаются цвета из FastReport


1-1096300966
Aspi
2004-09-27 20:02
2004.10.10
Полоса прокрутки в Memo.


3-1095248749
sirsergio
2004-09-15 15:45
2004.10.10
Как подавить изменение курсора во время выполнения SQL запроса


1-1096278101
DelphiLexx
2004-09-27 13:41
2004.10.10
SendMessage


3-1094990342
Snip
2004-09-12 15:59
2004.10.10
IB и Boolean (TDBCheckBox)





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