掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
シリアルポートの受信 (ID:143226)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
お世話になります。 rs232c通信のプログラムをダウンロードしまして(vb2005) 改行コードなどの無いデータを以下のソースより 1)Shift-Jisからユニコードに変換 2)Unicodeの配列から文字列に変換 などを行い TextBox3 へ追加しようと試みたのですが エラーが発生してしまいます。 ①の strGetTextを doubleの変数を作って代入することはできたのですが 分かる範囲で試してみたのですが エラーを回避できない状態です。 改行コードが無いからエラーが上がるのでしょうか? dim len As Integer dim x As Double len = strGetText.Lengh x = CDbl(Mid(strGetText,1,len) x=99.9999 テキストボックスへ追加するためには どのような操作を行えば良いのでしょうか? ① Delegate Sub dlgAddText(ByVal str As String) Private Sub AddText(ByVal strGetText As String) '受信データーをテキストボックスに追加する TextBox3.AppendText(strGetText) 'キャレットを文字の最後に設定す TextBox3.ScrollToCaret() End Sub '--------------------------------- 'セリアルポートの受信イベント '--------------------------------- Dim lByte As List(Of Byte) = New List(Of Byte) Private Sub SerialPort1_DataReceived(ByVal sender As Object, _ ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _ Handles SerialPort1.DataReceived 'データ受信用のバイト配列 Dim inByte(SerialPort1.BytesToRead - 1) As Byte 'データの読み込み SerialPort1.Read(inByte, 0, SerialPort1.BytesToRead) '読み込んだデータを改行を確認しながらジェネリクスに移す For i As Integer = 0 To inByte.Length - 1 lByte.Add(inByte(i)) 'ジェネリクスに足しこむ '改行が有った If lByte.Count > 2 AndAlso lByte(lByte.Count - 2) = 13 AndAlso lByte(lByte.Count - 1) = 10 Then 'ジェネリクスからByte配列に移す Dim tmpByte(lByte.Count - 1) As Byte For j As Integer = 0 To lByte.Count - 1 tmpByte(j) = lByte(j) Next lByte.Clear() 'ジェネリクスをクリアー 'Shift-Jisからユニコードに変換 Dim uniByte() As Byte = Encoding.Convert(encSjis, encUni, tmpByte) 'Unicodeの配列から文字列に変換 Dim uniString As String = encUni.GetString(uniByte) 'メインスレッドのテキストに追加する Me.Invoke(New dlgAddText(AddressOf AddText), New Object() {uniString}) '上は下の記述の短縮形 ' dlgAddText dlgT = new dlgAddText(AddressOf AddText); ' Me.Invoke(dlgT, uniString) End If Next End Sub 'これは参考で使っていません '-------------------------------- 'ユニコードの文字列をS-Jisに変換 '-------------------------------- Private Function UniToSjis(ByVal strUni As String) As String 'unicodeのEcodingクラスに作成 Dim ecUni As Encoding = Encoding.Unicode 's-jisのEncodingクラスの作成 Dim ecSjis As Encoding = Encoding.GetEncoding("shift-jis") Dim byteUni As Byte() = Encoding.Default.GetBytes(strUni) Dim byteSjis As Byte() = Encoding.Convert(ecUni, ecSjis, byteUni) 'unicodeのバイト配列からテキストに変換 Return ecSjis.GetString(byteSjis) End Function 'これも参考で使っていません '--------------------------------- 'Sjisをユニコードの文字列をに変換 '--------------------------------- Private Function SjisToUni(ByVal strSjis As String) As String 'unicodeのEcodingクラスに作成 Dim ecUni As Encoding = Encoding.Unicode 's-jisのEncodingクラスの作成 Dim ecSjis As Encoding = Encoding.GetEncoding("shift-jis") Dim byteSjis As Byte() = Encoding.Default.GetBytes(strSjis) Dim byteUni As Byte() = Encoding.Convert(ecSjis, ecUni, byteSjis) 'sjisのバイト配列からテキストに変換 Return ecUni.GetString(byteUni) End Function End Class
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.