突然ですが、シリアルポートを使って色々やってみるとか、そういうことありませんか?私はあります。
で、この前のCAA2019でも少し発表したのですが、シリアルポートとシリアルポートを分けたり、繋げたり、しなきゃならなかったので、備忘録を兼ねて。
というのも、ダミーのGPSからの出力が必要になったのです。
探査機器の位置計測をGPSが使えない環境でおこなうとか、SfMでの撮影を少し楽してみようかとか考えたときに、位置情報の取得を別の手段ですることを考える際、計測データとの時間によるマッチングはNMEAデータだったりする訳です。ということで、
1)偽のGGAファイルを受信させて、標準時(UTC)での計測成果を求めておく。
2)同じくUTCでの位置情報を何らかの手段で取得。
3)処理時に時間を元に統合して処理。
ということをしたいわけです。
ところが、当方の古い機械だと
・GPGGAしかよまない(今はGPS以外の衛星がとんでるからGNGGA出力が多いけど、そんなの自分古いんで知らん)。
・フォーマット変えると御不満(NMEA出してこいやコラ)。
という、ご意向のようでして。
ってことで、偽のGGAファイルPythonで生成して読ませりゃ楽勝、と喜び勇んでプログラムなど作ってみたのですが、撃沈。
色々調べたら、多分チェックサムの問題…。
NMEAのチェックサムについては情報多いし、多分、そこそこの方がそんなの計算簡単じぇねえか、と言われるかとも思うのですが、そういうの苦手な主としては、回避したい。XOFとかね…。
で、追い込まれたので、GPSで無理やり時間だけとってくる、という釈然としない解決法でその場を凌いだのでした。
この10連休に、反省して、もう一度やってみよう、ということで。
ところで、疑似的なNMEAを出力するプログラムって、ないんだっけ?と調べたら、前は何故か見つからなかったけど、あるじゃない…。
NMEA Generator Utility http://4river.a.la9.jp/gps/indexj.htm
4riverさま、ありがとうございますm(_ _)m(平伏)
ということで、ひとまずコンピューターを騙せそう仮データで処理させることは可能そうなので、問題になるのは、発信するコンピューターと受信するコンピューター。
…まさか、2台もって歩くわけには。
ということで、一番初めの話になるわけです。
ソフトをあるComポートから出力>それを別のComポートから入力>探査機器へ。
ということで、調べると、ソフトで解決する方法、ハードで解決する方法、があるようです。前者だと、com0comというソフトが有名みたい。
で、やってみたんですが、なんかもっさり。
疑似データ生成>出力ソフト>入力ソフト>探査ソフト
と、1台で全部やるので、結構そのあたりで遅いんかな、とか考えて。
遊ぶエンジニア―Com0Com 64bit版使うよりも http://playing-engineer.com/wordpress/2018/08/08/com0com-64bit%E7%89%88%E4%BD%BF%E3%81%86%E3%82%88%E3%82%8A%E3%82%82/
とても有益な情報ありがとうございます(というか、他の書いている記事が面白くて、何を調べていたのか半日くらい忘れていました)。
ということで、ハードでの解決をしてみる(前フリなげええ)。
買ったのはこれ。色々あるので、多分どれでもいける気がする。FT232シリアルコンバーター。
箱から出すとこんな感じ。コードなしの廉価な奴もあるけど、何となくコード付きを買ったのでちょっとお高い(700円くらいした)。
コードで接続。基本、同じ名前のところを繋ぐわけですが、TX-RX(送受信)のところだけ入れ替えて差す。いわゆるクロスケーブルって奴ですな。昔、RS232Cをストレートケーブルで繋いで動かずにああ、神は私を見捨てたのか、とか嘆いてケーブル変えてみたら動いたとかいう経験ありませんか?私はありました。
ドライバが要るとかいう話もありましたが、今回は不要でした。わくわく。
デバイスマネージャーで確認すると、2つのポートが出来ているので、好きなところへ変更します。私の場合は出力(Com15)、入力(Com1>ソフトが12までしか読めないため、汎用のところに変更)にしました。
では、動かしてみましょう。わくわく。
おー!動いたー!ちゃんと地中レーダーのソフトでも動いてる!(上)
ということで、今までの苦労は何だったんだ、という感じですが、無事に動作しました。めでたし。
しかし、やはりデータの更新が遅れて、動かなかったり急にぱぱっと表示が変わるのは…ソフトの問題か、データの出力か…なんだろ。