SSブログ

新年。シリアル通信ソフトウェア製作。 [PC]

新年明けまして、おめでとうございます。
今日から西暦2015年、平成27年でございます。
メェー メェー メェー。
未年ですね。

今年は良い年になって欲しいですよね。

先程、ちょっとしたPC プログラム作成の仕事をしておりました。
今となってはすっかりレガシー規格になってしまった、RS-232 シリアル ポート経由のシリアル通信プログラムです。
依頼主様はWindows OS環境ですので、私のPCのOSであるUbuntu 14.04 LTSをホスト OSとして、 " Oracle VM VirtualBox " という仮想化ソフトウェアをインストールして、仮想マシンの上にWindows 7をインストールしました。
" Oracle VM VirtualBox " のヴァージョンは4.3.20です。
Windows 7のライセンス認証は電話で行うことになりました。
フリー ダイヤルで、全て自動音声ガイダンスでした。

次に、Windows 7に以下のソフトウェアをインストール致しました。
ウェブ ブラウザーとして、Firefox。
日本語入力システムとして、Google 日本語入力。
セキュリティー ソフトウェアとして、Symantecの旧製品であるノートン アンチウイルス。
私が以前使用していたWindows向けの統合開発環境であるVisual Studio 2010。
懐かしのH8 マイコンの統合開発環境であるHigh-performance Embedded Workshop (HEW)。
H8 マイコンのフラッシュ メモリーへのプログラム書き込みソフトウェアであるFlash Development Toolkit (FDT)。

何故今更H8 マイコンかと申しますと、依頼主様のPCの通信相手である装置が持ち出し出来ない為、模擬の通信相手が必要で、手元にあったのがH8 3687Fのボードだったからです。

自作PCのI/O パネルにはシリアル通信の為のD-sub 9-pinのコネクターがありません。
シリアル ポートはレガシー規格であり、現在のPCには装備されておりません。
私は秋月電子通商で販売されている、USB-シリアル変換ケーブルを持っていたので、これを使用する事に致しました。

秋月電子通商 / "USB-シリアル変換関係の商品情報ページ" のURL:
http://akizukidenshi.com/catalog/c/cusb232/

次のウェブサイトを参照して、シリアル ポートの設定を行いました。

山本卓 様のブログより
"VirtualBoxでシリアルポート(COMポート)を使う" のページのURL:
http://sgry.jp/blog/2011/04/24/429/

Choreonoid ホームページ / "GR-001をPCに接続し、コレオノイドとの接続を確認する" のページのURL:
http://choreonoid.org/ja/choreograph-tutorial/connectGrobot.html
尚、上記のウェブ ページは次のウェブサイトの一部です。
"Choreonoid ホームページ" のURL:
http://choreonoid.org/ja/index.html

日経LINUX / Linuxコマンド集 / "【gpasswd】グループを管理する" のページのURL:
http://itpro.nikkeibp.co.jp/article/COLUMN/20131226/527405/

纏めますと、以下の様になります。
Ubuntu 14.04 LTSの環境で、USB-シリアル変換ケーブルをPCのUSB ソケットに挿します。
" /dev/ttyUSB0 " というファイルが新たに出来ている事を確認致します。
USB-シリアル変換ケーブルを挿す前に既にttyUSB0が在った場合にはttyUSB1が出来る筈です。

" /dev/ttyUSB0 " はそのままではアクセス権限が無いようです。
" /dev/ttyUSB0 " は " dialout " というグループの所有となっているので、ユーザーのアカウントをこのグループに参加させる必要があるようです。
端末を起動し、次のコマンドを実行します。
gpasswd -a USER_NAME dialout
上記のUSER_NAMEにはあなたのものを入力して下さい。
これにより、 " /dev/ttyUSB0 " にアクセス出来るようになります。

次に、 " Oracle VM VirtualBox " を起動します。
Oracle VM VirtualBox マネージャーの " 設定 " ボタンをクリックし、左のコラムから " シリアルポート " を選択します。
" ポート1 " タブの " シリアルポートを有効化 " のチェック ボックスにチェック マークを付けます。
" ポート番号 " は " COM1 " にしました。
" ポートモード " は " ホストデバイス " にします。
" ポート/ファイルパス " に USB-シリアル変換ケーブルを挿した際に出来たファイルを指定します。
私の場合は " /dev/ttyUSB0 " を入力致しました。
" OK " ボタンをクリックして準備完了です。

ゲスト OSのWindows 7を起動してコントロール パネルからデバイス マネージャーを起動してシリアル ポートの確認と設定を行い、その後は通常のWindows 7環境と同じ様にシリアル ポートが使用出来ました。

その後は、H8 マイコンからSCI経由で通信するプログラムをHEWでC言語で作成し、FDTでフラッシュ メモリーに書き込みました。

Windows用の有名なターミナル エミュレーション ソフトウェアである " Tera Term " を使って通信の確認を致しました。
Tera Termに関するWikipediaのページのURL:
http://ja.wikipedia.org/wiki/Tera_Term

最初に接続した時には正しく通信が出来ませんでした。そもそもUSB-シリアル変換ケーブルでCOM ポートが正常に使えているかどうかを確認する必要があります。
そこでD-sub 9-pinのメス側コネクター部品の予備があったので、これの2番端子と3番端子の間に抵抗器をハンダ付けしてケーブルのプラグに装着させて、送信信号がそのまま受信されるループバック テストを行いました。
結果、PC側のシリアル ポートには問題が無い事が分かりました。
マイコンのプログラムを見直したところ、ちょっとした間違いがあり、それを修正したら正常に通信出来ました。


次にVisual Studio 2010のVisual C++でWin32APIを使用したGUI プログラムを作成開始しました。
シリアル通信をして、コマンドを送信してデータを取得してファイルとして保存するだけの、極簡単なプログラムです。
Visual Studioはパーツのドラッグ & ドロップによる配置が出来たり、とても簡単にソフトウェアが作成出来るように作られているのですが、私は昔ながらのC言語とアセンブリ言語しか使えず、また、これらが好きですので、C言語によるプログラミングをしております。
C言語とWin32APIなどでのプログラミングの方が、ハードウェアやソフトウェアの仕組みを意識しながら書く事になるので、プログラミングを楽しめるのではないかと思います。

複数人で協同で行う仕事であれば、やはりオブジェクト指向言語でカプセル化された細粒度の解り易いクラスを沢山作って、または、高度に抽象化されたライブラリを使って、効率的にプログラミングした方が良いのでしょう。

コメント(0)  トラックバック(0) 

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

月の写真を撮るという事消滅と復活 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。