teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

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

2017/09/07 05:51

投稿

dero223
dero223

スコア15

title CHANGED
File without changes
body CHANGED
@@ -42,8 +42,9 @@
42
42
 
43
43
  送信側のシリアル通信をするプログラムは以下のようになっています。
44
44
  こちらのサイトを参考にしました。
45
- (http://www.ys-labo.com/BCB/2007/070512%20RS232C%20zenpan.html)
45
+ (http://www.ys-labo.com/BCB/2007/070512%20RS232C%20zenpan.html)
46
46
 
47
+ BoneDSstrという部分に前述の<○○○.○○>という文字が入ってきています。
47
48
 
48
49
  ```
49
50
  void SerialConnectOpen(){
@@ -148,7 +149,6 @@
148
149
 
149
150
  ```
150
151
 
151
-
152
152
  ###補足情報(言語/FW/ツール等のバージョンなど)
153
153
  com0comでデバッグしています。
154
154
  ボーレートはどちらも9600に設定してあります。

2

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

2017/09/07 05:51

投稿

dero223
dero223

スコア15

title CHANGED
File without changes
body CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ###発生している問題・エラーメッセージ
6
6
 
7
- 入力は、
7
+ 入力は、例として
8
8
  ```
9
9
  <119.98>
10
10
  <120.68>
@@ -25,11 +25,130 @@
25
25
 
26
26
  ```
27
27
  上記が現在の出力結果です。
28
+ (出力の結果は任意の数字が入っているため、例に書いてある数値そのものではなく、○○○.○○という数値が入ってあると考えております。)
28
29
 
29
30
  どうしてこのような文字になってしまうのか分かりません。
30
31
  どのあたりに問題がありそうか教えて頂きたいと思っています。
31
32
 
33
+ 追記
32
34
 
35
+ HEX表示をONにしたとき、以下のように
36
+
37
+ ```
38
+ <->受 <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>>
39
+
40
+ ```
41
+ と<3c>という文字と<00>と<cd>という文字が混ざりました。
42
+
43
+ 送信側のシリアル通信をするプログラムは以下のようになっています。
44
+ こちらのサイトを参考にしました。
45
+ (http://www.ys-labo.com/BCB/2007/070512%20RS232C%20zenpan.html)
46
+
47
+
48
+ ```
49
+ void SerialConnectOpen(){
50
+
51
+ comPort = CreateFile(_T("COM9"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);
52
+
53
+
54
+ if(comPort==INVALID_HANDLE_VALUE){
55
+ cout<<"Port Could Not Open"<<endl;
56
+ Sleep(3000);
57
+ exit(0);
58
+ }
59
+
60
+ Ret = SetupComm(comPort,1024,1024);
61
+ if(Ret==FALSE){
62
+ printf("SetComm failed.\n");
63
+ CloseHandle(comPort);
64
+ Sleep(3000);
65
+ exit(0);
66
+ }
67
+ Ret = PurgeComm(comPort,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
68
+ if(Ret == FALSE){
69
+ printf("PurgeComm failed.\n");
70
+ CloseHandle(comPort);
71
+ exit(0);
72
+ }
73
+
74
+ DCB dcb;
75
+ GetCommState(comPort, &dcb);
76
+ dcb.BaudRate = 9600;
77
+ dcb.ByteSize = 8;
78
+ dcb.Parity = NOPARITY;
79
+ dcb.StopBits = ONESTOPBIT;
80
+
81
+ dcb.fOutxCtsFlow = FALSE;
82
+ dcb.fOutxDsrFlow = FALSE;
83
+ dcb.fDtrControl = DTR_CONTROL_DISABLE;
84
+
85
+ dcb.fOutX = FALSE;
86
+ dcb.fInX = FALSE;
87
+ dcb.fRtsControl = RTS_CONTROL_ENABLE;
88
+
89
+ Ret = SetCommState(comPort, &dcb);
90
+ if(Ret == FALSE){
91
+ printf("SetCommState failed.\n");
92
+ CloseHandle(comPort);
93
+ Sleep(3000);
94
+ exit(0);
95
+ }
96
+
97
+ COMMTIMEOUTS timeout;
98
+
99
+ timeout.ReadIntervalTimeout = 500;
100
+ timeout.ReadTotalTimeoutMultiplier = 0;
101
+ timeout.ReadTotalTimeoutConstant = 500;
102
+ timeout.WriteTotalTimeoutMultiplier = 0;
103
+ timeout.WriteTotalTimeoutConstant = 500;
104
+
105
+ Ret = SetCommTimeouts(comPort, &timeout);
106
+
107
+ if(Ret == FALSE) {
108
+ printf("SetCommTimeouts failed.\n");
109
+ CloseHandle(comPort);
110
+ Sleep(3000);
111
+ exit(0);
112
+ }
113
+ printf("SerialOpen is SUCCESS !\n");
114
+ CheckSerial = 0;
115
+
116
+ };/*シリアルポートを開く*/
117
+
118
+
119
+
120
+ void SerialWrite(){
121
+
122
+ DWORD dwSendSize;
123
+ COMSTAT Comstat;
124
+ DWORD dwErrorMask;
125
+ unsigned int DataSize;
126
+ int MAX = 20;
127
+
128
+ DataSize = BoneDSstr.size();
129
+
130
+ Ret=WriteFile(comPort,&BoneDSstr,BoneDSstr.size(),&dwSendSize,NULL);
131
+
132
+ if(Ret == FALSE)
133
+ printf("WriteFile failed.\n");
134
+ CloseHandle(comPort);
135
+ exit(0);
136
+ }
137
+ };
138
+
139
+ //シリアル通信書き込み用に使用する変数
140
+
141
+ HANDLE comPort;
142
+ bool Ret;
143
+ string BoneDSstr;
144
+
145
+ DWORD dwSendSize;
146
+ COMSTAT Comstat ;
147
+ DWORD dwErrorMask ;
148
+
149
+ ```
150
+
151
+
33
152
  ###補足情報(言語/FW/ツール等のバージョンなど)
34
153
  com0comでデバッグしています。
35
154
  ボーレートはどちらも9600に設定してあります。

1

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

2017/09/07 03:16

投稿

dero223
dero223

スコア15

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