前提・実現したいこと
シリアル通信によりリアルタイムに取得したデータを一つ前の取得データと比較して差が閾値を超えていた場合、新規のデータを前のデータに書き換えたい
発生している問題・エラーメッセージ
一番初めにjudgeの部分で取得したold_mDATAZ()の値よりも下の値が取得された際は前後のデータを比較し、閾値よりも差が大きければ前の値を補間することに成功しましたが、データの値が上昇に転じると上昇直前の値が常に出力されてしまいます。
該当のソースコード
Dim judge as integer = 0//グローバル変数 Private Sub AddData(ByVal str As String) '///取得データ処理関数 STX = Asc(Strings.Mid(str, 2, 1)) 'STX ETX = Asc(Strings.Right(str, 1)) 'ETX 'データ入力 For i = 1 To chlength * 6 Step 1 rDATA(i) = Asc(Strings.Mid(str, i + 2, 1)) Next If STX = &H2 And ETX = &H3 Then TextBox1.Text = "Connect" Index = 1 'アスキーデータを数値に変換 For i = 1 To chlength * 6 Step 6 mDATAZ(Index) = (rDATA(i) - &H41) * 256 + (rDATA(i + 1) - &H41) * 16 + (rDATA(i + 2) - &H41) Index = Index + 1 Next If judge = 0 Then '///スタート時だけ別途取得の必要あり(初回のみ動作) For s = 1 To chlength Step 1 old_mDATAZ(s) = mDATAZ(s) Next judge = 1 End If For q = 1 To chlength Step 1 hikaku1(q) = mDATAZ(q) - old_mDATAZ(q) If hikaku1(q) > TrackBar1.Value Then//前後のデータを比較 mDATAZ(q) = old_mDATAZ(q)//閾値以上の差があれば前のデータを補間 End If old_mDATAZ(q) = mDATAZ(q) Next
回答2件
あなたの回答
tips
プレビュー