Dobot Magician Wi-Fi (UDP) 2020/03/12
・2020/03/16 IdUDPServer1.SendBuffer の引数を変数に変更、isQueued を Falseに変更
■Dobot Magician Wi-Fi 接続の Delphi サンプルです。
Indy UDP Server コンポーネントを使っています。
UART 通信のサンプルでもあります。
※Wi-Fi アダプターは、前もって DobotStudio で 無線LANに登録しておく必要があります。
ポート番号は、8899 です。
unit DobotUDPTest; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdBaseComponent, IdComponent, IdGlobal, IdUDPBase, IdUDPServer, IdSocketHandle; type TForm6 = class(TForm) Button2: TButton; IdUDPServer1: TIdUDPServer; procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); private { Private 宣言 } public { Public 宣言 } end; var Form6: TForm6; implementation {$R *.dfm} // 吸引カップ ON / OFF procedure TForm6.Button2Click(Sender: TObject); var B : TIdBytes; i : integer; checkSum : Byte; host : string; port : word; begin SetLength(B, 8); // 送信データ B[0] := $AA; B[1] := $AA; B[2] := 2 + 2; // len = 2 + Payload Len; B[3] := 62; // Command ID; B[4] := 1; // ctrl r/w($01) = W, isQueued($02) = True; B[5] := 1; // isCtrlEnabled 吸引カップ 無効(0) / 有効(1) B[6] := 0; // isSucked 吸引カップ OFF (0) / ON (1) // チェックサム checkSum := 0; for i := 3 to 6 do checkSum := checkSum + B[i]; checkSum := $100 - checkSum; B[7] := checkSum; // 送信 host := '192.168.0.25'; port := 8899; IdUDPServer1.SendBuffer(host, port, Id_IPv4, B); end; procedure TForm6.FormCreate(Sender: TObject); // 起動と同時にポートをオープンし、受信を開始する begin IdUDPServer1.DefaultPort := 8899; IdUDPServer1.Active := True; end; procedure TForm6.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); // Dobot からの返信データ begin // isQueued($02) = true の時は、14文字.false では 8 文字 ShowMessage(Length(Adata).ToString); if (Length(Adata) >= 8) and (AData[3] = 62) then ShowMessage('SetEndEffectorSuctionCup OK'); end; end.