Страница 8 из 12
Re: Управление изображением на мониторе через COM порт
Добавлено: Сб дек 25, 2010 21:51:09
Murlock
он получается прописанным по всем правилам. см. секцию uses.
Re: Управление изображением на мониторе через COM порт
Добавлено: Сб дек 25, 2010 22:02:03
FRIM@N
понятно, т.е. после того как я ее правильно открыл меня интересуют процедура --мне потом новую дописывать или воткрытом файле дописать, и куда прописывать адрес порта и подрегистр интересующего меня вывода(ов)?
Код: Выделить всё
Procedure OutPort(port:word; value:byte);assembler;stdcall;
asm
mov al, value
mov dx, port
out dx, ax
end;
function InPort(port:word):byte;assembler;stdcall;
asm
mov dx,port
in al,dx
mov Result,al
end;
Re: Управление изображением на мониторе через COM порт
Добавлено: Сб дек 25, 2010 23:07:30
Murlock
это уже есть в прописанном юните, и подобного в Вашей программе дописывать не надо. просто вызывайте нужные Вам функции по именам в процедуре обработки события таймера.
только повторю еще:
initdriver следует вызвать событием Form1.OnCreate
Donedriver следует вызвать событием Form1.OnDestroy
это обязательно нужно сделать
и нигде их больше не вызывать.
Ваши основные функции - байтовые InPort и OutPort.
Re: Управление изображением на мониторе через COM порт
Добавлено: Сб дек 25, 2010 23:34:25
FRIM@N
Form1.OnCreate просто дописать перед initdriver или в форме что нибудь делать?
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 00:23:47
Murlock
выбираете форму, кликаете событие OnCreate, вбиваете в него initdriver. и всё. тоже самое делаете для OnDestroy и doneDeriver. внутри события OnTimer обращаетесь в порт и к объектам окна.
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 12:44:46
Пухич
Хм, а что за зверь giveio.pas? Откуда он взялся?
Чего-то я отстал от обсуждения.
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 12:48:18
ko666ka
Пухич писал(а):Хм, а что за зверь giveio.pas? Откуда он взялся?
Чего-то я отстал от обсуждения.
http://radiokot.ru/forum/viewtopic.php?p=658398#p658398
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 13:01:13
Пухич
Агааааа.... Понятно.
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 13:01:53
FRIM@N
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 13:48:17
FRIM@N
наверное не так потому что каша какая-то получилась,и как правильно вызвать OnCreate , я нашел что нужно 2 раза щелкнуть по пустой форме и он сам сгенерируется, собственно так и произошло но исчез код giveio да и в форме ничего не появлялось
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
Procedure InitDriver;
Begin
lpServiceArgVectors:=nil;
DeviceName:='giveio';
hSCMan:=OpenSCManager(Nil,Nil,SC_MANAGER_ALL_ACCESS);
hService:=CreateService(
hSCMan,
pChar(DeviceName),
pChar(DeviceName),
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,pChar(DeviceName),SERVICE_ALL_ACCESS);
If hService<>0 then
begin
StartService(hService,0,PChar(lpServiceArgVectors));
CloseServiceHandle(hService);
end;
hDevice:=CreateFile(pChar('\\.\'+DeviceName),
GENERIC_READ or GENERIC_WRITE,0,PSECURITY_DESCRIPTOR(nil),
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
end;
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 14:01:28
Murlock
туда надо было написать только одно слово. initdriver. зачем Вы так всё усложняете?

Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 14:12:05
FRIM@N
procedure TForm1.FormCreate(Sender: TObject);
Begin
InitDriver;
end; и поставить это перед
Procedure InitDriver;
Begin
lpServiceArgVectors:=nil;
DeviceName:='giveio';
hSCMan:=OpenSCManager(Nil,Nil,SC_MANAGER_ALL_ACCESS);
hService:=C................
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 14:23:50
Murlock
файл giveio.pas не трогайте. никакаих процедур и функций оттуда не переносите в вашу программу. внутри вашей программы к процедурам и функциям из giveio.pas обращайтесь толко по именам с параметрами.
FRIM@N писал(а):procedure TForm1.FormCreate(Sender: TObject);
Begin
InitDriver;
end; и поставить это перед
это правильно.
Procedure InitDriver;
Begin
lpServiceArgVectors:=nil;
DeviceName:='giveio';
hSCMan:=OpenSCManager(Nil,Nil,SC_MANAGER_ALL_ACCESS);
hService:=C................
этого не нужно
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 14:27:13
FRIM@N
то есть открываю giveio.pas к нему вообще не прикасаюсь и под ним начинаю дописывать отсебятину?
procedure TForm1.FormCreate(Sender: TObject);
Begin
InitDriver;
end; и поставить это перед
это правильно.
это правильно , а зачем это ?
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 14:30:28
Murlock
после того как вы прописали юнит в вашем проекте окно giveio.pas можете смело закрывать.
что вы имеете в виду под "под ним"?
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 14:33:21
FRIM@N
"под ним " ну под кодом giveio.pas
т.е. я его "правильно" открываю потом закрываю это окно,создаю новый проект и в него забиваю свою программу?ссылаясь на функции giveio.pas
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 14:39:00
Murlock
наоборот:
1. сначала создаете ваш проект
2. добавляете в проект giveio.pas и закрываете это окно или просто его больше не трогаете, можете ходить туда для того что бы подсматривать названия процедур.
3. редактируете вашу программу (добавляете события....внутри вашей программы)
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 14:47:45
FRIM@N
ну я его открываю это 1 окно , а как мне открыть второе окно не закрывая первого?
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 14:54:14
Murlock
листайте вкладки в окне с программным кодом. правой кнопкой мышки можно выбирать варианты для вкладок
Re: Управление изображением на мониторе через COM порт
Добавлено: Вс дек 26, 2010 14:59:43
FRIM@N
понятно
теперь мой проект должен начинатся с
Код: Выделить всё
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
то что генерируется по умолчанию самим дельфи
и далее уже писать свое
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
Begin
InitDriver;
end;
Procedure OutPort(port:word; value:byte);stdcall;
Function InPort(port:word):byte;stdcall;
в каком виде теперь выставить единицу на нужном выводе порта?
таким же макаром как
Код: Выделить всё
var
aa,e:word;
port,base,data:word;
{.........}
aa:=0;
base:=$3F8;
begin
port:=base+4;
data:=2;
outport(port,aa,data);
sleep(10);
port:=base+6;
или что-то изменится?