Delphi で IP Sensor 9201 を使ってみる
ネットワークを介して、入力信号 4 点を取り込むボードです。リンクは、こちらです。
部品を実装していないだけで、ボードとしては、8 点入力に対応しているようです。
IPアドレスのデフォルト値は、"192.168.0.100"です。
ブラウザで、192.168.0.100 を開き、ユーザー名:admin パスワード:12345678 を入力すると、
I/O のチェックや、IP アドレス、パスワードの変更が行えるユーティリティが立ち上がります。
添付の CD-ROM に英語と中国語のマニュアルが入っています。
VC++, VB のサンプルも入っていますが、同梱の socket.dll を使うだけなので、解凍する必要はありません。
完成ボード2枚(テスト用スイッチ、LED付)、接続ケーブル、ACアダプター、これだけ入って \3,000.
※入手したものは、ボードの半田付け 8 か所の修正が必要でした。日本語の説明書が入っていました。
通信エラーの検出が出来ないようですが、マルチスレッドを使えば、どうにかなるかも・・・です。
同梱の socket.dll を Delphi で使う
※exe と同じフォルダに socket.dll をコピーして下さい。
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; //************************************************ // for IP Sensor 92XX // exe と同じフォルダに socket.dll が必要 //************************************************ // set up IP Address procedure setip( m_IPaddress: AnsiString); stdcall; external 'socket.dll' name 'setip'; // Setting IP Address // setup status of output(P6) function setdata(m_setdata: integer): integer; stdcall; // Setting P6 value external 'socket.dll' name 'setdata'; // Clear the output status (P6) function cleandata(m_cleandata: integer):integer; stdcall; // Clean P6 value external 'socket.dll' name 'cleandata'; // receive status of input(P6) function receivep6(): integer; stdcall; // Get P6 status external 'socket.dll' name 'receivep6'; // receive status of input (P5) function receive(): integer; stdcall; // Get P5 status external 'socket.dll' name 'receive'; function transfer(m_iostatus: integer): integer; stdcall; // Setting P6 status external 'socket.dll' name 'transfer'; function transferp5(m_iostatus: integer): integer; stdcall; // For 9203E(IP Motor) external 'socket.dll' name 'transferp5'; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var src: AnsiString; begin src := '192.168.0.100'; // IP アドレスをセット setip(src); // 8 ビット整数が返ってくる (通信異常は、検出できない) // 実装は、1, 4, 32, 128 の 4 点 Edit1.Text := IntToStr(255 - receive); end; end.