マイコン開発していると、いまだにシリアルポートってのは現役で、しかも昔と違ってUSB-シリアル変換が出回ったおかげで大量のポートがPCに存在したりします。
そして、また厄介なことに、USB-シリアル変換デバイスの中には、COM番号をどんどん増やしてくれるやからがいるので、COM番号をいちいちデバイスマネージャなどで確認してからじゃないと通信できなく、とっても不便です。
あと、.netのSerialPortクラスだと、ポート番号は取得できるものの、ポートの説明を取得するのはもう一手間踏まないとできないため、結局なんのポートか調べるのにデバイスマネージャ開いたり…
で、そのへんが面倒だったので、タスクトレイに常駐して、マウスクリックで最新のシリアルポートの状態を取得するプログラムを作ってみてTwitterでつぶやいたら、思ってたよりも受けが良かったのでブログにもおいておきます。
見た目はこんな感じ。
ただし、ろくにデバッグしてないので、デバッグに協力してやろう、ぐらいのつもりの人だけお試しお願いします。
普段、プログラムの配布なんかしてないので、MSのSmartScreenの警告が出たりするらしいです…
ネットワークアクセスとかは必要有りません。
■できること
・PCに接続されているすべてのシリアルポートの情報を一覧表示できる。
・メインウィンドウを閉じてもタスクトレイに常駐できる
・タスクトレイアイコンをクリックするだけで簡易情報が表示できる
・起動オプションを与えることで、メインウィンドウを表示せずに常駐させることもできる
・起動オプションを与えることで、外部のコンソールソフトと連携できる。具体的にはPutty・TeraTerm・Acknowrichに対応。連携すると、簡易情報表示のリンクをクリックすることで、そのポートでコンソールを開くことができる。
・デバイスマネージャでシリアルポートに表示されないけど、実際はシリアルポートとして操作するモデムデバイスの情報も表示できる。ATコマンドを手で打ちたい時とか便利。
■表示内容
・ポート番号
・ポートの利用状況(Open/Close)
・デバイス名称(USB-シリアル変換がどこ製かとか)
・メーカ名
・デバイス詳細(デバイス名称と同じ場合がほとんど)
■SerialPortInfo 仕様
動作環境 : .Net Framework 4.5が入っているWindowsPC
スキャン速度 : 1ポートあたり100msecくらい
■最新のバージョン
2016/05/27 00:13ビルド ダウンロード
・Teraterm連携モードでボーレートが正しく設定できなくなっていた問題を修正
・最小化してもタスクリストに表示されていた問題を修正
■過去のバージョン
2015/06/18 23:58ビルド ダウンロード
・ボーレート設定を空白のままキャンセルした時に例外を投げて落ちるバグを修正
・詳細不明デバイスが複数あっても検索できるように修正
2015/06/18 21:36ビルド ダウンロード
・開けるターミナルの種類を追加
・汎用連携オプションを追加
・初期ボーレートを設定できるように修正
2015/06/18 05:56ビルド ダウンロード
・検出したポートを一部のターミナルソフトで開ける機能を追加
2015/06/16 03:46ビルド ダウンロード
・一部のモデムデバイスが検出できていなかったので修正
・謎のデバイスが見つかった時に、メッセージボックスではなく、一覧に表示するように変更
2015/06/12 02:32ビルド ダウンロード
・ポップアップを等幅フォントに変更
・デバイスマネージャを起動するボタンを追加
2015/06/11 23:11ビルド ダウンロード
・デバイス名に「COM」が含まれないものも検出できるように修正。
2015/06/11 15:09ビルド ダウンロード
・実行オプションを与えると、起動時から最小化できるようにしました。
2015/06/11 13:26ビルド ダウンロード
もしくは
https://dl.dropboxusercontent.com/u/1020337/SerialPortInfo.zip
こちら。
バグ報告や機能追加の要望とか、ここのコメントなりTwitterのメンションなりで書いてもらえるとありがたいです。
■既知のバグ
・スキャン中に終了させると例外を吐くことがある
http://www.boost.org/users/download/
この時,圧縮形式はサイズの違いだけで,OSとか関係ないらしい
2.適当なところで解凍する
解凍した場所がそのまま作業場所になる&かなりの数のファイルができるので,予め都合のよさそうなところに解凍するのが吉.
3.コマンドプロンプトで回答したディレクトリのトップまで移動.
cd /d hoge\hoge\boost_1_**_*
これをしとかないと面倒なことになった記憶がある
4.bootstrap.batをプロンプト上で実行
すぐおわる
5.bjam.exeを実行
かなり時間かかる.
ここで色々オプションをつけることができる.付けなくてもとりあえず使えるライブラリはできる.
ここまででライブラリのWindows向けコンパイル終了. 使うときは インクルードパスを boost_1_**_* に ライブラリパスを boost_1_**_*/stage_lib に通せばOK.なので,最初に解凍した場所がそのままパスになるのでいい場所を選んどくと楽.ファイル数多いからコピーもだるい.
データシートをよく読んでみたら自分が勘違いしてたことがわかった。
どこからでも128Byte分書き込めるのかと思ってたら、アドレスの自動インクリメント機能が下位7bit分だけにあるということで、128Byteごとにインクリメントできなくなるという話だった。
ということでページライトするときに128Byteの境界を跨ぐときには跨ぐ部分のデータをRAMに保存して次のページライト時に書き込むことにした。
ほんとはすぐ後に書き込みなおしたったけど、書き込みに5msかかるからあきらめた。
初めてcallocでメモリ確保するプログラムを書いたけど、メモリ開放を勘違いしてて最初はばぐりまぐり。
それだけ直したら後は問題なくなった。
ということでこれから研究室の飲み会に参加してきます。
対象はandroidをまったく触ったことない人向け。
Javaはそれなりにわかる人向け。
けど、実際には完璧な初心者は置いてきぼりだったんじゃないのかなぁ。
途中から駆け足になってサンプルプログラムをライブコーディングしてるのを眺めてたような感じ。
自分はがんばって食いついていきましたけど。
結局講習会でやった内容はWikiを読めばわかることだけですた。
ん~Wikiを読んでもよくわからない人向けだとするなら、もっと丁寧に説明するべきだし(「ここのコードをコピペしてください」とコピペ先などの説明はなしだったり。)、
Wikiを読んで理解できる人向けだとすると、もっと内容がほしかった。
う~む
裾野を広げたいという気持ちはわかるけど、いまいち広げ切れてない感じ?
そもそも動く実機がないと萌えないよなぁ
エミュレータは実機があってこそ萌えるのに。
androidを使うことは数年無いんだろうな、という結論。
さて、中間発表の資料つくらなきゃ
でリハが来週の月曜だったことに気が付きました。
おっと。
ちょっと予定外。
+αで某仕事に関わることに。まぁお手伝いだけども。
こっちは締め切りが10/30だって。
おっと。
そんな感じで明日(土曜)はもりもり中間発表の準備をするつもりだったんだけど、サークル友人からこんな話が。
友「明日暇か?」
自「ものによる」
友「GoogleのAndroidセミナー行かないか」
自「いく」
というわけで行ってきます。まぁ時間が短いってのもあるけど。
しっかし、この短い時間でなにやるんだろ。
簡単にプログラムつくるらしいけど。
昔iアプリの講習会に参加したけど、一度も自分では作らずに終わってしまったなぁ。
ぶっちゃけゲームプログラミングみたいに創造力が必要なのって苦手。
放送研にいるのに…
頭固いんだよなぁ。やわらかくなりたいぜ。
#この週末にALTERA関係注文しちゃおうかな。気が変わらないうちに。あと円高のうちに。いつまでつづくのかなぁ。
なにやってたかってと、マイコンカーでよく使われてるI2CのEEPROMを使えるようにするということ。
前に基板は作ってサンプルプログラムは入れたんだけど動かないから投げていたものをきちんと検証してみました。
と言っても動かないサンプルプログラムほど理解しにくいものはない。
なんせ中で何やってるか理解してないからデバッグのしようがない。
ということで24LC256のデータシートを読む。
なんだ簡単じゃないか。これならサンプルプログラムなんて必要ないやん。
そんなかんじでさくっと自前のプログラムを書いてみた。
いろいろくだらないミスはあったものの、最終的にはきちんと動くものが出来た。
しかもサンプルプログラムよりは動作が速い。と思う。
で、このプログラムをまとめてライブラリにしようとしているのが現在のところ。
H8/3048はI2Cのハードウェアを搭載していないのでソフトウェアI2Cをやっているわけだけども、書き込みに時間を食ってしまい、本来のプログラム実行に支障をきたしてしまうので、バッファに保存データを溜め込みつつゆっくりEEPROMに書き込んでいく必要があるわけですね。
そのためにリングバッファ用意して…という状態で思案中。コードサイズはそんなに気にしないで済むはずだから、たらたら書いてしまえばいいかなぁ。
これがうまく動いたらSCIもリングバッファ化しよう。
いま使ってるprintfって送信終わるまで待ってるからマイコンカーのメインループ内にprintfを書いたとたんにちっとも動かなくなる。これを改善したいという話。
さらにさらにこれもうまくいったらキャラクタLCDの関数も整備するか。
ソフトウェアI2Cを使ってるので他のマイコンにも転用しやすいかなぁと。
できるだけハードウェア依存しないようにプログラム書いてるつもりなんで簡単にAVRに移植できるかな?
まぁ一応の目的としては相撲ロボットに乗っけようかなぁと思ってたりするんだけども。
今日は親に「髪きって来い」と強制連行され髪を切る。
これでまた3ヶ月は切りに行かないだろう。
でその後はEAGLEのライブラリー作ったりFPGAの環境について調べてみたり、いろいろやってたんですが、一番成果があったのはWindowsのプログラム。
最近はVC#2008でWindowsアプリを書いているんですが、まだまだど素人。
マイコンのプログラミングと違って用意されている関数なんかをどれだけ知っているかがポイントになるきがする。
知ってるというか、調べられるか、だと思うけど。
で、MSDNのサイトを見るんだけど書かれていることがよくわからんorz
しょうがないからMSDNのサイトのワードを使って解説しているページで理解を進める…みたいな繰り返しをしてます。
でも過去何度か挫折してきたWindowsプログラミングですが、今回はそこそこ進んでいるような気がします。たぶん。
今日はようやくWin32APIをC#から使う方法を知りました。
今までは ん~めんどそうだし、必要ないからいいや と思ってて挑まなかったんですが、自分のソフトでWindowsのボリュームをいじりたいなぁと思って重い腰を上げました。
とりあえずデバイスの情報を取得したりするとこまでは出来ました。
が、大事なことに気が付きましたよ。
FCA202ってマスターボリュームの画面がないんですよね。
外部でアナログボリュームをつけることが前提の機器なんで当然なんですが。
ということで、一気にやる気ダウン^^;
なので別の方向にやる気が向きました。
PCにUSB接続したボリュームBOXでも作るか。
要するにこれを使ってみたいなぁという話(爆)
これ、実用的にPCから操作するハードウェアになりそうでいいなぁ。
nabeさんのUSB-DAC使ってる人とかにオススメ?東京光音じゃないからだめか?
そういえば東京光音にも似たようなボリュームあったような…
http://www.cgp.it-chiba.ac.jp/robot/
公式キットは先輩たちがなにやら壊してしまったらしく、作り直しているわけです。
とりあえずデバッガがあるほうが何かと作りやすいのでAVRを選択しました。
AVRならソフトウェアデバッガがCの環境でもフリーで動くのでありがたい限りです。
とりあえず外部割込み端子を利用したエンコーダー入力とかはできたのですが、PWMが吐けない!
正しい設定をしているはずなのにまったく予定通りの動きをしてくれません。
ということで、とりあえず環境を疑ってみる。
Atmelのサイトに行くと開発環境が新しくなってる。
早速インストールしてみてデバッグ。
………
ん?
前より不思議な事態になったぞ?
動かないどころか、レジスタの設定ができなくなった?
???
と思ったら公式サイトにサービスパックが出てました。
それを導入したらとりあえず元の状況に戻りました。
つまりPWMは吐けない…
なんでだぁぁぁぁ
・HA10mini基板セット
・HA10mini終段基板
・HA10miniハイパワーキット
・HPA&Analog vol.6冊子版
・同人誌DL委託
・同人誌DL委託(旧サークル名)
12 | 2025/01 | 02 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |