最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

カウンタ

おすすめ本

AccRanking

« 2015年1月 | メイン | 2015年3月 »

2015年2月

2015年2月 6日 (金)

クローズアップ現代・”地図力”が社会を変える!

昨日のNHKのクローズアップ現代で「”地図力”が社会を変える!」と銘打った放送を行っていました。
なんとなく7時のニュースの流れで見ていたのですが、結構興味を惹かれる内容でした。

地図や地形図からいろいろな情報を取り出して、土地の活用、新たな産業などを生み出す力、「地図力」というそうですが、これからの注目される分野としての紹介でした。
地形図ですが、飛行機からレーザーを使った測地で地面の形状を数ミリ単位で3Dデータとして計測し、立体画像に表現できるものです。
今までの地形図よりは非常に情報量の多いもののようでした。

この地形データを利用した例として、サントリーのミネラルウオーターを製造している工場が紹介されていました。
この工場は後背地にある山からの自然の湧き水を水源としていて、その水源の保全のために地形データから、山の細かい地形を調査することで雨水の流れがどの様になっているのか、また、それらを守るためにどの様に山を保全していくかに地形データを利用していました。

また、アメリカの例として、地図データから建物の屋根の形状から、その屋根で太陽光発電を行った場合の電力量から、設置料金などを計算できるソフトが紹介されていました。
アメリカでは地図データ上に建物の形状(屋根など)まで表示されているためできるようです。
(日本では建物の形状までは国土地理院のデータには無いそうです)

さらに、アメリカの教育現場(小学校)では3Dで見れる地図ソフトを使った授業が行われていて小さいころから地図力を鍛えていました。
世界を見たときに平面(空間)としての地図力と、時間軸からみた歴史を合わせて教育しているようです。

私は知らなかったのですが、日本では現在、高校の授業で世界史は必須ですが、日本史・地理は選択らしいです。地理は生きていく上で必要な力だと思いますので、日本でももっと地理に力を入れないと。

たしかに一つの例として、太陽光発電のシミュレーションソフトが紹介されていましたが、
「詳細地形図データ」を利用すれば新しい事業ができそうな感じがします。
すぐに何がとは考えが出てきませんが、何かできそうです。

この「詳細地形図データ」、今流行のビッグデータの一種とも考えられますのでビッグデータとのリンクも有りかなと思った次第です。

2015年2月 2日 (月)

.NETでのシリアルポート(SerialPort) での受信について(デリゲート)

久々にRS232C通信、もといシリアルポートを使ったプログラムを作ったのですが、そこではまった話です。
最近は「RS232C」という規格名も変わったそうですが、「.NET」でのシリアルポートのコントロールも 以前VB6.0あたりで存在した、MSCOMMとは異なりだいぶ進化していました。
(いまどきシリアル通信でもみたいな感じですが、まだまだ需要があるのか、VS2013でもシリアルポートのコントロールは 標準で装備されています。)
最初に簡単なシリアルポートを使ったテストプログラムを作成したのですが、 実行させてみるとそこでいきなりのエラーが発生しました。 下図はプログラムのデバッグ時の画面です。 「有効ではないスレッド間の操作:コントロールが作成されたスレッド以外のスレッドからコントロール'TextBox1'がアクセスされました。」 のエラーが発生しました。

Err1_2

どうも、シリアルポートの受信イベントはフォームが作成された時のスレッドとは別のスレッドで動作する様です。 MSの以下のページによれば、 https://msdn.microsoft.com/ja-jp/library/system.io.ports.serialport.datareceived%28v=vs.110%29.aspx

「DataReceived イベントは、データが SerialPort オブジェクトから受信されたときにセカンダリ スレッドで発生します。...  メインの Form または Control で要素を変更する必要がある場合は、Invoke を使用して変更要求をポストバックします。これにより、適切なスレッドで処理が実行されるようになります。」 とあります。

■「シリアルポート」テストソース(バグのあるソース)

結局、デリゲートを使ってInvoke命令で、表示処理を行えばよいことがわかりました。 それで、上記のプログラムでDataReceivedイベントを以下に変更しました。

■「DataReceivedイベント」部分を改良したソース(抜粋)

結果的に以下の様な表示になります。

Formr

シリアル通信は送信元が無いとデバッグができないので、仮想的にシリアルポートを2個作成し、 その2個をループバックできる様に仮想的に接続するフリーソフトがあります。 「com0com」というドライバツールで以下のURLからダウンロードできます。
http://sourceforge.net/projects/com0com/

このドライバをインストールすると、COM11、COM12が追加で生成されます。
COM12側の送信プログラムですが、通信テスト用に以下のフリーソフトを使いました。
「のん」さんといわれる方が作成された「RS232Cテストツール」です。
http://homepage2.nifty.com/nonnon/Download/Rs232cTool/index.html
この方はいろいろなフリーソフトを作成されている様です。使えるソフトが満載です。

Rs232c