回答編集履歴

6

夜に投稿した分ソースが変わってないので差し替え

2016/07/28 02:01

投稿

KIYOSHI
KIYOSHI

スコア268

test CHANGED
@@ -18,46 +18,68 @@
18
18
 
19
19
  ```C#
20
20
 
21
- // dataの先頭がMSなら。数字を10進数から
21
+ // dataの先頭がMSなら。数字を10進数から
22
22
 
23
- // Bit変換(5なら5Bit目を1)して
23
+ // Bit変換(5なら5Bit目を1)して
24
24
 
25
- if (data.ToUpper().StartsWith("MS,") == true)
25
+ if (data.ToUpper().StartsWith("MS,") == true)
26
26
 
27
- {
27
+ {
28
28
 
29
- int iLampNo = 0;
29
+ int iLampNo = 0;
30
30
 
31
31
 
32
32
 
33
- string sLampNo = data.Substring(3);
33
+ string sLampNo = data.Substring(3);
34
34
 
35
- if (int.TryParse(sLampNo, out iLampNo) == false)
35
+ if (int.TryParse(sLampNo, out iLampNo) == false)
36
36
 
37
- {
37
+ {
38
38
 
39
- // MS,の後が数字ではない
39
+ // MS,の後が数字ではない
40
40
 
41
- MessageBox.Show("MS,の後が数字ではない");
41
+ MessageBox.Show("MS,の後が数字ではない");
42
42
 
43
- return;
43
+ return;
44
44
 
45
- }
45
+ }
46
46
 
47
47
 
48
48
 
49
+ if (iLampNo >16)
50
+
51
+ {
52
+
53
+ // 16より大きいのでエラー
54
+
49
- string hLamp = Convert.ToString(iLampNo, 16);
55
+ MessageBox.Show("16まで");
56
+
57
+ return;
58
+
59
+ }
50
60
 
51
61
 
52
62
 
53
- data = "MS," + hLamp;
63
+ // Bit変換
54
64
 
55
- }
65
+ int bitLamp = 1 << (iLampNo-1);
56
66
 
57
67
 
58
68
 
69
+ // 16進数に変換
70
+
59
- serialPort1.Write(data + "\n");
71
+ string hLamp = Convert.ToString(bitLamp, 16);
60
72
 
61
73
 
62
74
 
75
+ // 送信用文字列
76
+
77
+ data = "MS," + hLamp;
78
+
79
+ }
80
+
81
+
82
+
83
+ serialPort1.Write(data + "\n");
84
+
63
85
  ```

5

夜に投稿した分

2016/07/28 02:01

投稿

KIYOSHI
KIYOSHI

スコア268

test CHANGED
File without changes

4

変更

2016/07/28 01:59

投稿

KIYOSHI
KIYOSHI

スコア268

test CHANGED
@@ -8,7 +8,11 @@
8
8
 
9
9
  ---
10
10
 
11
+ ###**追記**
12
+
13
+ コメントにともない、"MS,"で始まる場合は、
14
+
11
- 追記 MSの場合は、","以降を10進数としてBit変換し、16進数に置き換える
15
+ ","以降を10進数としてBit変換し、16進数に置き換える
12
16
 
13
17
 
14
18
 

3

処理修正

2016/07/27 12:08

投稿

KIYOSHI
KIYOSHI

スコア268

test CHANGED
@@ -8,6 +8,52 @@
8
8
 
9
9
  ---
10
10
 
11
- 追記 MSの場合は、","以降を10進数として16進数に置き換える
11
+ 追記 MSの場合は、","以降を10進数としてBit変換し、16進数に置き換える
12
12
 
13
13
 
14
+
15
+ ```C#
16
+
17
+ // dataの先頭がMSなら。数字を10進数から
18
+
19
+ // Bit変換(5なら5Bit目を1)して
20
+
21
+ if (data.ToUpper().StartsWith("MS,") == true)
22
+
23
+ {
24
+
25
+ int iLampNo = 0;
26
+
27
+
28
+
29
+ string sLampNo = data.Substring(3);
30
+
31
+ if (int.TryParse(sLampNo, out iLampNo) == false)
32
+
33
+ {
34
+
35
+ // MS,の後が数字ではない
36
+
37
+ MessageBox.Show("MS,の後が数字ではない");
38
+
39
+ return;
40
+
41
+ }
42
+
43
+
44
+
45
+ string hLamp = Convert.ToString(iLampNo, 16);
46
+
47
+
48
+
49
+ data = "MS," + hLamp;
50
+
51
+ }
52
+
53
+
54
+
55
+ serialPort1.Write(data + "\n");
56
+
57
+
58
+
59
+ ```

2

ちょっと修正

2016/07/27 12:03

投稿

KIYOSHI
KIYOSHI

スコア268

test CHANGED
@@ -11,45 +11,3 @@
11
11
  追記 MSの場合は、","以降を10進数として16進数に置き換える
12
12
 
13
13
 
14
-
15
- ```C#
16
-
17
- // dataの先頭がMSなら。数字を10進数から16進数に変換し送信文字列を作る
18
-
19
- if (data.ToUpper().StartsWith("MS,") == true)
20
-
21
- {
22
-
23
- int iLampNo = 0;
24
-
25
-
26
-
27
- string sLampNo = data.Substring(3);
28
-
29
- if (int.TryParse(sLampNo, out iLampNo) == false)
30
-
31
- {
32
-
33
- // MS,の後が数字ではない
34
-
35
- MessageBox.Show("MS,の後が数字ではない");
36
-
37
- return;
38
-
39
- }
40
-
41
-
42
-
43
- string hLamp = Convert.ToString(iLampNo, 16);
44
-
45
-
46
-
47
- data = "MS," + hLamp;
48
-
49
- }
50
-
51
-
52
-
53
- serialPort1.Write(data + "\n");
54
-
55
- ```

1

コメントに伴い追記

2016/07/27 11:50

投稿

KIYOSHI
KIYOSHI

スコア268

test CHANGED
@@ -3,3 +3,53 @@
3
3
  [追加情報依頼]に書かれているかたもいらっしゃいますが、
4
4
 
5
5
  MS,0001と送らないと認識しないのではないでしょうか?
6
+
7
+
8
+
9
+ ---
10
+
11
+ 追記 MSの場合は、","以降を10進数として16進数に置き換える
12
+
13
+
14
+
15
+ ```C#
16
+
17
+ // dataの先頭がMSなら。数字を10進数から16進数に変換し送信文字列を作る
18
+
19
+ if (data.ToUpper().StartsWith("MS,") == true)
20
+
21
+ {
22
+
23
+ int iLampNo = 0;
24
+
25
+
26
+
27
+ string sLampNo = data.Substring(3);
28
+
29
+ if (int.TryParse(sLampNo, out iLampNo) == false)
30
+
31
+ {
32
+
33
+ // MS,の後が数字ではない
34
+
35
+ MessageBox.Show("MS,の後が数字ではない");
36
+
37
+ return;
38
+
39
+ }
40
+
41
+
42
+
43
+ string hLamp = Convert.ToString(iLampNo, 16);
44
+
45
+
46
+
47
+ data = "MS," + hLamp;
48
+
49
+ }
50
+
51
+
52
+
53
+ serialPort1.Write(data + "\n");
54
+
55
+ ```