回答編集履歴

2

追記2

2016/07/26 01:31

投稿

takito
takito

スコア3111

test CHANGED
@@ -106,4 +106,66 @@
106
106
 
107
107
 
108
108
 
109
+ ---
109
110
 
111
+ (追記2)
112
+
113
+
114
+
115
+ やること
116
+
117
+ ・エディットボックスに入力される16進数値からビットパターンを抽出
118
+
119
+ ・ビットごとに割り当てられた16個のチェックボックスのON/OFF処理をする
120
+
121
+
122
+
123
+ 前提
124
+
125
+ ・エディットボックスに入力される文字は 0000 ~ ffff とします(f の場合は 000f と扱います)
126
+
127
+ ・チェックボックスの名前は「checkBox1~checkBox16」と想定します
128
+
129
+
130
+
131
+ ざっくりとこんな感じに書けます
132
+
133
+
134
+
135
+ ```c#
136
+
137
+ try {
138
+
139
+ //! シリアルポートからテキストを送信する.
140
+
141
+ serialPort1.Write( data );
142
+
143
+
144
+
145
+ //入力された16進数文字列を数値に変換
146
+
147
+ int value = Convert.ToInt32(data, 16);
148
+
149
+ //1ビット目~16ビット目まで処理
150
+
151
+ for( int i = 1; i <= 16; i++) {
152
+
153
+ //画面上の処理対象チェックボックスコントロールを特定
154
+
155
+ Control[] cs = this.Controls.Find("CheckBox" + i.ToString(), true);
156
+
157
+ //チェック対象ビットに1が立っていればチェックオン、0ならチェックオフ
158
+
159
+ ((CheckBox)cs[0]).Checked = ((value & (1 << (i - 1))) > 0);
160
+
161
+ }
162
+
163
+ }
164
+
165
+ ```
166
+
167
+
168
+
169
+ 正常ルートだけならこれで動くと思います
170
+
171
+ 必要なら、異常判定処理を追加してください

1

追記

2016/07/26 01:31

投稿

takito
takito

スコア3111

test CHANGED
@@ -27,3 +27,83 @@
27
27
 
28
28
 
29
29
  具体的にプログラムのどの部分にどう書けばよいかまでアドバイスが欲しいようでしたら、ソースを開示ください
30
+
31
+
32
+
33
+ ---
34
+
35
+ (追記)
36
+
37
+
38
+
39
+ 「シリアルポートからテキストを送信する」の処理の後に、テキストボックスの中身を判定して、該当するチェックボックス側をオンにすればよいと思います
40
+
41
+ こんな感じに
42
+
43
+
44
+
45
+ ```c#
46
+
47
+ try {
48
+
49
+ //! シリアルポートからテキストを送信する.
50
+
51
+ serialPort1.Write( data );
52
+
53
+ switch( data ) {
54
+
55
+ case "a1":
56
+
57
+ //豆電球1を光らせた
58
+
59
+ this.checkBox1.Checked = true;
60
+
61
+ break;
62
+
63
+ case "a2":
64
+
65
+ //豆電球2を光らせた
66
+
67
+ this.checkBox2.Checked = true;
68
+
69
+ break;
70
+
71
+ default:
72
+
73
+ break;
74
+
75
+ }
76
+
77
+ }
78
+
79
+ ```
80
+
81
+
82
+
83
+ ただし、これだと`オフにするタイミング`が無いですね
84
+
85
+ それは大丈夫でしょうか?
86
+
87
+
88
+
89
+ ケース1:豆電球は手動で何かをするまで消えないようにできている(電源をオフにする、リセットボタンを押すなど)
90
+
91
+
92
+
93
+ → アプリ側で豆電球の状態を知る方法が無ければ、チェックボックスも手動でオフにするしかないでしょう
94
+
95
+
96
+
97
+ ケース2:豆電球はどちらか一方しか点灯しないようにできている(たとえば豆電球1を点灯後、豆電球2をつづけて点灯させると、豆電球1が自動で消える)
98
+
99
+
100
+
101
+ → チェックボックスのオンオフ状態も合わせた方がよいかもしれませんね
102
+
103
+   具体的には、片方のチェックボックスをオン(true)にしたタイミングにもう片方のチェックボックスをオフ(false)にしてあげればよいでしょう
104
+
105
+
106
+
107
+
108
+
109
+