.NETのSerialPortクラスで日本語が取得できない件
シリアルポートに接続された機械をコントロールするのに、最近使い始めたVisual C#でSerialPortクラスを使って通信を試みていたけれど、半角カナや漢字が"????"と変換されてしまい読み取れなかった。
続きを読む登山・錦川リバーカヤック・瀬戸内海シーカヤック・スキーなどのブログ。
シリアルポートに接続された機械をコントロールするのに、最近使い始めたVisual C#でSerialPortクラスを使って通信を試みていたけれど、半角カナや漢字が"????"と変換されてしまい読み取れなかった。
続きを読む社内で使う簡単なツールを作っているのだけど、特定のPCでのみ動作しないということで、調べてみた。
続きを読むとある仕事でとある音が鳴るデバイスをいじった。そのデバイスは周波数を設定できるだけなので、周波数と音階の関係を調べてみたら、平均律では、とある周波数f(Hz)の音の半音上の音の周波数は、f×2-1/12(Hz)だって。ほうほう。おもしれぇ~
せっかくなのでMML(=Music Macro Language)風の命令を作ってみた。ファミリーベーシックとかで音鳴らして遊んでた!なつかしー。"L8G<CCCCCCCDEDCCR2"みたいなね。何の曲でしょう?
例の計算式を、デバイスの周波数範囲全部で計算して配列に入れておく(都度計算するかどうかは処理速度とメモリ容量でお好みで)。正確には、その周波数に対応したデバイスのレジスタ設定値、ってことだけど。実行させると、MMLのテキストから音階を抜き出して、その音階に対応する周波数を配列から取り出して、デバイスにセット。指定音長分待つ。以上。みたいなカンタンなプログラムだけど、ちゃんと音楽になった。おもしろい。
シリアルポート接続、またはUSB接続などでも仮想COMポートを持つシステムのコントロールのために、汎用の通信ターミナルソフトウェアを使っていましたが、ちょっと凝った自動化をやろうと思ったら結構面倒なんですよね。ターミナルのマクロ機能でなんとかやってきましたが、大して高機能でもなく。
カスタムのターミナル&制御ソフトを作ればいいのですが、ターミナル部分が以外と面倒で。エラートラップとか想定外のデータ混入時の処理とか、単に改行コードの処理さえ面倒。
というわけで、いいこと思いつきました。ってもう古い技術かもしれんけど、井の中の蛙にはワカリマセン。
続きを読むMySQLをローカルPCにインストールすることにした。
ローカルの便利ツールはほとんどPerlかExcel+VBAで書いてあるので、もうExcelを引退させてPerl+MySQLへ移行しようかと検討中。
ExcelとMySQLはもちろんそれぞれ用途が違うものなので、Excelでデータを管理するということに若干無理があったのかもしれない。でも世間一般はほとんどそうだ。だから会社のアレもコレも再利用できないデータがたまっていくのだ。もっともっとデータベースを使おう。
まずはMySQLをダウンロード。
どうやら、今日時点では「MySQL Community Edition」の「5.0が推奨らしい。
で、Windowsなので「Windows (x86)」を選択。そしてダウンロード。
インストールはTypicalで問題なさそう。そしてほどなくして終了。
「MySQL Server Instance Configuration Wizard」でちょこちょこっと設定をいじる。
早速テーブルなどつくってみる。わりとカンタン。
あとは、PerlからアクセスできるようにしていけばOK。
って、そこがむずかしそうな気も・・・
検索エンジンのロボットのこと。Webページを徘徊し、ページを丸ごと持っていき、検索の元とする。
検索用途ではないが、ロボットを作った。ごく簡単なものだけど、これでちょっとずつデータを集めてデータベースへ突っ込もうという魂胆。
Webページを取り込む部分と、WebページからURLを抜き出す部分。そしてURLによって取り込むか取り込まないかを判断する部分。わずかなソースコードを書くだけでこれだけのことができてしまう。便利な世の中。
ただし、相手のサーバーに負荷をかけすぎていらぬ面倒を起こさないために、1分間に2ページだけのクロールにした。おそっ
明日はホームゲレンデの県民の森。
CGIとはHTMLの自動生成が全て。しかし、ソースコードにHTMLタグが入っている状況はデザインの変更に大変な苦労を伴う。
というわけで、大切なのはデータとデザインとプログラムの分離。デザインを決めるテンプレートに、データベースの内容とプログラムの演算結果を埋め込み、出力する。デザインを変えたくなったらテンプレートを変更する。
ブログだってそうだよね。それらがうまく分離されているからレイアウトはテンプレートの変更でOK。
今まで自前のテンプレート処理モジュールを使ってきたけれど、設計をせずにコーディングを進めていくスタイルでは(どこかと似ている)そのうち破綻していくのだ。なので、ここへきてHTML::Templateに移行しようと考えている。
というわけで、ちょっとHTML::Templateに触れてみた。
これから作るやつは全部これを使用させてもらって、今までのもヒマを見て移行していこうと思った。最初から使えばよかったー。
でも自分で作るということは大切なこと。もう葬り去られようとしている自前モジュールも、それを作ったことでたくさんの知識を得ることができた。
そして、今の稼ぎ頭はその自前ヘッポコモジュールで動いているという事実。そりゃそうだ。必要に駆られて必要な機能だけを追加していったものだから、そりゃ必要十分に働くに決まっている。