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

Вниз

Работа с портами в Делфи   Найти похожие ветки 

 
mr_alexandr ©   (2004-10-28 21:21) [0]

Люди. ПОМОГИТЕЕЕ (очень надо). Как в Делфи обратифшись к порту (COM, LPT, GAME) ,предположим, заставить гореть светодиод подключенный к определенным выходам.


 
Alein ©   (2004-10-28 21:37) [1]

На Дельфи не нашёл, лови на С

main()
{
int data;
scanf("%d",&data);
outportb(0x378,data);
printf("Посылаем в порт число %d ",data);
}


 
GanibalLector ©   (2004-10-29 01:04) [2]

2 Alein
Что за бред?

2 mr_alexandr
Вот,как надо :

escapecommfunction(commhandle,SETDTR); // горит
escapecommfunction(commhandle,CLRDTR); //не горит

Не забудьте предварительно открыть порт и закрыть тоже надо...
>предположим, заставить гореть светодиод подключенный к определенным выходам
На вывод DTR! Не забывайте,что это черевато выходом порта из строя...ибо предварительно нужно все расчитать(напряжения типа...)


 
Klopan ©   (2004-10-29 11:32) [3]

вот под win9x

function getport(p:word):byte; stdcall;
begin
 asm
   push edx
   push eax
   mov  dx,p
   in   al,dx
   mov  @result,al
   pop  eax
   pop  edx
 end;
end;

Procedure Setport(p:word;b:byte);Stdcall;
begin
 asm
   push edx
   push eax
   mov dx,p
   mov al,b
   out dx,al
   pop  eax
   pop  edx
 end;
end;


для winnt нужно писать драйвер

http://valery-us4leh.narod.ru/XpCoding/XPlpt.html


 
Маг Похмеляйнен   (2004-10-29 12:18) [4]

Ничего не надо писАть, всё уже написано.
Ищите DlPortIo и WinIo через Гоголя и Яндекса.
То, что поможет вам.


 
pavel_guzhanov   (2004-10-29 16:29) [5]

Правильно, WinIO работает под всеми виндами, только надо самому написать файл объявлений функций на delphi, по крайней мере в той версии, которой я пользовался, было все только под С++. Если интересно, пиши на мыло, пришлб и WinIO, и паскалевский файл, и небольшой примерчик с пояснениями. Кстати, не знаю, хватит ли мощности порту, чтобы зажечь светодиод. Я паял промежуточную схемку...


 
pavel_guzhanov   (2004-10-29 16:30) [6]

вот только ответить смогу не раньше понедельника: Что поделать, выходные....


 
GanibalLector ©   (2004-10-29 18:45) [7]

Вы что сговорились??? Какие  WinIO и зачем их искать???Самое простое и надежное решение приведено в [2].Куда еще проще?


 
mr_alexandr ©   (2004-10-29 20:34) [8]

СПАСИБО всем, попробую. А ВОТ МОЖНО-ЛИ ТОЖЕ САМОЕ ПРОДЕЛАТЬ С GAME-ПОРТОМ.


 
mr_alexandr ©   (2004-10-29 20:37) [9]

А вот еще тупой вопрос. На com-порту один если один выход это DTR (4), то второй провод соединять с GND (5)?


 
jack128 ©   (2004-10-29 21:24) [10]

mr_alexandr ©   (29.10.04 20:37) [9]
не помешало бы


 
GEN++ ©   (2004-10-30 00:47) [11]

>второй провод соединять с GND (5)?
 "-" светодиода к ножке порта
 "+" светодиода через резистор 360 Ом к "+5В"


 
mr_alexandr ©   (2004-10-30 12:10) [12]

Ну а чтобы совсем показаться тупым, спрошу еще: дайте кто-нибудь процедурки открытия, закрытия порта и т.п.


 
GanibalLector ©   (2004-10-30 13:09) [13]



function LStr(const Source:Ansistring;Count:Integer):Ansistring;
begin
 Result:=Copy(Source,1,Count);
end;

function OpenComm(Mode:AnsiString):THandle;
var
 DCB : TDCB;
 TOut: TCommTimeouts;
 I:Integer;
 Bfr:AnsiString;
