シリアル通信ソフトの作り方:Delphiバージョン(その3)
31-May-'08 00:12
Age: 2 yrs



Category: PSoC



5月25日の手順でRS232Cシリアル通信ターミナルとしてデータの受信動作は出来るようになっています(勿論、このままでUSBやBluetooth無線でも繋がります;例えば、USBシリアル変換ケーブルやBluetoothモデムを使用)。残りの手順はユーザインタフェース(UI)を使い易くするためのコードです。右のキャプチャ画像は出来上がりのソフトを動作させているところです。

6)フォーム上のボタンをダブルクリックするとOnClickイベントのエディタ画面にジャンプするので以下のようにコードします。

ポートをオンオフするボタン
-----------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin

  if MSComm1.PortOpen=true then
    begin
      MSComm1.PortOpen := false; // シリアル通信ポートを閉じる
      Button1.Caption := '通信 = Off'; // 通信ボタン1の表示を”Off”に
    Button4.Enabled := false; // 送信ボタンを使用不可にする
      ComboBox1.Enabled := true; // コンボボックスを使用可にする
      ComboBox2.Enabled := true; //
      Panel1.Color := clGray ; // 表示灯を消灯に
    end
  else
    begin
      MSComm1.PortOpen := true; // シリアル通信ポートを開く
      Button1.Caption := '通信 = On'; // 通信ボタン1の表示を”On”に
    Button4.Enabled := true; // 送信ボタンを使用可にする
      ComboBox1.Enabled := false; // コンボボックスを使用不可にする
      ComboBox2.Enabled := false; //
      Panel1.Color := clLime ; // 表示灯を点灯に(明るい緑)
    end;

end;
-------------------------------------------------

受信したテキストを保存するボタン
-------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin

    with SaveDialog1 do // SaveDialog1をデフォルトオブジェクトとして
    begin
      Filter := 'Text(*.txt)|*.txt|All(*.*)|*.*'; // FileNameのフィルタ
      if Execute=True then // 保存ダイアログでOKボタンが押されたとき
        begin
          Memo1.Lines.SaveToFile(FileName); // Memo1の受信テキストを保存
        end;
    end;

end;
---------------------------------------------------

Memo1の受信テキストを消去するボタン
---------------------------------------------------
procedure TForm1.Button3Click(Sender: TObject);
begin

  Memo1.Lines.Clear; // Memo1の受信テキストを消去

end;
---------------------------------------------------

Edit1に入力したテキストを送信するボタン
---------------------------------------------------
procedure TForm1.Button4Click(Sender: TObject);
begin

    MSComm1.Output := Edit1.Text + Char(13) + Char(10); // Edit1.Text+CR+LFを送信

end;
---------------------------------------------------

7)COMポート番号と通信速度のコンボボックスの選択肢を変更するとき、コンボボックスをダブルクリック(又はEventsタブを開きOnChangeイベントの白地をダブルクリック)してエディタを起動して以下のようにコードします。

ComboBox1でCOMポート番号の選択
---------------------------------------------------
procedure TForm1.ComboBox1Change(Sender: TObject);
begin

  MSComm1.CommPort := StrToInt(ComboBox1.Text); // テキスト番号を整数に変換して設定
  StatusBar1.Panels[0].Text := 'COM' + ComboBox1.Text + ' ' + MSComm1.Settings; // ステータス表示

end;
----------------------------------------------------

ComboBox2で通信速度の選択
----------------------------------------------------
procedure TForm1.ComboBox2Change(Sender: TObject);
begin

  MSComm1.Settings := ComboBox2.Text + ',n,8,1'; // テキスト形式の設定値変更( '9600,n,8,1'など )
  StatusBar1.Panels[0].Text := 'COM' + ComboBox1.Text + ' ' + MSComm1.Settings; // ステータス表示

end;
----------------------------------------------------

補足:通信ケーブルが外れたり通信エラーなどでターミナルソフトがクラッシュするのを避けるためには、前回(その2)のMSComm1のOnCommイベントで通信エラーなどの処理(caseのcomEventBreakなどイベント値を追加)も必要です。また、Memo1のテキストは上下にスクロールできるようにプロパーティ初期値を変更しておきます。








<- Back to: メイン ・セクション

サイト内のページ検索

Searchword:

Search in:


(上のページ検索は通常ページのみでブログ風ニュースの内容は検索できません)