第一段階の作業日記

2006年5月28日

西無線研究所様より微弱無線のサンプルセットが届きました。
それを使って少し遊んでみようと思います。
送っていただいた装置を見たら、思ったよりも小さい装置でした。
さっそく電池をはめこんで動作確認しました。
送信ボタンを押して、受信のLEDランプがつくのを確認しました。
5月30日

本日、持っている3台のノートパソコンに接続しようとしましたが、どれも接続できませんでした。
RS232-Cのシリアルポートでパソコンに接続出来るのですが、シリアルポートが付いていないパソコンが多くなってきて、特に最近のノートパソコンは大半が付いていないようです。
それで、USBに接続できる変換アダプタを使わないといけないようです。
今夜、PCサクセスさんで、UC-232A USB→シリアル変換コネクタを注文しました。
商品が届くまで、ネットで微弱無線のハードウェアとソフトウェアについて勉強しておこうと思います。

もうひとつのソフトがPICマイコンをはめ込んで使う方法だそうです。このサンプルセットに、PICマイコンをはめ込むようになっています。PICマイコン使ったことが無いので、これもゼロから勉強しないといけません。(^_^;)
6月6日(火)

本日UC-232A USB→シリアル変換コネクタが届きました。
最近はネットショッピングできるので便利です。
午後からそれをパソコンに繋いで、先日の微弱無線サンプルを接続してみました。
最初はtelnetで無線機の信号を受信しないといけませんが、 ハードウェアに直結したソフトウェア開発は初めてだし、 なにしろUSBポートからの信号取り込みも初めてなので、最初は戸惑いました。
COMの番号をあわせても、なかなかコネクタについているランプが点灯せずに困りました。 COM番号はWindowsXPの場合、「スタート」「コントロールパネル」「プリンタとそのたのハードウェア」の場所で「ハードウェアの追加」を選択し、「ハードウェアを接続しています」にチェックしてすすむと、「インストールされているハードウェア」の一覧を見れます。 ここで、きちんとUC-232A USB→シリアル変換コネクタのドライバがインストールされて認識されていれば、「ATEN USB to Serial Bridge(COM5)」のような表示がされています。このCOM番号をtelnetのプロパティで選べば大丈夫でした。
数時間後に無事、動作確認を終えました。(疲れました〜。笑)
2006/06/08

本日の作業は、 perlを使えるようにすることでした。 Windows用のPerlにはいくつか種類があるのですが、Active Perl がいいというネットの評判で、その無料ソフト版をダウンロードしてきました。

