プログラミングあるある短編
UnityとM5Stack間をBluetoothで通信しようとした際のお話です。
結局のところシリアル通信をする必要があるわけです。
なのでSystem.IO.Portsをつかって作成することが決まりました。
この辺のことに関しては、全然知識がないので別の方のブログを参考にしてポチポチと組んでいくわけですよ。
そこで完成したものが常にエラーを吐き続けるんですね。
まあちゃんとエラーをDebug.logでしっかりと吐かれているので、シリアル通信のパートが悪さをしているんだなということはすぐにわかりました。
ただ完璧であろうと思ったプログラム。こいつをどういう視点で疑っていくかなんて全然考えられませんでした。
基本的に絶対にエラーとは関係ないであろうという個所を省いていくと、一つのコードとぶつかりました。
this.serial = new SerialPort(17, 9600, Parity.None, 8, StopBits.One);
こいつです。
参考サイトにはこう書かれていました
this.serial = new SerialPort(portName, baurate, Parity.None, 8, StopBits.One);
あってそうじゃないですか?(アホ)
でもこいつ以外考えられないとしてググってもググっても、こいつのどこが悪いかなんてわかりませんでした。
あきらめてMicrosoftのリファレンスを読むことにしました。
そしたらこう書いてありました。
public SerialPort (string portName, int baudRate, System.IO.Ports.Parity parity, int dataBits, System.IO.Ports.StopBits stopBits);
string portName.........ん...stringだと..........やられた
完全に思い込みでintだと思っていました。
こんなんで2時間取られました。トホホ
気づいてすぐに修正したらきびきびと動きやがりました。
結論
思い込みには気をつけよう!