USR-TCP232-302 を使ってみました 2019/05/06

RS232C - Ethernet 変換アダプタを TCP Server モードで使ってみました。Amazon などで¥4,000. 程度で販売されているものです。
 
 ※UART の時は日本語マニュアルのあるマイクロテクニカの [ETH-UA7] が分かりやすくて良いと思います。

■設定

 設定はブラウザで行えます。アドレスバーに "http://192.168.0.7/" を入力すると、ログインメニューが表示されます。
 Username、Password とも "admin" を入力します。


 

 Local Port Number20108 にします。これがクライアント側から接続するときのポート番号になります。
  20108 はデフォルト値のようです。
 ・Work Mode は 「TCP Server」 にします。
 [Save] ボタンをクリックすると、変更が反映されます。

  

■設定ツール
 設定ツールでも同じことが行えます。
 [Search Device] をクリックすると、ネットワークに接続されている機器が表示されます。

 設定ツールですが、メーカーのサイトでは見つけにくかったので、
 マイクロテクニカのイーサネット-UARTコンバーター [ETH-UA7] のサポートソフトウェアからダウンロードしました。
 日本語マニュアルもあり、型番は違いますがとても分かりやすいです。

  


■クライアント側のプログラム

 テストに使った Delphi のソースコードです。

unit Unit4;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient,IdGlobal;
type
  TForm4 = class(TForm)
    IdTCPClient1: TIdTCPClient;
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
var
  cmd, res : string;
  StrText : String;
  B : TIdBytes;
begin
  cmd := '123456';

  with IdTCPClient1 do begin
    // タイムアウトを設定
    ConnectTimeout := 1000;
    ReadTimeout := 1000;

    // IPアドレス
    Host := '192.168.0.7';
    // ローカルポート番号を設定
    Port := 20108;
    try
      // 接続
      if not Connected then
        Connect;
      if Connected then begin
        IOHandler.ReadTimeout := ReadTimeout;
        // コマンド送信
        B := TIdBytes(TEncoding.ANSI.GetBytes(cmd));
        IOHandler.Write(B, cmd.Length);
        Sleep(100);

        // レスポンス受信
        SetLength(B, 0);
        IdTCPClient1.IOHandler.ReadBytes(B, -1);
        res := TEncoding.ANSI.GetString(B);
        Edit1.Text := res;
        // 切断
        Disconnect;
      end;
    except
      // エラーメッセージ
      on E: Exception do begin
        StrText := E.ClassName + sLineBreak + E.Message;
        Application.MessageBox(PChar(StrText), '情報', MB_ICONINFORMATION);
      end;
    end;
  end;
end;

end.