begin
 Bfr:=Mode;
 UniqueString(Bfr);
 I:=Pos(":",Bfr)-1;
 if I<=0 then I:=4;
 Result := CreateFile(PChar(LStr(Bfr,I)),GENERIC_READ or GENERIC_WRITE,
        0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

 GetCommState( Result, DCB) ;
 BuildCommDCB(PChar(Bfr),DCB);
 DCB.EvtChar := #13;
 SetCommState( Result, DCB) ;
 //
 TOut.ReadIntervalTimeout         := MAXDWORD;
 TOut.ReadTotalTimeoutMultiplier  := 0;
 TOut.ReadTotalTimeoutConstant    := 0;
 TOut.WriteTotalTimeoutMultiplier := 0;
 TOut.WriteTotalTimeoutConstant   := 0;
 SetCommTimeOuts( Result, TOut);
   SetCommMask(Result,EV_RLSD OR EV_RXFLAG);
   PurgeComm(Result,PURGE_TXCLEAR);      //clear transmit buffer
   PurgeComm(Result,PURGE_RXCLEAR);      //clear receive buffer
end;

function CloseComm(Handle:THandle):boolean;
begin
CloseHandle(Handle);
result:=true;
end;



Работать так :
Handle:=OpenComm("COM2:BAUD=19200 PARITY=N DATA=8 STOP=1");// хотя скорость и пр.тебе не нужны
 if Handle=INVALID_HANDLE_VALUE then begin result:=false;exit;end;
escapecommfunction(Handle,SETDTR); // горит
sleep(1000);
escapecommfunction(Handle,CLRDTR); //не горит
closecomm(Handle);


 
mr_alexandr ©   (2004-11-01 07:49) [14]

А com-порт выдержит присоединенную к нему реле. (не згорит)


 
Гость   (2004-11-17 04:51) [15]

Com Port Visual Control 1.1

Программа предназначена для визуального контроля, документирования и исследования процессов, происходящих в приёмопередатчике UART во время работы приложений использующих СОМ порт персонального компьютера. Работает в среде Windows 9x/ME/NT/2000/XP и имеет следующие возможности:

1. Постоянный мониторинг  всех восьми регистров микросхемы UART  :   базового, разрешения прерываний, запроса прерываний, формата данных, управления модемом, состояния приёмопередатчика, состояния модема, сверхоперативной памяти.  Контроллер имеет формат 8 x 8 - восемь регистров по восемь бит, при этом независимо для каждого регистра отображается:   состояние значений в байт (0-255) и HEX ($00-$FF) одновременно, и логическое состояние (1/0) бит 0-7 (1-2-4-8-16-32-64-128).

2. Запись в регистры значений в форматах HEX и байт, управление логическим (1/0) состоянием  бит, соответственно.  

3. Отслеживание изменений в регистрах  и ведение LOGa  согласно командам приёмопередатчика UART.

4. Ведение LOGa принятых и переданных данных на уровне машинных кодов (HEX, байт, состояние бит).

5. Просмотр и сохранение LOG файлов, поиск.

6. Имеется встроенный приёмопередатчик для стандартной настройки режимов порта:
биты данных, стоповые биты, скорость, чётность, контроль ошибок, возможность приёма и передачи текстовых данных и команд модема.

7. Индикатор контроля активного состояния команд UART (17 основных команд).

8. Возможность  контроля любого порта компьютера, с одновременным отображением
группы регистров и бит, где нулевой регистр -  базовый, остальные + 1…+7, соответственно. Ведение LOGa данных базового регистра.

                         Freeware

http://valery-us4leh.narod.ru/ComVC.html

http://valery-us4leh.narod.ru/ComVC.jpg

http://valery-us4leh.narod.ru/ComVC.zip



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

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

Наверх




Память: 0.49 MB
Время: 0.034 c
14-1101898920
olookin
2004-12-01 14:02
2005.01.02
Прогнозы на 6-й тур Лиги Чемпионов


1-1103232328
Фёдор Мегатронов
2004-12-17 00:25
2005.01.02
русский шрифт в консоли - как ?


3-1102067215
Влад
2004-12-03 12:46
2005.01.02
базы данных, DBgrid, вычесляемые поля


14-1102926403
Dimedrol
2004-12-13 11:26
2005.01.02
Принадлежит ли IP заданному дианазону ?


14-1102802617
by
2004-12-12 01:03
2005.01.02
Что-то затронуло ...





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