■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-BT60、REX-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です。