VBで、シリアル通信(COMポート)から、バイナリデータを連続送信したいのですが、サンプルプログラムの改造で、文字列送信からバイナリ送信に変更は出来たのですが、連続したバイナリデータを送信しますと、1バイト毎にウエイトが入ってしまいます。
参考にしたサイトはこちらです
http://kana-soft.com/tech/sample_0008.htm
送信部*
'テキストボックスから、送信するテキストを取り出す. 'Dim data As String 'data = SndTextBox.Text Dim data() As Integer data = {1, 2, 3, 5} ’送信するテキストがない場合、データ送信は行わない. If String.IsNullOrEmpty(data(0)) Then Return End If Dim lp_su, w As Integer W = 0 For lp_su = 1 To 3 Try 'シリアルポートからテキストを送信する. Dim ByteArray As Byte() ByteArray = System.Text.Encoding.GetEncoding(65001).GetBytes(data(w)) ' UTF8 'ByteArray = System.Text.Encoding.GetEncoding(932).GetBytes(data(w)) ' SJIS SerialPort1.Write(ByteArray, 0, ByteArray.Length) 'SerialPort1.Write(data) '送信データを入力するテキストボックスをクリアする. SndTextBox.Clear() Catch ex As Exception MsgBox(ex.Message) End Try w = w + 1 Next
<追記>
SerialPort1.Writeメソッドの引数のLengthが書き込むバイト数で
ここの値を変えるとよいように思いますが、数値に置き換えても
エラーでうまくいきませんでした。
下記は、本来のテキストBOXから送信するプログラムですが
テキストBOXに、数文字書くと連続して送信しました。
私が、やりたい事は固定の数バイトのデータを連続して送信
したいのですが
*************************
'テキストボックスから、送信するテキストを取り出す. Dim data As String data = SndTextBox.Text '送信するテキストがない場合、データ送信は行わない. If String.IsNullOrEmpty(data) Then Return End If Try 'シリアルポートからテキストを送信する. Dim ByteArray As Byte() ByteArray = System.Text.Encoding.GetEncoding(65001).GetBytes(data) ' UTF8 'ByteArray = System.Text.Encoding.GetEncoding(932).GetBytes(data) ' SJIS SerialPort1.Write(ByteArray, 0, ByteArray.Length)
あなたの回答
tips
プレビュー