2017年5月10日水曜日

MacBook Proでシリアルコンソール

少し前にYAMAHA RT58iの設定変更する際にどうしてもシリアル接続する必要がありました。このためだけにWindowsを用意するのが嫌だったので手元にあるUSB-シリアル変換ケーブルを2機種接続してみました。

クライアントはMacBook Pro (Retina, 13-inch, Early 2015)です。
サンワサプライ USB-CVRS9はUSB接続しても電源ランプすら点灯しませんでした。
バッファロー BSUSRC06はドライバ不要で問題なく使えました。

Windowsと違い接続のためにアプリケーションは必要ありません。
当然のようにターミナル(Terminal.app)で行います。
### デバイス名確認
ls /dev/tty.*

### RT58iのコンソールポートはボーレートが9600bpsなので
screen /dev/tty.usbserial-******** 9600

### screenの終了は [C-a C-\]
終了はcontrol+aを押してからaだけ離して/を押すという意味です。

2017年5月2日火曜日

plistの型指定

defaultsコマンドでplistファイル内の値を書き換えたらアプリが動作しないというかクラッシュするのに出くわしました。
結論としてはdefaults writeした際に型指定をしていなかったために元のDate型からString型に変わっていることが原因でした。

これってplistをdefaults readで読んでいると気付かないので注意が必要ですね。
面倒くさくてもXcodeで読むようにしなければ、、、

defaults readの例


Xcodeの例


上の例は、気付く原因となったplistではないですがDate型が入っているものです。
defaults writeで書き換える場合はちゃんと型指定してあげましょう。
ダブルクウォートで囲っているので型指定がないとStringになります。
### NG
defaults write FILENAME DOMAIN "VALUE"
### OK
defaults write FILENAME DOMAIN -date "VALUE"