プログラミングへのいざない

ありふし あつし
2010年1月1日更新

トップページへ

このページで公開しているソフトはすべてフリーソフトです。
使用された結果については一切責任を負いません。



プログラムを作ってみませんか?

パソコンが世に出た頃は、とても個人で買えるような価格ではなく、本体、ディスプレイ、
プリンター、8インチフロッピイ・ディスクドライブなど揃えると小型車並みの値段がしました。
しかも購入した状態では何一つ出来ないのです。
そうなんです ユーザが自分でプログラムを作らない限り単なる高価な物体です。

でもブームというのはすごいです 私が勤めていた会社でも導入することになりましたが
注文殺到でかなり納期がかりました。

     「ありふし、コンピュータは電子回路で出来ているな。」
     「はい」
     「お前は電子回路に強そうだからこれ(パソコン)何とかつかってみてくれ」
     「はい」

     今から思うと理屈は変ですが・・・・・・

昔のパソコンは買ってすぐプログラムが作れました。(逆にいうと開発ツールしか入って
いませんでした)
今はアプリケーションが豊富に入っていますから、買ってすぐ使えます。
でも今度はプログラム(アプリケーション)を自作しようとすると大変です。
開発ツールを購入するか、ネットからダウンロードし、インストール、面倒な設定、等々





とりあえずExcelのマクロで

パソコン講習の講師を頼まれたとき、学習内容が”Excel”と”Word”でした。
困ったなー BasicとかC言語とかアセンブラを主にやってきたので、Office関係は殆ど知らないのです。
とにかく休日返上で勉強です すると”Office”の中に”Visual Basic 6.0”相当の開発
ツールが含まれているのです。(機能限定ですが十分です)

”Excel”とか”Word”は”Office ***”としてパソコンに予め入っていることが多いので手軽に使えます。
”Office”は仕事で使うものですが、今回は講習なのでゲーム感覚で学習してもらおうと思い作ってみました。
わりと好評だったので、よかったら見てください。

Office2000で作りました。OfficeXPでも問題なく動きました。他のバージョンは試してないのでわかりません。
もしバグ(プログラム・ミス)がありましたら申し訳ありません。

ダウンロード


「オセロ」はよく知られている定番のゲームですね Excelのセルを石に見立てています。
パソコンとの対戦です。
「ごきチョロ」はオセロを改造して作りました。碁盤の中を黒石が動き回りますので、マウスでクリックして退治します。
「暗算」は単純計算を繰り返すことは脳トレになる?


使い方の説明
「暗算」を例に説明します Office 2000 の場合です。
”暗算.xls”をダブルクリックして立ち上げますと以下のようなダイアログが表示されますので
「マクロを有効にする」をクリックします。


上図のダイヤログが現れない場合は、セキュリティレベルを変更します。


メニューの「ツール」⇒「マクロ」⇒「セキュリティ」から、セキュリティレベルを「中」にして保存し再立ち
上げします。

セキュリティの変更は自己責任で行ってください。もしレベルが「高」になっていたなら
このファイル終了時、元の「高」に戻しておくことをお勧めします。


プログラム・ソースコードの見方

メニューの「ツール」⇒「マクロ」⇒「Visual Basic Editor」をクリックするとプログラムの
ソースコードを見ることができます(保護は掛けていません)
コードの中に沢山コメントを入れていますので興味のある方は参考にしてください。






計算・暗算の練習ソフト
Visual Basic Express Edition 2005 で作成


前回、Excelのマクロで作った「暗算」をVisual Basic 2005 で作ってみました。

計算・暗算プログラムのダウンロード


プロジェクト(ソースファイル)のダウンロード

Visual Basic 2005 開発ツールが入っていないと、プロジェクトのダウンロードは無意味ですから、行わないでください。




パソコンに押しボタンスイッチを付ける
Visual Basic Express Edition & Visual C++ Express Edition 2005
「プログラム開発ツール」は以前はとっても高価で、パソコンと同じ位しました。
現在は、無償バージョンが"Express Edition" としてマイクロソフトのサイトからダウンロードできます。

私の場合は、Visual Basic でほとんどのアプリケーションを作り、補助的に必要は部分のみ、Visual C++ で作成し、"Dll"にして、Visual Basic で作成したアプリから呼ぶようにしています。
Visual C++ でアプリケーションを作るのは、Express Edition"ではきついです。(上位 EditionならOKです)

プログラミングについては本当にたくさんのサイトがあり、とっても丁寧に解説されています。
開発ツールの使い方等は、それらのサイトをご覧ください。

今回は少し変わったプログラムを紹介します。

以下の内容は初心者の方には向きませんし、電気配線が必要ですから「半田ゴテなど使ったことがない」という方は読み飛ばしてください。


パソコンへ入力するには、まずキーボード・マウス・外付けのテンキーなどが想い浮かびます。
左図のようにスイッチで入力したいことはありませんか?

ディスクトップPCの場合は市販の「入出力ボード」をPCIの空きスロットへ装着してスイッチを接続出来ますが、ノートPCではそれは出来ません。

でも工場などでパソコンを使う場合、特に場所の問題でなるべく場所をとらないノートPCを使用したいですね。また停電の時も有利です。

