carcon999のブログ

12年間Y!ブログの記載を移行しました。電子工作関連の記事が多いです。

コンポーネントの利用方法

COMポート名の一覧取得コンポーネントは、ActiveXコントロールが利用できる開発環境であれば、利用できるはずですが、せっかくなので.net VC++で利用する場合の方法を例に挙げて示します。
※以下の例は、Visual Studio 2008 Express Edition VC++の例です。

■COMのインタフェース

★イベント:OnChange(void)
通信ポートの一覧に変化が発生した場合に通知されるイベントです。
起動直後は、イベント発生しません。

★プロパティ:EventEnable
true:OnChangeイベントが発生します。
false:OnChangeイベントが発生しなくなります。

★メソッド:GetComNames
COMポートの名称となる文字列が配列で取得できます。
通常は、OnChangeイベントが発生したら、本メソッドで一覧を取得し、リストボックスや、コンボボックスに、この文字を追加します。

■プログラミングの前準備

1.プロジェクトを新規作成し、Windows Formアプリケーションの雛形を作成します。

イメージ 1

2.ツールボックスを表示し、右クリックでメニューを表示し、『アイテムの選択』を選びます。

3.アイテム選択画面で、COMコンポーネントタブから、『PortName Class』を選択(左のチェックON)し、ONボタンを押下します。
イメージ 2

4.ツールボックス内に、PortName Classが追加されたので、それをドラッグ&ドロップで、Form1にドロップします。ついでに、ListBoxも追加し、一覧をリスト表示できるようにします。

■プログラミング
ゴチャゴチャ説明するまでもなく、ソースコードを載せます。

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
// イベント通知の有効化
axPortName1->EventEnable = true;

// COMポート一覧の更新
RedrawList();
}

private: System::Void axPortName1_OnChange(System::Object^ sender, System::EventArgs^ e)
{
// COMポート一覧の更新
RedrawList();
}

private: System::Void RedrawList( void )
{
// ポート名一覧の取得
System::Array^ aryString = (System::Array^)axPortName1->GetComNames();

// リストのクリア
listBox1->Items->Clear();

// ポート名一覧をリストBOXに表示
for(int i = 0 ; i < aryString->GetLength(0) ; i++){
listBox1->Items->Add*1;
}
}

*1:System::String^)aryString->GetValue(i