質問編集履歴

3

図の添付

2018/02/22 09:55

投稿

sotooki
sotooki

スコア15

test CHANGED
File without changes
test CHANGED
@@ -11,6 +11,8 @@
11
11
 
12
12
 
13
13
  一番初めにjudgeの部分で取得したold_mDATAZ()の値よりも下の値が取得された際は前後のデータを比較し、閾値よりも差が大きければ前の値を補間することに成功しましたが、データの値が上昇に転じると上昇直前の値が常に出力されてしまいます。
14
+
15
+ ![イメージ説明](2992727f2aa189c47575ab694c8262c7.jpeg)
14
16
 
15
17
 
16
18
 

2

文法修正

2018/02/22 09:55

投稿

sotooki
sotooki

スコア15

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- 一番初めにjudgeの部分で取得したold_mDATAZ()の値よりも下の値が取得された際は前後のデータを比較し、閾値よりも差が大きければ前の値を補間することに成功しましたが、old_mDATAZ()の値よりも少し上の値が取得されると比較を行わず、常に同じ値が出力されてしまいます。
13
+ 一番初めにjudgeの部分で取得したold_mDATAZ()の値よりも下の値が取得された際は前後のデータを比較し、閾値よりも差が大きければ前の値を補間することに成功しましたが、データの値昇に転じると上昇直前の値が常に出力されてしまいます。
14
14
 
15
15
 
16
16
 

1

改善後の問題

2018/02/22 09:51

投稿

sotooki
sotooki

スコア15

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- 換え起こらず、常に動作しなくなってしまった
13
+ 一番初めにjudgeの部分で取得したold_mDATAZ()の値よりも下の値が取得された際は前後のデータを比較し、閾値よりも差が大ければ前の値を補間することに成功しました、old_mDATAZ()の値よりも少し上の値が取得されると比較を行わず、常に同じ値が出力されてしまいます
14
14
 
15
15
 
16
16
 
@@ -20,9 +20,17 @@
20
20
 
21
21
  ```ここに言語名を入力
22
22
 
23
+ Dim judge as integer = 0//グローバル変数
24
+
25
+
26
+
23
27
  Private Sub AddData(ByVal str As String)
24
28
 
29
+
30
+
31
+
32
+
25
- '///取得データ処理関数
33
+ '///取得データ処理関数
26
34
 
27
35
  STX = Asc(Strings.Mid(str, 2, 1)) 'STX
28
36
 
@@ -30,7 +38,7 @@
30
38
 
31
39
  'データ入力
32
40
 
33
- For i = 1 To chlength * 6 Step 1//2ch交互にデータを取得
41
+ For i = 1 To chlength * 6 Step 1
34
42
 
35
43
  rDATA(i) = Asc(Strings.Mid(str, i + 2, 1))
36
44
 
@@ -44,46 +52,66 @@
44
52
 
45
53
  Index = 1
46
54
 
47
-
48
-
49
- 'アスキーデータを数値に変換
55
+ 'アスキーデータを数値に変換
50
56
 
51
57
  For i = 1 To chlength * 6 Step 6
52
58
 
59
+
60
+
53
61
  mDATAZ(Index) = (rDATA(i) - &H41) * 256 + (rDATA(i + 1) - &H41) * 16 + (rDATA(i + 2) - &H41)
54
62
 
63
+
64
+
55
- Index = Index + 1
65
+ Index = Index + 1
56
66
 
57
67
  Next
58
68
 
59
69
 
60
70
 
61
- For q = 1 To chlength
71
+ If judge = 0 Then '///スタート時だけ別途取得の必要あり(初回のみ動作)
62
72
 
73
+ For s = 1 To chlength Step 1
74
+
63
-   If mDATAZ(q) - old_mDATAZ(q) > TrackBar1.Value Then//前後のデータを比較
75
+ old_mDATAZ(s) = mDATAZ(s)
76
+
77
+ Next
78
+
79
+ judge = 1
80
+
81
+ End If
64
82
 
65
83
 
66
84
 
67
- mDATAZ(q) = old_mDATAZ(q)
68
85
 
69
- End If
70
86
 
71
- Next
87
+ For q = 1 To chlength Step 1
72
88
 
73
89
 
74
90
 
75
- For s = 1 To chlength Step 1
91
+ hikaku1(q) = mDATAZ(q) - old_mDATAZ(q)
76
92
 
93
+
94
+
95
+ If hikaku1(q) > TrackBar1.Value Then//前後のデータを比較
96
+
97
+
98
+
99
+ mDATAZ(q) = old_mDATAZ(q)//閾値以上の差があれば前のデータを補間
100
+
101
+
102
+
103
+ End If
104
+
105
+
106
+
77
- old_mDATAZ(s) = mDATAZ(s)
107
+ old_mDATAZ(q) = mDATAZ(q)
108
+
109
+
110
+
111
+
112
+
113
+
78
114
 
79
115
  Next
80
116
 
81
117
  ```
82
-
83
-
84
-
85
- ### 試したこと
86
-
87
-
88
-
89
- 計測第一個目の値がないため比較できていないとは思いますが、どのように記述すればよいかわかりません。