Управление изображением на мониторе через COM порт

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Друг Кота
Сообщения: 6282
Зарегистрирован: Чт май 13, 2010 23:42:03
Откуда: Минск

Сообщение Murlock »

он получается прописанным по всем правилам. см. секцию uses.
" Если на небе есть ангелы, то, их небесное воинство построено на принципах мафии"
У.Н. Румфорд.
----------------------------------------
http://www.youtube.com/watch?v=qWfIYU9Zzs4 А.К. "Легион"
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2409
Зарегистрирован: Ср дек 03, 2008 21:00:19

Сообщение 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;
(\_(\
(=' :') радиоКотЭ
(,('')('')
Реклама
Друг Кота
Сообщения: 6282
Зарегистрирован: Чт май 13, 2010 23:42:03
Откуда: Минск

Сообщение Murlock »

это уже есть в прописанном юните, и подобного в Вашей программе дописывать не надо. просто вызывайте нужные Вам функции по именам в процедуре обработки события таймера.
только повторю еще:
initdriver следует вызвать событием Form1.OnCreate
Donedriver следует вызвать событием Form1.OnDestroy
это обязательно нужно сделать
и нигде их больше не вызывать.
Ваши основные функции - байтовые InPort и OutPort.
" Если на небе есть ангелы, то, их небесное воинство построено на принципах мафии"
У.Н. Румфорд.
----------------------------------------
http://www.youtube.com/watch?v=qWfIYU9Zzs4 А.К. "Легион"
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2409
Зарегистрирован: Ср дек 03, 2008 21:00:19

Сообщение FRIM@N »

Form1.OnCreate просто дописать перед initdriver или в форме что нибудь делать?
(\_(\
(=' :') радиоКотЭ
(,('')('')
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 6282
Зарегистрирован: Чт май 13, 2010 23:42:03
Откуда: Минск

Сообщение Murlock »

выбираете форму, кликаете событие OnCreate, вбиваете в него initdriver. и всё. тоже самое делаете для OnDestroy и doneDeriver. внутри события OnTimer обращаетесь в порт и к объектам окна.
" Если на небе есть ангелы, то, их небесное воинство построено на принципах мафии"
У.Н. Румфорд.
----------------------------------------
http://www.youtube.com/watch?v=qWfIYU9Zzs4 А.К. "Легион"
Реклама
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

Хм, а что за зверь giveio.pas? Откуда он взялся?

Чего-то я отстал от обсуждения.
Знание - сила!
Реклама
Кошка, гуляющая сама по себе
Аватара пользователя
Сообщения: 15568
Зарегистрирован: Вс ноя 14, 2010 15:23:30

Сообщение ko666ka »

Пухич писал(а):Хм, а что за зверь giveio.pas? Откуда он взялся?

Чего-то я отстал от обсуждения.
http://radiokot.ru/forum/viewtopic.php?p=658398#p658398
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

Агааааа.... Понятно.
Знание - сила!
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2409
Зарегистрирован: Ср дек 03, 2008 21:00:19

Сообщение FRIM@N »

http://kladovka.net.ru/index.cgi?pid=list&rid=310 вт отсюда я его притащил
(\_(\
(=' :') радиоКотЭ
(,('')('')
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2409
Зарегистрирован: Ср дек 03, 2008 21:00:19

Сообщение 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;
(\_(\
(=' :') радиоКотЭ
(,('')('')
Друг Кота
Сообщения: 6282
Зарегистрирован: Чт май 13, 2010 23:42:03
Откуда: Минск

Сообщение Murlock »

туда надо было написать только одно слово. initdriver. зачем Вы так всё усложняете? :)
" Если на небе есть ангелы, то, их небесное воинство построено на принципах мафии"
У.Н. Румфорд.
----------------------------------------
http://www.youtube.com/watch?v=qWfIYU9Zzs4 А.К. "Легион"
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2409
Зарегистрирован: Ср дек 03, 2008 21:00:19

Сообщение 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................
(\_(\
(=' :') радиоКотЭ
(,('')('')
Друг Кота
Сообщения: 6282
Зарегистрирован: Чт май 13, 2010 23:42:03
Откуда: Минск

Сообщение 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................

этого не нужно
Последний раз редактировалось Murlock Вс дек 26, 2010 14:27:57, всего редактировалось 1 раз.
" Если на небе есть ангелы, то, их небесное воинство построено на принципах мафии"
У.Н. Румфорд.
----------------------------------------
http://www.youtube.com/watch?v=qWfIYU9Zzs4 А.К. "Легион"
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2409
Зарегистрирован: Ср дек 03, 2008 21:00:19

Сообщение FRIM@N »

то есть открываю giveio.pas к нему вообще не прикасаюсь и под ним начинаю дописывать отсебятину?


procedure TForm1.FormCreate(Sender: TObject);
Begin
InitDriver;
end; и поставить это перед
это правильно.



это правильно , а зачем это ?
Последний раз редактировалось FRIM@N Вс дек 26, 2010 14:30:53, всего редактировалось 1 раз.
(\_(\
(=' :') радиоКотЭ
(,('')('')
Друг Кота
Сообщения: 6282
Зарегистрирован: Чт май 13, 2010 23:42:03
Откуда: Минск

Сообщение Murlock »

после того как вы прописали юнит в вашем проекте окно giveio.pas можете смело закрывать.
что вы имеете в виду под "под ним"?
" Если на небе есть ангелы, то, их небесное воинство построено на принципах мафии"
У.Н. Румфорд.
----------------------------------------
http://www.youtube.com/watch?v=qWfIYU9Zzs4 А.К. "Легион"
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2409
Зарегистрирован: Ср дек 03, 2008 21:00:19

Сообщение FRIM@N »

"под ним " ну под кодом giveio.pas

т.е. я его "правильно" открываю потом закрываю это окно,создаю новый проект и в него забиваю свою программу?ссылаясь на функции giveio.pas
(\_(\
(=' :') радиоКотЭ
(,('')('')
Друг Кота
Сообщения: 6282
Зарегистрирован: Чт май 13, 2010 23:42:03
Откуда: Минск

Сообщение Murlock »

наоборот:
1. сначала создаете ваш проект
2. добавляете в проект giveio.pas и закрываете это окно или просто его больше не трогаете, можете ходить туда для того что бы подсматривать названия процедур.
3. редактируете вашу программу (добавляете события....внутри вашей программы)
" Если на небе есть ангелы, то, их небесное воинство построено на принципах мафии"
У.Н. Румфорд.
----------------------------------------
http://www.youtube.com/watch?v=qWfIYU9Zzs4 А.К. "Легион"
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2409
Зарегистрирован: Ср дек 03, 2008 21:00:19

Сообщение FRIM@N »

ну я его открываю это 1 окно , а как мне открыть второе окно не закрывая первого?
(\_(\
(=' :') радиоКотЭ
(,('')('')
Друг Кота
Сообщения: 6282
Зарегистрирован: Чт май 13, 2010 23:42:03
Откуда: Минск

Сообщение Murlock »

листайте вкладки в окне с программным кодом. правой кнопкой мышки можно выбирать варианты для вкладок
" Если на небе есть ангелы, то, их небесное воинство построено на принципах мафии"
У.Н. Румфорд.
----------------------------------------
http://www.youtube.com/watch?v=qWfIYU9Zzs4 А.К. "Легион"
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2409
Зарегистрирован: Ср дек 03, 2008 21:00:19

Сообщение 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;

или что-то изменится?
Последний раз редактировалось FRIM@N Вс дек 26, 2010 15:06:59, всего редактировалось 1 раз.
(\_(\
(=' :') радиоКотЭ
(,('')('')
Ответить

Вернуться в «Интеграция с ПК»