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

Вниз

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

 
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 вся ветка

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

Наверх




Память: 0.51 MB
Время: 0.043 c
14-1102569270
NewDelpher
2004-12-09 08:14
2005.01.02
Поле чудес. Соц. опрос :)


1-1103291371
Пассажир бронепоезда
2004-12-17 16:49
2005.01.02
Цветные PopupMenu


3-1100425554
Dell3r
2004-11-14 12:45
2005.01.02
Сортировка в DBGrid


3-1102082356
korvin
2004-12-03 16:59
2005.01.02
Неправильный результат в процедуре


1-1103525998
Jeka
2004-12-20 09:59
2005.01.02
Кликнуть по строке ListBox