• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2010 シリアル通信の文字列を分けたい)

VB2010 シリアル通信の文字列を分けたい

このQ&Aのポイント
  • VB2010でシリアル通信を行い、受信した文字列を分割して表示したいです。
  • TextBox2には受信した文字列が表示されていますが、それをTextBox3とTextBox4に分けて表示したいです。
  • Substringを使用して文字列を分割しようとしましたが、エラーが発生してうまくいきません。具体的な解決方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>と二行あけて4プラスデータが縦に連続的に表示されます。 2行空けて が何なのか気になりますが。 最初の表示の分は何のかも。 sdata には、4文字しか入っていないようなので。 Private Sub PrintData(ByVal sdata As String)   TextBox2.Text = sdata   TextBox3.text =sdata.Substring(0, 2)   TextBox4.text =sdata.Substring(2, 2) End Sub で取得できるはずですが。 又は、 Private Sub PrintData(ByVal sdata As String)   TextBox2.Text = sdata End Sub で、TextBox2.Text には、2318 と入っているのなら Private Sub PrintData(ByVal sdata As String)   TextBox2.Text = sdata   TextBox3.text =TextBox2.text.Substring(0, 2)   TextBox4.text =TextBox2.text.Substring(2, 2) End Sub でも同じように取得できるはずです。

ny36
質問者

補足

色々ためしてみましたが残念ながらうまくいきませんでした。 「インデックスおよび長さは文字列内の場所を参照しなければなりません。」 とのエラーメッセージがでます。 試しに改行コードを抜いて数字だけを送ると、エラーにはなりませんが文字が全く 表示されなくなります。なんかむずかしいです。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

>尚、シリアル通信は改行コードを頭につけて、\r\n2318 と連続的に送られてくる >んですがこれが問題なんでしょうか。 だったら、sdata に何がどのように入っているか調べてみたら。 Private Sub PrintData(ByVal sdata As String) Debug.Print(sdata.Length.ToString()) If sdata.Length > 3 Then For i As Integer = 0 To sdata.Length - 1 Debug.Print(sdata.Substring(i, 1)) Next End If End Sub これで、イミディエイトウィンドウにはどのように表示されましたか?

ny36
質問者

補足

回答ありがとうございます。 早速ためしてみたところ 4 2 3 1 8 4 2 3 1 8 と二行あけて4プラスデータが縦に連続的に表示されます。 尚私はVBは全くの初心者でシリアル通信はwebサイトを検索して シリアル通信プログラムを探し、かたっぱしから試してみたところ、たまたま うまく動いたもので、プログラムの意味はさっぱり理解していません。 これをどう解釈したらいいんでしょうか。

すると、全ての回答が全文表示されます。

関連するQ&A