■ComPort Library (version 4.11) で、バーコードリーダー、電子天びんを使う

ComPort Library を、コンポーネントに登録して下さい。
※ダウンロード先は、ネットで検索してください。

フォームに、ComPortコンポーネントを配置します。



バーコードリーダ、電子天びんの読み込みに使ったコードは、下記です。
※バーコードを読んでみると、数回に分かれてしまうことがあるので、ComPort1RxChar 部分で小細工をしています。


ちなみに、ラトックシステム株式会社の Bluetooth RS-232C 変換アダプタ(REX-BT60)、または、
Wi-Fi RS-232C 変換アダプター(REX-WF60) を使うと、RS-232C 機器をワイヤレスで使うことができます。
リンクは、RATOC e2eStore REX-BT60REX-WF60 です。


unit CPortUnit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, CPort;

type
  TForm1 = class(TForm)
    ComPort1: TComPort;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure ComPort1RxBuf(Sender: TObject; const Buffer; Count: Integer);
    procedure ComPort1RxChar(Sender: TObject; Count: Integer);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private 宣言 }
    sResult : string;
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// 設定ダイアログを表示
procedure TForm1.Button1Click(Sender: TObject);
begin
  ComPort1.ShowSetupDialog;
end;

// 接続
procedure TForm1.Button2Click(Sender: TObject);
begin
  try
    ComPort1.Open;
  except
    ShowMessage('接続エラーです.');
  end;
end;

// 切断
procedure TForm1.Button3Click(Sender: TObject);
begin
  ComPort1.Close;
end;

// TriggersOnRxChar = False の時は、ここ
procedure TForm1.ComPort1RxBuf(Sender: TObject; const Buffer; Count: Integer);
begin
  ;
end;

// TriggersOnRxChar = True の時
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
  s : string;
begin
  Comport1.ReadStr(s, Count);
  // #13 は、バーコードリーダーの終端文字(改行コード CR)
  if Pos(#13, s) = 0 then
    sResult := sResult + s
  else begin
    Edit1.Text := sResult + s;
    sResult := '';
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text := '';
  with ComPort1 do begin
    Port := 'COM4';
    BaudRate := TBaudRate.br9600;
    DataBits := TDataBits.dbEight;
    StopBits := TStopBits.sbOneStopBit;
    with Parity do begin
      Bits := TParityBits.prNone;
      Check := False;
    end;
  end;
  // 前回の設定を読み込む
  Comport1.LoadSettings(TStoreType.stIniFile, ChangeFileExt(ParamStr(0), '.ini'));
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  // 設定を保存
  ComPort1.StoreSettings(TStoreType.stIniFile, ChangeFileExt(ParamStr(0), '.ini'));
end;

end.

ComPort Lib の標準設定ダイアログは、こんな感じです。



バーコードリーダー (CINO F560 :RS232Cタイプ) で読んでみました。



※ケーブルを作成する場合、結線は、ストレート RXD ,TXD, GND の3本だけOKです。
 ジェンダーチェンジャ(9PP-オスオス)が必要になります。
 また、ほとんどのRS-232Cバーコードリーダーは、Dsub-9pin の 9 番ピンに+5V、5 番ピン (GND) に 0V をつなぐと、
 外部のACアダプターは、不要になります。


電子天びん(A&D EK-150i :ストリームモード(常時出力)) の値を読んでみました
ターミネータは、CrLf (0D0A, #13#10) ですが、そのままのコードでOKでした。
実用するには、先頭2文字が、"ST"であれば、データが安定しているので、これを採用する・・・というような処理が必要です。



※電子天びん A&D EK-150i は、Dsub-9pin ストレートケーブルが必要です。
 メーカー、型番により、クロスの場合もるので、確認して下さい。
 また、ケーブルを作成する場合の結線は、RXD ,TXD, GND の3本だけでOKです。