Windowsのファイルアクセス監視ツール
例えば、あるプロセスのファイル入出力をモニターしたいとかに使えるツール。
SoftPerfect File Access Monitor
C#のイベント処理
C#のイベント処理の書き方、なんか珍妙ですぐ忘れるのでメモ。
イベントの型の定義
// イベント引数の型 public class HogeEventArgs : EventArgs { public string HogeData; } // イベントの型 public delegate void HogeEvent(object sender, HogeEventArgs e);
イベントを出す側
public class HogeSender { // イベントの定義 public event HogeEvent onHoge; private piyo() { // イベント引数の作成 HogeEventArgs args = new HogeEventArgs (); args.HogeData= "ああああ"; // イベント発行 onHoge(this, args); }
イベントを受ける側
public class HogeReceiver { private HogeSender hogeSender; public HogeReceiver() { hogeSender = new HogeSender(); // イベントハンドラの設定 hogeSender.onHoge += onHoge; } // イベントハンドラの実装 private void onHoge (object sender, HogeEventArgs e) { // ここにイベント発生時の処理 } }
ESP8266のMQTTライブラリ
今さらだけど、ESP8266で使うMQTTライブラリ乱立してて困る。
- adafruit/Adafruit_MQTT_Library
- knolleary/pubsubclient
- tuanpmt/esp_mqtt
- marvinroger/async-mqtt-client
【注意】以下の記述は憶測や噂話や筆者の主観を含みます。
adafruit/Adafruit_MQTT_Library
knolleary/pubsubclient
tuanpmt/esp_mqtt
- あんまし使ってる人を見かけない。
- Arduino用ライブラリではない。
marvinroger/async-mqtt-client
- あんまし使ってる人を見かけない。
- ぱっと見、シュッとしてる印象は受ける。(しらんけど)
- 通信が非同期処理なところが好ましい。
とりあえず
とりあえず使ってみるなら knolleary/pubsubclient がいいかなと思ってる。
西のローマ、東のギリシャ
地中海の西部でローマとカルタゴがポエニ戦争を戦っていたころ、東部にはアレクサンドロス大王の後継者たちが建てたギリシャ系王朝(アンティゴノス朝、セレウコス朝、プトレマイオス朝)が割拠していた。いわゆるヘレニズム三国だけど、どういうわけかヘレニズム三国がローマ史とのからみで語られることは少ない。
地中海世界の西の覇を争うローマ(青)とカルタゴ(茶色)、東に割拠するアンティゴノス朝(紫)、セレウコス朝(黄色)、プトレマイオス朝(緑)
図: Wikipedia アンティゴノス朝 より
もっとも、共和政ローマとプトレマイオス朝の最後のからみだけは超有名。主役はローマのカエサル、アントニウス、オクタウィアヌス(アウグストゥス)と、プトレマイオス朝最後の女王クレオパトラ。地中海世界を東西に二分して争い、最後はオクタウィアヌスが勝利して地中海世界をまるっと支配するローマ帝国が成立した。
地中海世界の西に拠ったオクタウィアヌス(緑)と東に拠ったアントニウス・クレオパトラ同盟(紫)
図: Wikipedia 西ローマ帝国 より
そう考えるとローマ帝国の全盛期ってローマ的西方世界とギリシャ的東方世界が一時的に統一されてたにすぎないのかもしれない。ローマ帝国が全盛期を過ぎるとまた東西に分裂してしまったわけで。
西ローマ帝国(赤)はローマ的西方世界を、東ローマ帝国(紫)はギリシャ的東方世界を治めた。
図: Wikipedia 西ローマ帝国 より
PS2コントローラをArduino系ボードで使う
インターフェース
PS2コントローラはSPIインターフェースで通信できるらしい。GPIOでパタパタして通信してる例も見られる。
先人の知恵
- GitHub - madsci1016/Arduino-PS2X
Arduino用ライブラリ。GPIO接続。 - Arduinoで純正PS2コンを使う - カニ食べたい
上記ライブラリを使用した例。 - PS2コントローラ型の2.4GHz無線コントローラ(VS-C1)をArduinoに繋いでみた: ROBOMIC(ブログ)
上記ライブラリを使用した例。 - Arduino用PS2インターフェース・ライブラリ:Studio Gyokimae
これもArduino用ライブラリ。GPIO接続。 - AVRでPS2コントローラーを使ってみた - 夕天の技術書
AVRのレジスタ直叩き。SPI接続。 - AVRでプレステのコントローラを使えるようにする。SPIの使い方: マイコン漬け
これもAVRのレジスタ直叩き。SPI接続。
とりあえず
上記のArduino-PS2X (PS2Xlib)を、GR-CITRUSで使ってみた。GR-CITRUSはRXマイコンベースのArduino系マイコンボードで、Arduino IDEからフォークした独自のIDE for GRが使用できる。しかし、PS2Xlibのサンプルスケッチをビルドしてみたところ、エラーが発生。アーキテクチャ依存部分のエラーだったので、修正版を本家からフォークした。
github.com
デジットで売ってた「無線コントローラキット」(どう見てもPS2コントローラで、受信器からジャンパ線が引き出されている)をGR-CITRUSに接続して動作を確認。アナログスティックの入力が上手くとれないが、いちおう動いた。
ホビーロボット界隈でよく使われるPS2コントローラ互換品としては、ヴイストンのVS-C3がある。受信器が小型なのでロボットに組み込むには有利。
課題
- SPIインターフェースを使用したライブラリを自作したい
- なるべく非同期なAPIにしたい。(待ちを発生させないように)
- アナログスティックの動作について要調査