Страница 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
http://kladovka.net.ru/index.cgi?pid=list&rid=310 вт отсюда я его притащил

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;

или что-то изменится?