タイトル : Re^6: Chr関数 VB2010でおかしい? 投稿日 : 2017/08/03(Thu) 15:36 投稿者 : MSAKA
>少なくとも、Chr 自体は問題なく動作しているようなので、別の部分に >問題がある可能性を疑っています。少なくとも、送信時に問題が起きているのか >結果の受信時に問題があったのかの切り分けは必要でしょう。 >>> 送信に成功すると無線機側でコマンドのとおり作動するはずなので それが作動しないのはPortへの書き込みコマンドといいますか 文字列が正しくないと理解しています > いずれにせよ可読文字ではない以上、 > 文字としての見た目だけにとらわれるのではなく、コード値で比較しないことには、 > それが本当に正しくセットされているのかを確認することはできないということです。 > > >>>> 上記の件 可読文字では何を使って表示しているかで同じではなくなる やっと理解しました (私は何を考えていたのでしょう・・と反省) > > > PR$ = Chr(&HFE) + Chr(&HFE) ’先頭に付ける同期用コード > > TxString = PR$ + RE$ + TX$ + CMA$ + CMAS1$ + CMAS2$ + FI$ > 本来は + 演算子ではなく & 演算子で結合するのが望ましいです。 >>> そうですね ついつい + を安易に使ってしまいます > (今回の場合、それで結果が変わるわけでは無いですが) > > > > ec.Ascii = TxString ’Portへの書き込み > 文字列ではなく、バイナリ送受信に切り替えてみては如何でしょうか。 > > EasyComm の場合、Ascii プロパティに文字列を渡す方法の他に、 > Binary プロパティにバイナリを渡す方法がありましたよね。 > > SerialPort で String や Char を扱う場合、実際のバイナリは > Encoding プロパティで指定された符号化方式でエンコード/デコードされます。 > (既定値は ASCIIEncoding です) > > この変換規則に頼らず送出する場合には、Write メソッドに対して > String を渡すのではなく、Byte配列とその位置を渡すようにします。 大変良い提案ありがとうございます この方法を使ったことはありませんが早々勉強をして試みて見ます 2010、2015 今は2017が出ていますが私のレベルではとても追いつけません たびたび 適切なアドバイス ご指導ありがとうございます |