Home

kur.jp

.NetのSerialPort.isOpenプロパティが不思議な動作をする

C#でアプリをシリアル通信を行うソフトウェアを作っているのだけれど,良くわからない挙動に出会ったので,メモ.

通常,このようにすれば,アプリからCOM1ポートを開く事が出来る.

serialPort = new System.IO.Ports.SerialPort();
serialPort.BaudRate = 38400;
serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived);
serialPort.PortName = “COM1”;
serialPort.Open();

しかし,シリアルポートって言うのは通常,一つのアプリからしか利用することができない.このため,既に他のアプリがシリアルポートを使っていないかを確認する必要があり,このために,isOpen()プロパティがある.普通はこんな感じで使うと,ポートが開いているかどうかを知ることができる.

if(serialPort.isOpen){
    serialPort.Open();
}

ところが,このプロパティの戻り値がおかしい.ちゃんと調べてはいないんだけれど,私の環境ではこんな感じ.

  • 他のアプリ(puttyやpoderosa)からシリアルポートを開いているとき→正常
  • 同じアプリ(アプリの多重起動)からシリアルポートを開いているとき→異常

少し調べても結局原因がわからなかったので,例外処理を使って回避することに.

try
{     serialPort.Open();
}
catch {
     ;
}

例外処理をこういう風に使うのってあまり好きじゃないんだけど,とりあえず回避出来たので一安心.

望遠レンズ風タンブラー

スターバックスのお店にクリエイトユアタンブラーと言う商品があります.タンブラーの外側に好きなデザインの紙を挿入出来るようになっており,世界で一つだけの,自分だけのタンブラーを作ることができるというものです.

どんなデザインのタンブラーを作ろうかなぁと考えていた時に,Swag Alert!: Canon White Lens Coffee Mugというエントリを見てしまい,居てもたっても居られなくなってしまいました.というわけで,さっそく作ってみました.

続きを読む

Google インタラクション デザイン & ウェブマスター オープンハウス

自称HCI研究者と言うこともあり,Googleのユーザエクスペリエンスチームがどんなことをやっているのかに興味がありました.今回,Google インタラクション デザイン & ウェブマスター オープンハウスに参加する機会を頂いたので行ってきました.

ちなみに内容はこんな感じ.

  • Google ユーザーエクスペリエンスチーム とは?
  • Google ウェブマスターチームとは?
  • もっとも効果的なボタンデザイン
  • ユーザーエクスペリエンスデザイナーの思い
  • ホリデーロゴの舞台裏
  • 質疑応答
  • 懇親会

色々と新しい発見があったのですが,とりあえず適当に書いて見ます.

続きを読む

企業の存在理由

先日,ドリコムの内藤さんとお話したときに,「フリー」と言う本が会話の中に出てきました.中身が気になったので,早速Amazonで買って読んでみました.

だけど,私はこの本を読んでいて,フリーに関係するビジネスよりも,もっと気になったことがありました.それは企業の存在理由に関することです.

続きを読む

C#でBitmapの比較

一定時間毎にWebブラウザのウィンドウをキャプチャして,変更の有無を検出するコードを書いていたんだけど,ちょっと引っかかってしまったのでメモ.

最初,BitmapクラスにはGetHashCodeというメンバ関数があるから,ハッシュを取得してそれを比較すれば良いだろう,と簡単に考えていた.ところが,GetHashCodeというのはオブジェクトのハッシュを返す関数であり,画像データのハッシュを返すわけではない.つまり,この関数の返り値を比較しても,画像の内容が等しいか否かを判断することが出来ない.

じゃぁ,1pixelごと比較すれば良いのかと考えたのだけれども,BitmapクラスのGetPixelメソッドって,メチャクチャ遅い.そこで,Bitmapの中身をbyte配列に代入して,そのMD5をとることでハッシュ値を取得し,それを比較することで画像の変更の有無を検出することにした.

以下,具体的なコード.これだけの事なんだけど,思ったよりも時間を取ってしまった・・・.

続きを読む

最近読んだ本とか書き出してみた2

書かないと読んだことを忘れそうなので,前回に引き続き,最近読んだ本を書きだして見ます.

とりあえず,順序はおススメの順です.

続きを読む

最近読んだ本とか書き出してみた

昔は一冊毎に感想とか書いてたんだけど,最近はなかなかそういう時間も取れなくなってきています.とはいえ,読み終わった後に殆ど印象に残らないような本もチラホラ.せっかく読んだのに勿体無いなぁとか思うので,とりあえずリストアップしてみます.

ちなみに,順番は私のおススメの順番です.中にはとてもじゃないけど人におススメできない本もあるので,コメントを見て,察してください.

続きを読む

ホワイトカラーの大リストラによって日本が元気になる

TechCruchとか見てると,日本のITベンチャーって元気ないなーって気がしてくる.

残念ながらどこで読んだか忘れてしまったのだが,日本の大企業で働いている人材は優秀であり,もし日本の大企業が一社でもつぶれれば,そこで働いている優秀な人材がベンチャーに流れ,日本のITベンチャーが元気になるというようなことが書いてあった.

はたしてこんなことが実際,起こりえるのだろうか.そもそも,日本という国は,とにかく大企業が潰れにくくなっているように感じる.例えば最近だと,JALのことが話題になっているが,ここまでやばくなっていても,従業員の雇用はとりあえず守られているようだ.

続きを読む

Linode借りてみた

実は先日,これまで自宅で動かしていたサーバが壊れてしまいました.どうしようかと思ったのですが,せっかくなので外部のVPSサーバを借りてみることにしました.

最近は海外のVPSの値段も結構下がってきており,選択肢も非常に多いです.今回はその中から,Linodeを借りてみました.RAM720MB,HDD 32GB,転送量400GBで月額$40と非常にお手軽です.

続きを読む

“人生を書き換える者すらいた。”の迷路問題を解いてみた

今更感はあるのだけれど,気分転換に下記のブログで紹介されてた問題を解いてみた.

人生を書き換える者すらいた。 人材獲得作戦・4 試験問題ほか

かかった時間はたぶん60分ぐらい.アルゴリズム的にはA*アルゴリズムを使えば良いらしいけど,正直なところ,よく知らないので,適当に自分で考えてみた.

基本的な考え方としては,距離1で行ける場所,距離2で行ける場所,距離nで行ける場所を順にピックアップしていき,距離nでゴールまで行けるようになったら,そこから逆に最短となる経路を探す,といった感じ.

コメント欄を見てると30分とかで解いてる人も居るっぽいので,私はまだまだだなぁという感じですね.せっかくなので,ソースコードを公開してみます.あんまり綺麗なコードじゃないので,参考にはしないほうがよいと思うけど.

 

続きを読む

Home

Search
Feeds
Meta


Return to page top