パソコンから 操作する |
Visual Basic® 2012 Express Edition を起動します。
「ファイル」メニューの「新しいプロジェクト」を選択します。
「新しいプロジェクト」ウィンドウが表示されますので、[テンプレート → Visual Basic] から「Windows フォーム アプリケーション」を選択し、「プロジェクト名」に "Sample" と入力します。入力が終わったら「OK」ボタンを押してください。
「TWB.vb」をプロジェクトに追加します。
「TWB.vb」は、「USBMTools」、または、「LANMTools」のインストール時にパソコン内にコピーされます。デフォルトのインストール先は「C:\Program Files(x86)\Technowave\Lib」です。
[プロジェクト → 既存項目の追加] ダイアログでファイルを選択し、「追加」ボタンの右にある三角の印をクリックします。追加方法が表示されますので「リンクとして追加」を選択します。
上の例の場合、「TWB.vb」はライブラリのインストールフォルダ中のファイルが参照されています。最新の「USBMTools」や「LANMTools」をインストールすることで、ライブラリファイルも更新されますので、プロジェクトからは常に最新のファイルが参照されます。
また、プロジェクトフォルダを移動すると、正しくファイルを参照できなくなる可能性があります。その場合、再度ファイルをプロジェクトに追加してください。また、プロジェクトフォルダを頻繁に移動する場合には、「TWB.vb」ファイルをプロジェクトフォルダにコピーし、そのファイルをプロジェクトに追加するようにします。
ボードを制御するためには、まず接続の操作が必要になります。そこで、作成するプログラムに「接続」ボタンを用意します。
「ツールボックス」を開いて「Button」をドラッグし、「Form1」の上にドロップして、ボタンを1つ配置します。
次に、「プロパティ」ウィンドウ(画面右下)の「(Name)」に "Connect"、「Text」に "接続" と入力してください。
フォーム上の「接続」ボタンをダブルクリックするとコード入力の画面になりますので、下のようにプログラムを入力してください。
Public Class Form1 Dim m_hDev As Long 'ハンドルを格納する変数 Private Sub Connect_Click(sender As Object, e As EventArgs) Handles Connect.Click 'ボードへ接続 TWB_Open(m_hDev, Nothing, 0, TWB_OPEN_OPT.IF_ANY Or TWB_OPEN_OPT.LIST_UPDATE) If m_hDev <> 0 Then TWB_Initialize(m_hDev, TWB_INIT_OPT.ALL) 'ボードの初期化 Connect.Enabled = False '接続ボタンを無効にする Disconnect.Enabled = True '切断ボタンを有効にする MsgBox("ボードに接続しました。") 'メッセージを表示 Else MsgBox("ボードに接続できませんでした。") End If End Sub End Class
リスト中の "TWB_" で始まる関数が、マルチファンクションI/Oボードを制御するためのライブラリ関数です。これらの関数は「TWB.dll」という DLLファイルに収められており、「TWBライブラリ」と呼んでいます。
「TWB_Open(m_hDev, ...)」 がボードに接続する部分です。成功すると m_hDev に 0 以外のある整数が格納されます。格納された整数は一般に「ハンドル」と呼ばれるもので、接続したボードを操作するために必要となりますので、プログラムを通じて参照できるようにグローバルな変数に格納しています。
「TWB_Initailize(m_hDev, ...)」 は、接続したボードを初期化している部分です。以前の操作状態がボードに残っている可能性がありますので、ここで初期状態に戻しています。
次にボードの制御を終了するための「切断」ボタンを用意します。
「Form1」をデザイナで開き、ボタンを1つ配置します。「接続」ボタン同様に、「プロパティ」ウィンドウの「(Name)」に "Disconnect"、「Text」に "切断" と入力してください。実際に接続しているときだけ、ボタンを有効にしますので、「Enabled」の初期値を "False" に変更してください。
フォーム上の「切断」ボタンをダブルクリックして、以下のプログラムを入力します。
Private Sub Disconnect_Click(sender As Object, e As EventArgs) Handles Disconnect.Click If m_hDev <> 0 Then TWB_Close(m_hDev) '切断 m_hDev = 0 'ハンドルを0に初期化 Disconnect.Enabled = False '切断ボタンを無効にする Connect.Enabled = True '接続ボタンを有効にする End If End Sub
「TWB_Close(m_hDev)」 が切断処理です。ハンドルの値は無効になりますので、ボードと接続されていないことがわかるように m_hDev を 0 に戻しています。
次にデジタル入力(P40)の端子状態を定期的に読み出して表示を行います。
「Form1」をデザイナで開き、ツールボックスから「Timer」を選択して配置します。
プロパティの「Enabled」を "True" に変更してください。これで、100msec毎にタイマイベントが発生します。
続いて入力状態を表示するためのチェックボックスを1つ配置します。
「(Name)」を "P40"、「Text」を "P40" に変更してください。
"Timer1" のアイコンをダブルクリックして、以下のプログラムを入力します。
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Dim Data As Byte Dim Status As Long If m_hDev = 0 Then Exit Sub '接続していないときは何もしない Status = TWB_PortRead(m_hDev, TWB_RPORT.P4, Data) 'ポート4の読み出し If Status <> TW_STATUS.TW_OK Then Disconnect_Click(Nothing, Nothing) '切断処理の呼び出し MsgBox("エラーが発生しました。: " & Status) 'メッセージとエラー番号の表示 Exit Sub End If '読み出したデータの0ビット(P40端子に対応)を調べる If Data And &H1 Then P40.Checked = 1 '1の場合チェックボックスにチェックを入れる Else P40.Checked = 0 '0の場合チェックボックスのチェックを消す End If End Sub
「Status = TWB_PortRead(...)」 の部分がポート4(P40-P47)の端子状態を読み出している部分です。P40 が "Hi" の場合、Data 変数のビット0(最下位ビット)が "1" となり、"Lo" の場合は、Data のビット0 が "0" となります。P41 の状態は同様にビット1に格納され、以下同様に P47 までの8ビットが、それぞれビット7(MSB)までの8ビットに格納されます。
TWB_PortRead() 関数が成功した場合、Status には "TW_OK" という定数が入ります。"TW_OK" は「TWB.vb」の中で定義されている定数で、値は 0 になります。関数が失敗した場合には、Status が "TW_OK" 以外(0以外)の値となります。
次にデジタル出力(POUT0#)を変更する処理を追加します。
「Form1」をデザイナで開き、POUT0#端子と対応するチェックボックスを1つ配置します。
「(Name)」を "POUT0"、「Text」を "POUT0" に変更してください
フォーム上の「POUT0」チェックボックスをダブルクリックして、以下のプログラムを入力します。
Private Sub POUT0_CheckedChanged(sender As Object, e As EventArgs) Handles POUT0.CheckedChanged '接続していない場合チェックを外して処理を終わる If m_hDev = 0 Then POUT0.Checked = 0 Exit Sub End If 'チェックされた場合はPOUT0を"1"に、チェックが無い場合POUT0を"0"にする If POUT0.Checked = True Then TWB_PortWrite(m_hDev, TWB_WPORT.POUT, &H1) Else TWB_PortWrite(m_hDev, TWB_WPORT.POUT, &H0) End If End Sub
「TWB_PortWrite(..., &H1)」 の部分が POUT0# の出力を "ON" にしている部分です。 "&H1" の部分には8ビット(Byte)の数値を指定できます。ポート入力の場合と同様にビット0 - ビット7 が、それぞれ、POUT0# - POUT7# 端子に対応しています。POUT# はオープンコレクタ出力となっていますので、"ON" になると端子から GND へ電流を流します。
それでは、作成したプログラムを実行し、動作確認を行います。
M3069評価ボードが利用可能な場合は、評価ボード上にマルチファンクションI/Oボードを取付けてください。評価ボードが無い場合は、「動作確認用の回路」に従って、簡単な回路を構成すれば、動作確認が可能になります。
ボードをパソコン、または、ネットワークに接続し、電源を入れ、通信可能な状態にします。
「デバッグ」メニューから「デバッグ開始」を選択してください。作成したプログラムが起動しますので「接続」ボタンを押してください。成功すると図のようにメッセージが表示されますので「OK」を押してください。
ビルドエラーが発生する場合には、プログラムに誤りがないか確認してください。
「P40」のチェックボックスは、P40端子の入力レベルを表示しています。M3069評価ボードに接続している場合は、SW1のディップスイッチの1番を "ON" にするとチェックが消えます。逆に "OFF" にするとチェックが表示されます。(図1)
動作確認用の回路がある場合も同様に、スイッチを "ON" にすると、チェックが消えます。
「POUT0」にチェックを入れると、POUT0# の出力が "ON" になります。M3069評価ボードに接続している場合は、対応するLEDが点灯します。(図2)
動作確認用の回路がある場合も同様に、接続したLEDが点灯するはずです。
ハードウェアや、各機能の使用方法に関しての詳細は、以下のマニュアルでご案内しています。