MFC で mscomm コントロールを使うには
MFCでMSCommコントロールを使用するには、以下の手順に従います。
- MFC アプリケーションのリソースビューで、ダイアログエディターを起動する。
- ダイアログ上に、MSCOMMというクラス名のCOMコントロールを追加する。
- コントロールをダブルクリックすると、変数が自動生成され、それを使ってコントロールを操作できます。
- ダイアログクラスのヘッダファイルに#include を追加して、mscommコントロールのヘッダファイルをインクルードする。
- OnInitDialog() 関数で、コントロールを作成するためにコントロールの Create() 関数を呼び出して、対応するプロパティを設定します。例:
- BOOL CMyDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();// MSCommコントロールを作成します
m_Mscomm.Create(_T(“MSCOMM”), WS_CHILD | WS_VISIBLE, CRect(0, 0, 0, 0), this, IDC_MSCOMM);// コントロールのプロパティを設定します
m_Mscomm.SetPort(1); // シリアル番号を設定します
m_Mscomm.SetSettings(_T(“9600,N,8,1”)); // ボーレート、パリティ、データビット、ストップビットを設定しますreturn TRUE;
} - 制御の必要な場面では、制御のメンバー関数を利用して制御を行う。例えば、シリアルポートのオープンやデータ送信などがある。
- シリアルポートを開く
m_Mscomm.SetPortOpen(TRUE);// データを送信する
CString strData = _T(“Hello, World!”);
m_Mscomm.SetOutput(COleVariant(strData)); - ダイアログクラスのヘッダファイルに、コントロールのメッセージ対応関数を追加します。たとえば、
- afx_msg void CCommEventMscomm();
- ダイアログクラスのソースファイルでは、コントロールのイベントを処理するためのコントロールのメッセージマッピング関数を定義します。
- BEGIN_MESSAGE_MAP(CMyDlg, CDialogEx)
ON_EVENT(CMyDlg::IDC_MSCOMM, 1, OnCommEventMscomm, VTS_NONE)
END_MESSAGE_MAP()`void CMyDlg::OnCommEventMscomm()
{
// コントロールのイベント(データの受信など)を処理する
}
上述の手順により、MFCではMsCommコントロールを使用してシリアル通信を行うことができます。