ActiveState(http://www.activestate.com/)

ダウンロードの後、インストールして、色々と環境を整えました。

その後、簡単なプログラミングして、シリアルポート(COM7)からの信号受信のテストをして、なかなかうまくいきませんでした。
参考サイトは、こちら
ttp://www9.ocn.ne.jp/~ymt/perl/serialport.html

また、西無線さんが教えてくださったページも参考にしています。

ttp://lab.kamawada.com/techmemo/index.cgi?page=Perl
2006/06/09

Active Perl の動作環境を朝から整えています。

httpd.exeを起動して、ブラウザから「http://自分のIPアドレス/Active Perlのファイル名」で、ブラウザから実行できるらしいので、それをしてみました。 ただ、私のネットは無線LANで構築してあるので、これを実行するとBullaloの認証画面が立ち上がってしまいます。(^_^;)
2006/06/10

ネットのいくつかのサイトのプログラムを参考にして読み取ろうと努力中です。
でも、いまのところ信号をうまく読み取れません。
それで、私が推察しているのですが(もしかしたら間違っているのかもしれませ んが)、 通信速度(9600ボーとか)を設定をしないといけないような気が してきました。 ただいまは、シリアルポートは番号をきちんと認識して、受け取る努力はしてい るようです。
試しにプログラムのCOM番号を変えてrunさせると、エラーになります。 きちんとCOM番号をあわせると、エラーは出ず、一応、受け取り信号待ちの状 態になります。
2006/06/11

今後の作業のために、Apache をダウンロードしてインストールしました。
参考サイトは、こちら。
http://www.apache.jp/

その後、スタート→ すべてのプログラム→ Apache Http Server→ Control Apach Server→ Monitor Apache Servers でApacheを立ち上げ。 その後、http.conf を編集して、自分用にカスタマイズ。
2006/06/12

本日は、町内の某所へ行き、先日から依頼されていた仕事を手渡しました。
その後、病院へ行き、その後鵜方へ行き、夕方帰宅しました。
プログラムのほうは進みませんが、とにかく通信速度などを入れないといけないとわかり、その部分を作りました。
sub setPortInterface {
my $self = shift;
my $port = Win32::SerialPort->new($self->{port}) or die("$self->{port}: $!");
$port->user_msg(1); # warnings
$port->error_msg(1); # hardware and data errors
$port->baudrate(9600);
$port->parity('none');
$port->databits(8);
$port->stopbits(1);
$port->handshake('rts');
$self->{port} = $port;
}

その後、Apacheで自サーバー風にしてActive Perlを動かしたほうがいいのがわかり、設定をしました。 わすれないうちに要点を書いておきます。
httpd.confの書き換えは、普通のカスタマイズにくわえて、次の2点をするとperlがブラウザでhttp://127.0.0.1/test2.cgi のように直接動かせる。

Options Indexes FollowSymLinks   を
Options Indexes FollowSymLinks MultiViews ExecCGI Includes にする

#AddHandler cgi-script .cgi を
AddHandler cgi-script .cgi にする
2006/06/14

先日からApache+Active Perlで、微弱無線基盤からシリアルポートを通じて送信される信号読み取りのプログラムを作っているのですが、多忙でなかなか仕事ができません。
昨日は、伊勢市の日赤へ行き、五ヶ所の2ヶ所へ行き、その後浜島町のデンタルクリニックへ行きました。
本日も病院2ヶ所へ行かないといけません。

日本で、このプログラムについてあまりネットの情報がないので、英語のサイトを読みに行っています。
そこで、なんとかわかったことが、
1:open( PORT, "+>COM番号" ) || die "Can't open COM7: $!";  のように直接COM番号を開く方法は使えない
2:Win32::SerialPort を使う方法が無難
3:今回のハードウェアの無線の基盤についているPICマイコンは、パソコンからの信号に反応して信号を返すのかと思っていたらそうではなくて、たんに送信機からの信号を受信してそのままパソコンへ送信してくるだけ

これをもとに、少しプログラムを訂正して、自分なりにかなり完成に近くなっているのを実感。
これは今朝の実行結果。
無限ループをさけるために、まず20回だけ受信してテスト。読み込み間隔は0.3秒。
---------------------------------------------
これは微弱無線信号のテストです。
-31-----------signal from serial port-------------
Waiting for CTS
i = 1, text = Waiting for CTS Waiting for CTS Waiting for CTS Framing Error detected
i = 2, text = Waiting for CTS Framing Error detected
i = 3, text = Waiting for CTS Waiting for CTS Framing Error detected
i = 4, text = Waiting for CTS Framing Error detected
i = 5, text = Waiting for CTS Framing Error detected
i = 6, text = Waiting for CTS Framing Error detected
i = 7, text = Waiting for CTS Framing Error detected
i = 8, text = Waiting for CTS Framing Error detected
i = 9, text = Waiting for CTS Waiting for CTS Framing Error detected
i = 10, text = Waiting for CTS Framing Error detected
i = 11, text = Waiting for CTS Framing Error detected
i = 12, text = Waiting for CTS Framing Error detected
i = 13, text = Waiting for CTS Framing Error detected
i = 14, text = Waiting for CTS Framing Error detected
i = 15, text = Waiting for CTS Framing Error detected
i = 16, text = Waiting for CTS Framing Error detected
i = 17, text = Waiting for CTS Framing Error detected
i = 18, text = Waiting for CTS Framing Error detected
i = 19, text = ------------End of data-------------
2006/06/16

関連サイトをまとめておきます。
「ソフテックだより 11月2日号技術レポート
「USBとRS232C・RS422との比較」」
http://www.softech.co.jp/mm_051102_farm.htm

英語のサイト
http://www.codecomments.com/message394025.html
http://qaix.com/perl-web-programming/91-757-win32-serialport-to-log-file-read.shtml
http://www.foo.be/docs/tpj/issues/vol4_1/tpj0401-0020.html
http://search.cpan.org/~bbirth/Win32-SerialPort-0.19/lib/Win32/SerialPort.pm

昨日までの結果は、こちら。
この「Framing Error Detected」が受け取るべき信号なので、これが読み取れる信号に変わったらいいだけになりました。
この装置では信号が一種類なので、最悪の場合は「Framing Error Detected」が届いたら別のハードウェアのアクションを起こすようにすればいいだけですが、なんとしても信号「017F」をきちんと読み取りたいです。
この次の装置はもう少し複雑で、数種類の信号が届くらしい。その場合は信号ごとにアクションを変えないといけません。

2006/06/17

関連サイトです。

http://techsupt.winbatch.com/TS/T000002007F11.html
http://www.lookrs232.com/rs232/lsr.htm

もうお手上げ状態になってきました。

明日はRX FIFOのデータを直接読み取るプログラムを作ってみようと思います。
2006/06/20

本日は大安でした。土実樹さんのセミノールジュースを飲んだら急に頭にひらめく事があり、それを実行してみたら、何と大成功。 先日から苦労していた開発ソフト(第一段階)がやっと完成しました。(大感激)
微弱無線電波をキャッチした受信機のPICマイコンが017F,を送信してきて、それを見たときは飛び上がって喜びました。 やっと完成したので、結果をアップしておきます。
ソフトはActive Perl 5.8 で、きちんと整理したプログラムをあとでこのブログへアップしようと思います。
2006/06/22 先日から作成していたソフトが完成したので、公開したいと思います。
(下手ですが笑わないでくださいね。)

パソコンのシリアルポートに微弱無線受信機(ハードウェア)を接続してください。
その後、初期設定ファイルradio_ini.cgiを、Apache+ActivePerl5.8で作動させます。ini.confが作成されたのを確認して、radio_perl.cgiを実行させてください。

プログラム公開中

戻る

SWSへ