Com USB управление PASCAL
типа
if *условие* then
goto
[напряжение на контакт подалось]
else [не подалось].
Хочется сделать выключатель чего либо через реле, управляемым COM или USB портом. через паскаль.
Начальные знания - работа в паскале модулями DOS, GRAPH, CRT.
Очень надо. ПОМОГИТЕ!
Цитата:
Originally posted by YouRich
КАК УПРАВЛЯТЬ ПОРТОМ ЧЕРЕЗ ПАСКАЛЬ??? Именно мне нужно из паскаля подать напряжение (до 5 вольт) на какой нибудь контакт. и обесточивать его. т.е.
типа
if *условие* then
goto
[напряжение на контакт подалось]
else [не подалось].
Хочется сделать выключатель чего либо через реле, управляемым COM или USB портом. через паскаль.
Начальные знания - работа в паскале модулями DOS, GRAPH, CRT.
Очень надо. ПОМОГИТЕ!
КАК УПРАВЛЯТЬ ПОРТОМ ЧЕРЕЗ ПАСКАЛЬ??? Именно мне нужно из паскаля подать напряжение (до 5 вольт) на какой нибудь контакт. и обесточивать его. т.е.
типа
if *условие* then
goto
[напряжение на контакт подалось]
else [не подалось].
Хочется сделать выключатель чего либо через реле, управляемым COM или USB портом. через паскаль.
Начальные знания - работа в паскале модулями DOS, GRAPH, CRT.
Очень надо. ПОМОГИТЕ!
Из под НТ-ёвых винд не будет работать. Проще всего взять какой-нить микроконтроллер, навесить его на RS-232 и работать с портом чесным путем (открывая файл и выполняя чтение-запись в него).
Под ДОС-ом или виндой 9х можно программировать COM и LPT путем обращения непосредственно к портам. Вот, скажем тут написано: http://kazus.ru/modules/Content/shemes/691.html
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, LPTIO,
ExtCtrls, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
Lpt : TLptPortConnection;
public
function GetCurrentPort : byte;
function Pin2 : boolean;
procedure ButtonPin2;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var msg : AnsiString;
begin
Lpt := TLptPortConnection.Create;
//*********************************************************************
//Выполнение корневого кода}
//*********************************************************************
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Lpt.Destroy;
end;
function TForm1.GetCurrentPort : byte;
begin
GetCurrentPort:=LPT2;
end;
function TForm1.Pin2 : boolean ;
Var
d : boolean;
begin
d := true;
d := d and (1 = (1 and Lpt.ReadPort( (GetCurrentPort) ,0))) ;
Pin2 := d;
end;
procedure TForm1.ButtonPin2;
begin
Lpt.WritePort (GetCurrentPort,0,(1 xor Lpt.ReadPort( (GetCurrentPort) ,0) ));
end;
//___
procedure Delay(ms: Longint);
var TheTime: LongInt;
begin TheTime := GetTickCount + ms;
while GetTickCount < TheTime do
Application.ProcessMessages;
end;
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c : integer;
begin
if Pin2 = false then ButtonPin2; // Режим ожидания.
a:=1;
repeat;
a:=a+1;
ButtonPin2; // делаем колебание
delay(20);
until a = 150;
if Pin2 = true then ButtonPin2; // возврат в режим ожидания.
end;
end.
СДЕЛАНО ПО ШАБЛОНУ: СМОТРЕТЬ