今回は技術エッセイです.うそ
わたしはsoftware programmerとして給料を得た経験はほとんどゼロである.専らハード屋とマネージャー.そうゆう者が技術者人生でほぼ捨ててたprogrammingやsystemの知識を「五十の手習い」している状態である.
いま、「STM32でDCC」を開発していて、UAC2.0のdiscriptorおよびrequest処理と格闘しているところなんだけど、わたしにはwindowsって使えないのよ.Linuxでやってる.
格闘の手がかりは2つある.
1)HOSTから来るUSB requestをモニタする
2)HOSTのエラーメッセージをモニタする
1は自助努力でやれるので問題ない.STM32からCOM PORTへ内部情報を垂れ流しさせれば良いからだ.
問題は2なんだ.HOSTのsystem error logをどうやって表示させるのか?
LinuxがUSB deviceとのネゴで出しているエラーは、dmesgコマンドで表示できる.こんなくらいのメッセージが出れば御の字だ.debugの役に立つLinuxさんだ.
usb 2-2: parse_audio_format_rates_v2(): unable to retrieve number of sample rates
usb 2-2: uac_clock_source_is_valid(): cannot get clock validity for id 18
usb 2-2: clock source 18 is not valid, cannot use
ところがwindowsのsystem messageは表示させるのがかったるい.text logに出してくれるだけの方が使い勝手が良いと思うんだけどな.さらにmesage読んでも何言ってるのかさっぱり要領を得ないんだ.あれは手習い人には使えないよ.
なので、Linuxに接続してdebugしてからwindowsに接続して様子を見るという手順が専らとなっているわたしだ.
しかし、LinuxのUAC driverで動いたからwindowsでも確実に動くのかというとそうでもない.windowsのUAC driverの方が気難しいみたい.たとえば、Audio Class control feature unitの全機能をoffにすると却下されるので最低限mute機能はonしとかないくちゃいけないとか、そうゆう地雷があるみたいよ.
USB HOST hardware制御もLinux/Winで微妙に違っていて、LinuxはSOFが永久に来るが、Winは使わずに1分ぐらい経つとSOFが来なくなる.SOFは永遠にがひら的には好きなんだけどな.
visualstudioがこれまた苦手で敬遠の対象だ.
そういえばvisualbasicを使えたことも一度もないな.
たぶんわたしは一生winには手出ししないと思うんです.
エイメン
Windowsのアプリ開発はほんとにきついですね。どうもMicrosoftの開発内には汝考えずに作れという強固な信仰があるらしくて、APIがまともに設計されていない感じがします。昔APIのリファレンスブックが広辞苑くらいの2冊分で売っていて、さぞかしいろいろな機能が入っているのだろうと思ったら、実現できる機能はちょっぴりで呼ばなければならないAPIの数だけは鬼のようにあってそれらを場合によって異なる秘密の順番で呼び出してやらないと動かないという地獄仕様で挫折しました。
返信削除ダンジョンですね.
削除素人的には、.netとかライブラリが次々と新しくなって、業者さん達は忙しくないんですかねと思います.
あとC#って素人的にはイミフー(笑)
難しい=お金がたくさん貰えるだと思うのでプロの皆さんはがんばってください.