Visual BasicからI/O制御
北山 洋幸

 I/OアクセスをVisual Basicから行いたい場合があります.たとえば,計測やデータ収集のボードなどを開発して,そのボードをBasicで制御をする場合です.MS-DOSなどでは一般的に使われた手法でした.しかし,Windows時代になりI/Oの制御をBasicから行うには,少し工夫が必要になりました.
 ここでは,Visual C++でDLLやActiveXコントロールを開発して,Visual BasicからI/Oを制御するいくつかの方法を紹介します.プログラムのソースは,こちらから(180KB)ダウンロードしてください.

  (1) Visual BasicからI/Oを制御

 Visual BasicからI/Oを制御してスピーカのオン/オフを行ってみます.Visual Basicから,直接I/Oポートにアクセスすることはできません.ここでは,Visual BasicからI/Oを制御するために,シンプルなDLLをVisual C++で開発します.そのDLLを経由してPCのI/OをVisual Basicから制御します.

Visual C++でDLLを作る

 C++でDLLを作る方法は,どの処理系を使ってもほぼ同じです.筆者は普段,C++ Builder使う機会が多いのですが,Visual C++のユーザーが多いだろうと考え,今回はVisual C++でDLLを開発することにしました.開発したDLLをVisual Basicに結びつける方法なども説明します.Visual C++でDLLを開発する方法を説明しますが,I/O制御に比重を置いた説明を行います.
 まず,「ファイル」→「新規作成」を選び,「新規作成」ダイアログの「プロジェクト」タブの「Win32 Dynamic- Link Library」を選びます(図1-1).

 新規作成のダイアログではプロジェクト名などの入力も行います.これを選べばDLLを作成する準備ができます(図1-2).

 次にIo.cppとIo.hをプロジェクトへ追加します.追加作業は,新規追加して,直接ソースプログラム入力するか,あるいは,使い慣れたエディタで入力して,後でプロジェクトに追加してもかまいません(図1-3,図1-4).

 Io.cppはDLLの本体です.リスト1-1にIo.cppのソースを示します(*).DllMainはDLLに必要なエントリです.DllMainは,プロセスに接続/解放された場合や,スレッドに接続/解放された場合に制御が渡ってきます.スレッドなどで初期設定が必要なら,この中にコードを追加します.ここでは,そのような操作は...

以下略

//
// Io.cpp
//
//
#include 
#include 
#include "Io.h"
BOOL WINAPI DllMain( HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved )
{
	return TRUE ;
}
//
// dllIn
//
BYTE __declspec(dllexport) __stdcall dllIn( WORD wAddr )
{
	return (BYTE)_inp( wAddr ) ;
}
//
// dllOut
//
void __declspec(dllexport) __stdcall dllOut( WORD wAddr, BYTE bData )
{
	_outp( wAddr, bData ) ;
}


copyright 1999 北山洋幸