XPortで、不特定多数の相手先とUDP通信する方法

LANTRONIXのXPortで、不特定多数の相手先とUDP通信する方法をググっていたら、以下のページが見つかった。

Sending UDP Datagrams to and from a Cobox, Xport, or WiPort

Undocumentedなモードがあって、

connectModeを 0xCC に設定
DatagramTypeを 0x00 に設定

すると、以下の形式のパケットをシリアルポートで送受信することで、UDPデータグラムを送受信するモードになる。
使用されるポートは送受信時共に 設定項目の Port No で設定したポートになるようだ。
(DatagramType 0x00 に設定すると、 Remote Port は設定できなくなる)

(余談: WordPress はなんで 0x00 … この x を全角に変換してしまうんだ??→いや全角エックスじゃないわ、&#215 の乗算記号か…計算式じゃないっちゅうの! → wp-includes/formatting.php の 55行目あたりの $dynamic_characters と $dynamic_replacements という置換用arrayの中(末尾)に、この余計なお世話な変換があったので、削った。 → 後記。WordPress3.4でも未だにこの変換が入ってるけど、96行目をコメントアウトすれば良くなった。わあ便利…)

■UDP送信

0x02 (スタートバイト)
0xC0 (相手先IPアドレス 1バイト目 例: 192)
0xA8 (相手先IPアドレス 2バイト目 例: 168)
0x00 (相手先IPアドレス 3バイト目 例: 0)
0x01 (相手先IPアドレス 4バイト目 例: 1)
0x00 (データバイト数 BigEndian H)
0x04 (データバイト数 BigEndian L 例: 4バイト)
0x30 (データ)
0x31 (データ)
0x32 (データ)
0x33 (データ)

上記の例の11バイトをXPortのシリアルポート RxDに受信させると、
XPortは 192.168.0.1:(Port Noで設定したポート) に “0123” の4バイトを入れたデータグラムを送信する。

■UDP受信

また、LAN上の、たとえば 192.168.0.2 のマシンから XPortのIPアドレス:(Port Noで設定したポート) へUDPデータグラムが届き、
中にたとえば”ABC” の3バイトが入っていたとすると、XPortは

0x02 (スタートバイト)
0xC0 (送信元IPアドレス 1バイト目 例: 192)
0xA8 (送信元IPアドレス 2バイト目 例: 168)
0x00 (送信元IPアドレス 3バイト目 例: 0)
0x02 (送信元IPアドレス 4バイト目 例: 2)
0x00 (データバイト数 BigEndian H)
0x03 (データバイト数 BigEndian L 例: 3バイト)
0x41 (データ)
0x42 (データ)
0x43 (データ)

の10バイトのパケットをシリアルポートのTxDから送出する。

これで、不特定多数の相手との双方向UDP通信ができる。

Galaxy SII/Android/Google Latitudeの不満点

基本的に私は、携帯の位置情報を常にGoogle Latitudeで記録したいと思っているのだが、現在以下のような不満がある。

  • Androidの「無線とネットワーク」(== WiFi/3G)での位置特定機能をオンにしておくと、ひどく精度が悪いことがある。
    数キロ~数十キロずれることもざらで、ひどいときは日本から出てもいないのに、ロンドンにいたことになっていたことがあった。

    東京モーターショー(@ビッグサイト)に行ったとき、途中まで地下鉄に乗っていたのでその間はこの機能に頼ろうと思ってオンにしたまま、ビッグサイトに着いても、4時間ほど、オフにもどすのを忘れてたときは面白かった。その4時間のあいだに私は札幌・千葉・横浜愛知・大阪・フランクフルトにいたことになっていた。なんだそりゃ。まあ原因はだいたい想像できるが。

  • だから、この機能はオフにして、GPSでだけ測位したいのだが…

  • Galaxy SIIをAndroid2.3.5にアップデートして以降のことのように思うが、「無線とネットワーク」での位置特定機能をオフにしていると、位置情報が全くGoogle Latitudeに記録されなくなった。記録されるのは、マップアプリ等でGPSを使った場合に、ついでに行われるだけのようだ。

Googleがどんだけ「無線とネットワーク」での位置特定機能に自信を持っている(マップ使ってるとしょっちゅうオンにさせたがるもんね)のか知らんけど、こんな現状なんで、私は、常時使う気にはとてもなれない。
GPSのみ使う設定でも、数時間に1回くらいとか、任意設定の時間間隔で、Google Latitudeの記録ができるようにしてほしいもんだと思う。

まあ、バックグラウンドで、定期的にGPSで位置情報とるアプリを動かしておけばしのげるけど、標準機能で持っといてほしいよ・・・。

「定期的にGPSで位置情報とるアプリ」を作ってみた。

Yahoo!ボックス

Yahoo!がストレージサービス、Yahoo!ボックス をサービス開始した。
無料会員には5GB、プレミアム会員には50GBのストレージが与えられる。

アップロード速度がそこそこ速いのが好感触だ。
現在日本時間21:30、Dropboxへのアップロード速度が600KByte/sec 程度であるのに対し、Yahoo!ボックスは2.5MByte/sec.くらいのアップロード速度が出ている。

Yahoo!ボックスは撮った写真の交換用なんかに使おうかと思っている。

Firefoxのタイトルバー

最近のFirefoxで何がむかつくかっていったら、これね、タイトルバー

そんなところにFirefoxボタン置くなよ!
Windowsで、タイトルバーの左端にアイコンおいとくのは伊達じゃない。あれは、ダブルクリックしてウィンドウ閉じるためのもんでしょうが!
なに考えてんのかね!まったくもう!ふんとにもう!

→メニューバーを表示しておけば従来どおりになるのね。

タイトルバーがこうなってから、Firefoxのウィンドウ全体がなにかの拍子に一瞬ガタガタっと上下に動くことがあるのはなんだろう、気持ち悪い、と思っていたら、これメニューバーを無理矢理?非表示にしている弊害みたいね。(たまたま、ガタガタ動いた瞬間、メニューバーが一瞬見えたので、やっと気がついたよ)

メニューバーを表示しておけば、(従来どおり)Webページのタイトルがタイトルバーに表示されて便利だし、なんでメニューバー非表示をデフォルトにしたのかさっぱり理解できないよ!そりゃまあ多少はウィンドウが広く使えるけど、デメリットのほうがデカイと思うんだけどなあ。