こんにちは。ビジュアルスタジオでC#を使ってWindows Formsアプリを作成しています。質問なんですが、
シリアル通信で豆電球を点灯させたり、消灯させたりしています。
フォームには テキストボックスと送信ボタンとチェックボックス16個あります。
豆電球が16個ついている装置をUSBとつないでます。
チェックボックス1をチェックすると豆電球1が点灯します。チェックを外すと消灯します。
装置とアプリの関係は
・アプリでコマンド値(16進数)をテキストぼっくすに入力して送信ボタンを押すとシリアル通信でそのコマンドを送出する
・コマンド値は豆電球のオンオフをビットパターンで表していて、0x0001=豆電球1~0x8000=豆電球16に対応している。
・コマンド送信を実行すると、コマンド値でビットが1になっている豆電球について、アプリ側ではチェックボックスがオンになり装置側では豆電球が点灯する(ビットが0ならチェックがオフ、豆電球が消灯)
やりたいことは
テキストボックスに16進数の文字を入力して豆電球1,2,3を点灯させたり、豆電球3、5、7、9を点滅させて、その点滅させた豆電球の番号と、チェックボックスの番号を連動させてチェックさせたいです。
そしてデバックしてテキストボックスに"mh,ffff"と入力して送信すると豆電球は全部点灯するんですけど
”認識可能な数値が見つかりませんでした” とでできます。
なんか対処法はないでしょうか?ご教授お願いいたします。
コードは次のようになります。
try
{
//! シリアルポートからテキストを送信する.
serialPort1.Write(data +"\n");
//入力された16進数文字列を数値に変換 int value = Convert.ToInt32(data, 16); for (int i = 1; i <= 16; i++) { //画面上の処理対象チェックボックスコントロールを特定 Control[] cs = this.Controls.Find("CheckBox" + i.ToString(), true); //チェック対象ビットに1が立っていればチェックオン、0ならチェックオフ ((CheckBox)cs[0]).Checked = ((value & (1 << (i - 1))) > 0); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/26 06:56
2016/07/26 07:07
2016/07/26 08:28
2016/07/26 08:42
2016/07/26 11:38
2016/07/26 12:09
2016/07/27 02:59