質問編集履歴

3

表記したコードに自分の入れた数値がどこに入っているのか表記していませんでした。重ね重ねお詫び申し上げます。

2017/09/07 05:51

投稿

dero223
dero223

スコア15

test CHANGED
File without changes
test CHANGED
@@ -86,9 +86,11 @@
86
86
 
87
87
  こちらのサイトを参考にしました。
88
88
 
89
- (http://www.ys-labo.com/BCB/2007/070512%20RS232C%20zenpan.html)
89
+ (http://www.ys-labo.com/BCB/2007/070512%20RS232C%20zenpan.html)
90
+
91
+
92
+
90
-
93
+ BoneDSstrという部分に前述の<○○○.○○>という文字が入ってきています。
91
-
92
94
 
93
95
 
94
96
 
@@ -298,8 +300,6 @@
298
300
 
299
301
 
300
302
 
301
-
302
-
303
303
  ###補足情報(言語/FW/ツール等のバージョンなど)
304
304
 
305
305
  com0comでデバッグしています。

2

ご指摘頂いたHEX表示にした結果の追加、入力のデータと出力データの対応、送信側のプログラムのソースコードを追記しました。お手数をお掛けして申し訳ありません。ありがとうございます。

2017/09/07 05:51

投稿

dero223
dero223

スコア15

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- 入力は、
13
+ 入力は、例として
14
14
 
15
15
  ```
16
16
 
@@ -52,6 +52,8 @@
52
52
 
53
53
  上記が現在の出力結果です。
54
54
 
55
+ (出力の結果は任意の数字が入っているため、例に書いてある数値そのものではなく、○○○.○○という数値が入ってあると考えております。)
56
+
55
57
 
56
58
 
57
59
  どうしてこのような文字になってしまうのか分かりません。
@@ -60,6 +62,242 @@
60
62
 
61
63
 
62
64
 
65
+ 追記
66
+
67
+
68
+
69
+ HEX表示をONにしたとき、以下のように
70
+
71
+
72
+
73
+ ```
74
+
75
+ <->受 <00><00><00><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd><cd><cd><3c><00><00><00><00><cd><cd>>
76
+
77
+
78
+
79
+ ```
80
+
81
+ と<3c>という文字と<00>と<cd>という文字が混ざりました。
82
+
83
+
84
+
85
+ 送信側のシリアル通信をするプログラムは以下のようになっています。
86
+
87
+ こちらのサイトを参考にしました。
88
+
89
+ (http://www.ys-labo.com/BCB/2007/070512%20RS232C%20zenpan.html)
90
+
91
+
92
+
93
+
94
+
95
+ ```
96
+
97
+ void SerialConnectOpen(){
98
+
99
+
100
+
101
+ comPort = CreateFile(_T("COM9"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);
102
+
103
+
104
+
105
+
106
+
107
+ if(comPort==INVALID_HANDLE_VALUE){
108
+
109
+ cout<<"Port Could Not Open"<<endl;
110
+
111
+ Sleep(3000);
112
+
113
+ exit(0);
114
+
115
+ }
116
+
117
+
118
+
119
+ Ret = SetupComm(comPort,1024,1024);
120
+
121
+ if(Ret==FALSE){
122
+
123
+ printf("SetComm failed.\n");
124
+
125
+ CloseHandle(comPort);
126
+
127
+ Sleep(3000);
128
+
129
+ exit(0);
130
+
131
+ }
132
+
133
+ Ret = PurgeComm(comPort,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
134
+
135
+ if(Ret == FALSE){
136
+
137
+ printf("PurgeComm failed.\n");
138
+
139
+ CloseHandle(comPort);
140
+
141
+ exit(0);
142
+
143
+ }
144
+
145
+
146
+
147
+ DCB dcb;
148
+
149
+ GetCommState(comPort, &dcb);
150
+
151
+ dcb.BaudRate = 9600;
152
+
153
+ dcb.ByteSize = 8;
154
+
155
+ dcb.Parity = NOPARITY;
156
+
157
+ dcb.StopBits = ONESTOPBIT;
158
+
159
+
160
+
161
+ dcb.fOutxCtsFlow = FALSE;
162
+
163
+ dcb.fOutxDsrFlow = FALSE;
164
+
165
+ dcb.fDtrControl = DTR_CONTROL_DISABLE;
166
+
167
+
168
+
169
+ dcb.fOutX = FALSE;
170
+
171
+ dcb.fInX = FALSE;
172
+
173
+ dcb.fRtsControl = RTS_CONTROL_ENABLE;
174
+
175
+
176
+
177
+ Ret = SetCommState(comPort, &dcb);
178
+
179
+ if(Ret == FALSE){
180
+
181
+ printf("SetCommState failed.\n");
182
+
183
+ CloseHandle(comPort);
184
+
185
+ Sleep(3000);
186
+
187
+ exit(0);
188
+
189
+ }
190
+
191
+
192
+
193
+ COMMTIMEOUTS timeout;
194
+
195
+
196
+
197
+ timeout.ReadIntervalTimeout = 500;
198
+
199
+ timeout.ReadTotalTimeoutMultiplier = 0;
200
+
201
+ timeout.ReadTotalTimeoutConstant = 500;
202
+
203
+ timeout.WriteTotalTimeoutMultiplier = 0;
204
+
205
+ timeout.WriteTotalTimeoutConstant = 500;
206
+
207
+
208
+
209
+ Ret = SetCommTimeouts(comPort, &timeout);
210
+
211
+
212
+
213
+ if(Ret == FALSE) {
214
+
215
+ printf("SetCommTimeouts failed.\n");
216
+
217
+ CloseHandle(comPort);
218
+
219
+ Sleep(3000);
220
+
221
+ exit(0);
222
+
223
+ }
224
+
225
+ printf("SerialOpen is SUCCESS !\n");
226
+
227
+ CheckSerial = 0;
228
+
229
+
230
+
231
+ };/*シリアルポートを開く*/
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+ void SerialWrite(){
240
+
241
+
242
+
243
+ DWORD dwSendSize;
244
+
245
+ COMSTAT Comstat;
246
+
247
+ DWORD dwErrorMask;
248
+
249
+ unsigned int DataSize;
250
+
251
+ int MAX = 20;
252
+
253
+
254
+
255
+ DataSize = BoneDSstr.size();
256
+
257
+
258
+
259
+ Ret=WriteFile(comPort,&BoneDSstr,BoneDSstr.size(),&dwSendSize,NULL);
260
+
261
+
262
+
263
+ if(Ret == FALSE)
264
+
265
+ printf("WriteFile failed.\n");
266
+
267
+ CloseHandle(comPort);
268
+
269
+ exit(0);
270
+
271
+ }
272
+
273
+ };
274
+
275
+
276
+
277
+ //シリアル通信書き込み用に使用する変数
278
+
279
+
280
+
281
+ HANDLE comPort;
282
+
283
+ bool Ret;
284
+
285
+ string BoneDSstr;
286
+
287
+
288
+
289
+ DWORD dwSendSize;
290
+
291
+ COMSTAT Comstat ;
292
+
293
+ DWORD dwErrorMask ;
294
+
295
+
296
+
297
+ ```
298
+
299
+
300
+
63
301
 
64
302
 
65
303
  ###補足情報(言語/FW/ツール等のバージョンなど)

1

ご指摘頂いた通り、入力と出力に関する情報が明確でなかったため余計な情報を削除し、必要と思われる情報を加えました。お手数お掛けして申し訳ありません。

2017/09/07 03:16

投稿

dero223
dero223

スコア15

test CHANGED
File without changes
test CHANGED
@@ -1,28 +1,46 @@
1
1
  ###前提・実現したいこと
2
2
 
3
+ VisualStudio2008(VC++)のプログラムにて、string型の文字列のデータをRS232テストツール(
4
+
3
- VisualStudio2008にて、LeapMotionの数値情報を読み取りその数値の一部を文字列(string型)に変換しRS232テストツールに送信し、送信した情報がどのようになっているかを確認したいと思っています。
5
+ (http://nonsoft.la.coocan.jp/Download/Rs232cTool/index.html))に送信し、送信した情報がどのようになっているかを確認したいと思っています。
4
6
 
5
7
 
6
8
 
7
9
  ###発生している問題・エラーメッセージ
8
10
 
11
+
12
+
9
- 本来は、VisualStudio2008のコンソール側に出ている
13
+ 入力は、
10
14
 
11
15
  ```
12
16
 
13
17
  <119.98>
14
18
 
19
+ <120.68>
20
+
15
21
  ```
16
22
 
17
- 文字列を取得、連続で送信しているはずなのでが、RS232テストツール
23
+ などの文字列です。<>の中に送信した数値を入れてstring型の文字列送信してい
18
24
 
19
- (http://nonsoft.la.coocan.jp/Download/Rs232cTool/index.html)
20
-
21
- には、以下よう変換されてしまいます。
25
+ 文字列が出力側でも同様送信され
22
26
 
23
27
  ```
24
28
 
25
29
  接続 COM8
30
+
31
+ ->受<119.98>
32
+
33
+ ->受<120.68>
34
+
35
+
36
+
37
+ ```
38
+
39
+ のような出力結果になると期待、予想していたのですが
40
+
41
+ RS232テストツールにおいては以下のような結果となってしまいました。
42
+
43
+ ```
26
44
 
27
45
  ->受 <NUL><NUL><NUL><NUL><cd><cd><cd><cd><<NUL><NUL><NUL>
28
46
 
@@ -31,6 +49,10 @@
31
49
 
32
50
 
33
51
  ```
52
+
53
+ 上記が現在の出力結果です。
54
+
55
+
34
56
 
35
57
  どうしてこのような文字になってしまうのか分かりません。
36
58