少し前までは、シリアルポート(主にモデムを接続)やパラレルポート(プリンター用)が装備されていました。


以前のノートPCには、こんな端子がついていました。最近はほとんど見かけなくなりました。

シリアルポートについては、「RS232C/USB変換機」が市販されていますのでそれで代用出来ます。
しかも複数使用ができます。
但し、私が使用したものが、たまたま問題なく動作しただけかも知れないので、保証はできません。


これは、RS232Cのハンドシェーク信号を利用して主に
外部のスイッチ入力を使用するための例です。
自作のアプリにしか使用できません。

RS232CはHiと、Lowの状態があり、電圧が+と−に振れます。テスターで測ってみると、9V位でした。
+9VがHi、−9VがLowです。

ハンドシェーク用に4つの入力があるので最大4つのスイッチをつなげます。

今回は6番ピンのDSR信号にスイッチをつなぎました。
スイッチがONの時、DSR信号がHiになります。
スイッチは通常OFFですから、Lowの−9VをDSRに加えておきます。

私の場合はこの配線でうまくいきましたが、保証はできません。


出力としてLEDをつないでいます。ランプ付スイッチなどでスイッチONを検出したらランプを点灯するなどに使えます。
電流制限抵抗はLEDに数mA程度流せる位(3KΩ前後)でいいと思います。
LEDが点灯できるなら”フォトMOSリレー”などを付けてもっと大きい機器を扱えそうですが、それはやらないでください。
パソコンが立ち上がる時、出力が不規則にON−OFFしますから。
またシリアルポート自体このような使い方をすることは、想定されていないと思います。

今回、主役は "Rs232cSw.dll" です。"dll" は単独では動きませんので "Rs232cSw.exe"から呼びます。
"Rs232cSw.exe"は"Rs232cSw.dll"のテストするために作ったものです。
"Rs232cSw.dll" はCOMポートを無限ループの中で監視するためマルチスレッドにしています。
押しボタンスイッチが押されたら、親アプリにイベントを送ります。


上図のように配線できたら下のサンプルプログラムで試してみてください。

サンプルプログラムのダウンロード


「RS232C/USB変換機」を使用した場合、COMポートの番号が不明です。
また同じ変換機でもUSB端子に差す場所によっても変わってしまいます。

「設定」⇒ 「コントロールパネル」⇒ 「システム」⇒ 「ハードウエア」⇒ 「デバイスマネージャ」
⇒ 「ポート COMとLPT)」 からCOM番号を調べます。

一度設定すると、"Rs232cSw.ini" のファイルが作られ、COM番号が保存されますから、次回からは聞いてきません。


押しボタンスイッチを押すたびにカウントアップします。
LEDがつないであればボタンを押すごとに点灯−消灯します。
RTSボタンをクリックする度にLEDが点灯−消灯します。


Visual studio 2005 Express Edition で作ったプロジェクトです。

プロジェクト(ソースファイル)のダウンロード

変更・改造はご自由に行ってください。但しサポートはできませんのですべて自己責任でお願いします。





パラレルポートが使えれば(参考)

パラレルポートは多くの入力・出力を扱えます。
また入力・出力の切り替えも出来ますし、トライステートバッファとかラッチを使って回路を組めば
より多くの入力・出力を得られます。
いいこと尽くめですが最近のノートPCには付いていません。
ディスクトップPCにはまだ装備している機種も多いようですが、拡張スロットへ市販の「PCI入出力ボード」を装着する方が簡単です。

それから2つのハードルがあります。

1.パラレルポートの信号は弱いため外付けの回路を組む必要があります。



2.パラレルポート制御用のWindows API関数が無いためデバイスドライバを作る必要があります
Windows 2000 のときはマイクロソフトのサイトから”DDK”(Driver Development Kik)
がダウンロードできました。
説明はすべて英語ですし、専門用語が多いので機械翻訳では、さっぱりわかりません。
ただサンプルが付属していますから、その中から改造して使えそうなものを選びます。
今回はパラレルポートですが、普通ここにはプリンタがつながります。
(今はほとんどUSBですが)
使えそうなプリンタ関係のサンプル(ソース)を選んだらそれをC言語が編集できるエディタ(Visual C++等)にロードします。
設定とかいろんな手続き部分を残し、(これが結構多いです)本体部分を削除して
単純にポートをアクセスするコードを書きます。
”DDK”でビルドすると”*******.sys”が出来ます。
当然、これは他のアプリケーションから呼ばれて働くわけですから、デバイスドライバとアプリケーションを繋ぐソフトが必要です。
 「アプリケーション」 ⇒ 「つなぎのDLL」 ⇒ 「デバイスドライバ」
簡単に書きましたが、デバイスドライバに間違いがあると、容赦なくパソコンが落ちます。
通常の開発ツールみたいに、「ここが間違いですよ」なんて教えてくれません。

リスクはありますが一度作ってしまうと結構便利でした。残念ながらこれを動かすノートPCがなくなってしまいました。

これはあくまでもノートPCで入出力したい、という必要に迫れた苦肉の手段です。


トップページに戻る