lazarus와 nodave 구성 요소를 사용하고 있는데 디지털 입력의 상태를 읽고 싶습니다. I45.6 이더넷을 통해 연결하고 있으며, 연결이 있다고 말할 수있는 한 CPU는 슬롯 3에 있고 통신 카드는 슬롯 5입니다.libnodave getbit 함수가 어떤 값도 반환하지 않습니다.
이렇게하려면 GetBit
기능을 사용하려고합니다.
begin
IF
nodave1.GetBit(45,6)
then
showmessage('got it')
else
showmessage('not got it')
end;
아무리 응답을받을 수 없습니다. 그것은 구성 요소 속성 또는 다른 경우 확실하지 않습니다. 여기
는 = 구성 요소가 지역 = daveinputs 및 프로토콜을 설정, protoISOTCP 전체 코드입니다unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Spin,
StdCtrls, NoDaveComponent;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
NoDave1: TNoDave;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure NoDave1Connect(Sender: TObject);
procedure NoDave1Disconnect(Sender: TObject);
procedure NoDave1Read(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
nodave1.CPURack:=spinedit1.Value;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
nodave1.Active:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
nodave1.Disconnect;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if
nodave1.GetBit(46,5,nil,0,0)
then
showmessage('got it')
else
showmessage('dont got it')
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
nodave1.IPAddress:=edit1.text;
end;
procedure TForm1.NoDave1Connect(Sender: TObject);
begin
form1.Caption:='connected'
end;
procedure TForm1.NoDave1Disconnect(Sender: TObject);
begin
form1.caption:='disconnected';
end;
procedure TForm1.NoDave1Read(Sender: TObject);
begin
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
nodave1.CPUSlot:=spinedit2.Value;
end;
end.
나는 C와 델파이에 libNoDave 감동했지만 내 생각 엔 당신이 있다는 것입니다 이후 8 년 됐어