| Step1.メインウィンドウ作成 |
| |
ここでは、これから作成するプログラムの基本フォーム作成を行います。(詳しくは『4.1デジタル入力』でのStep1,Step2を参考にしてください。) |
| |
- Visual Studio 2008を起動し、新しいプロジェクト(プロジェクト名:Output)を作成します。
- プロジェクトにFBIDIO.LIB, FBIDIO.Hのパス設定を行い、FBIDIO.LIBファイルをリンクさせます。(詳しくは『4.1デジタル入力』のStep2を参照してください)
|
| Step2.単点出力/バイト出力/ワード出力/ダブルワード出力 |
| |
ここでは、I/Oモジュールのデータ出力ライン(OUT)より状態(ON/OFF)の出力を行うプログラムを作成します。(詳しくは『4.1デジタル入力』でのStep3,Step4を参考にしてください。) |
| |
■単点出力 |
| |
- 「表示」→「リソースビュー」を選択して リソースビューを表示します。
- Menuフォルダを展開して「IDR_MAINFRAME」を ダブルクリックします。
- 空白の部分(ヘルプの隣)をクリックし選択後、キャプションを入力します。「Output」と入力してください。
- 「Output」をクリックし、プルダウンメニューの空白部分をクリックし選択後、キャプションを入力します。「単点出力」と入力してください。
- 「単点出力」をクリックします。プロパティが表示されますので IDに「ID_OUTPUTSINGLE」と入力してください。
- 先程作成したプルダウンメニューの中の「単点出力」の上にマウスカーソルをもってきて 右クリックし「イベントハンドラの追加」を選択します。
- イベントハンドラウィザードの画面で、メッセージの種類を「COMMAND」、クラスの一覧を「COutputView」を選択し、関数ハンドラ名が「OnOutputsingle」になっていることを確認し、「追加して編集」をクリックします。
- ソリューションエクスプローラを表示し、ソースファイルフォルダを展開してOutputView.cppの最初の部分に #include “fbidio.h”を追加します。
- 「表示」→「クラスビュー」でクラスビューを表示し、COutputViewクラスを展開してOnOutputsingle関数に以下のコードを記述します。
(COutputViewクラスのOnOutputsingle 関数のコード サンプリング)
|
|
void COutputView::OnOutputsingle() {
// TODO: この位置にコマンド ハンドラ用のコードを追加してください
INT nRet; // 関数の実行結果
INT nBuffer[4]; // 状態を設定するバッファ
HANDLE hDeviceHandle; // デバイスハンドル
// 出力接点の状態を設定します
nBuffer[0] = 1;
nBuffer[1] = 0;
nBuffer[2] = 1;
nBuffer[3] = 0;
// I/O モジュールの初期化を行います
hDeviceHandle = DioOpen( "FBIDIO1", FBIDIO_FLAG_SHARE);
if (hDeviceHandle == INVALID_HANDLE_VALUE) {
AfxMessageBox("デバイスのオープンに失敗しました");
return;
}
// データ出力(OUT1〜OUT4 までの状態を設定します)
nRet = DioOutputPoint( hDeviceHandle, &nBuffer[0], 1, 4);
if (nRet != FBIDIO_ERROR_SUCCESS) {
AfxMessageBox("データ出力に失敗しました");
} else {
AfxMessageBox("データ出力に成功しました");
}
// 終了処理
nRet = DioClose( hDeviceHandle );
if (nRet != FBIDIO_ERROR_SUCCESS) {
AfxMessageBox("デバイスのクローズに失敗しました");
}
} |
|
| |
■バイト出力 |
| |
先にポートの出力接点を1点ずつ設定する方法を記載しました。
次は、一度に複数の出力接点を設定するプログラムを作成します。
複数の出力接点の設定には、バイト出力(8点),ワード出力(16点),ダブルワード出力(32点)があります。
ここでは、バイト出力を行います。 |
| |
- プルダウンメニューに項目の追加を行います。「Output」をクリックし、プルダウンメニューの空白部分をクリックし選択後、キャプションを入力します。「バイト出力」と入力してください。
- 「バイト出力」をクリックします。プロパティが表示されますので IDに「ID_OUTPUTBYTE」と入力してください。
- 先程作成したプルダウンメニューの中の「バイト出力」の上にマウスカーソルをもってきて 右クリックし「イベントハンドラの追加」を選択します。
- イベントハンドラウィザードの画面で、メッセージの種類を「COMMAND」、クラスの一覧を「COutputView」を選択し、関数ハンドラ名が「OnOutputByte」になっていることを確認し、「追加して編集」をクリックします。
- ダイアログを作成します。リソースビューの Output.rcを右クリックし「リソースの追加」を選択します。

- Dialogを選択し、「新規作成」をクリックします。

- リソースビューから 作成したダイアログをダブルクリックしてプロパティを表示します。

IDに「IDD_OUTBYTEBOX」、Captionに「バイト出力」と入力してください。

- ダイアログを右クリックし、「クラスの追加」を選択します。

- MFCクラスウィザードが表示されますので、クラス名に「COutByteDialog」と入力し、「完了」をクリックしてください。

- ダイアログにEdit Controlを作成します。

- 作成したEdit Controlを右クリックし、「変数の追加」を選択します。

- カテゴリを「Value」、最大文字数を「2」、変数の種類を「CString」、変数名を「m_szByte」と入力し、「完了」をクリックしてください。

- ソリューションエクスプローラを表示し、ソースファイルフォルダを展開してOutputView.cppの最初の部分に #include “fbidio.h”、#include ”OutByteDialog.h”を追加します。
- 「表示」→「クラスビュー」でクラスビューを表示し、COutputViewクラスを展開してOnOutputbyte関数に以下のコードを記述します。
(COutputViewクラスのOnOutputbyte 関数のコード サンプリング)
|
|
void COutputView::OnOutputbyte() {
// TODO: この位置にコマンド ハンドラ用のコードを追加してください
INT nRet; // 関数の実行結果
HANDLE hDeviceHandle; // デバイスハンドル
COutByteDialog dlg; // ダイアログのクラス名
int byValue; // 型変換後の格納先
// ダイアログを表示します
nRet = dlg.DoModal();
if (nRet != IDOK) return;
// データの型変換
sscanf(dlg.m_szByte, "%x", &byValue); // m_szByte = メンバ変数
// I/O モジュールの初期化を行います
hDeviceHandle = DioOpen( "FBIDIO1", FBIDIO_FLAG_SHARE);
if (hDeviceHandle == INVALID_HANDLE_VALUE) {
AfxMessageBox("デバイスのオープンに失敗しました");
return;
}
// データ出力(OUT1〜OUT8 までの状態を設定します)
nRet = DioOutputByte( hDeviceHandle, FBIDIO_OUT1_8, byValue);
if (nRet != FBIDIO_ERROR_SUCCESS) {
AfxMessageBox("データ出力に失敗しました");
} else {
AfxMessageBox("データ出力に成功しました");
}
// 終了処理
nRet = DioClose( hDeviceHandle );
if (nRet != FBIDIO_ERROR_SUCCESS) {
AfxMessageBox("デバイスのクローズに失敗しました");
}
} |
「ワード出力」、「ダブルワード出力」の説明は省略します。TUT-0024をご覧下さい。
|