質問編集履歴

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

dero223

dero223 score 11

2017/09/07 14:51  投稿

RS232Cテストツールを使用したシリアル通信のテストにて、送信したい文字が送信できない。
###前提・実現したいこと
VisualStudio2008(VC++)のプログラムにて、string型の文字列のデータをRS232テストツール(
(http://nonsoft.la.coocan.jp/Download/Rs232cTool/index.html))に送信し、送信した情報がどのようになっているかを確認したいと思っています。
###発生している問題・エラーメッセージ
入力は、例として
```
<119.98>
<120.68>
```
などの文字列です。<>の中に送信したい数値を入れてstring型の文字列として送信しています。
この文字列が出力側でも同様に送信され、
```
接続 COM8
->受<119.98>
->受<120.68>
```
のような出力結果になると期待、予想していたのですが
RS232テストツールにおいては以下のような結果となってしまいました。
```
->受 <NUL><NUL><NUL><NUL><cd><cd><cd><cd><<NUL><NUL><NUL>
->受 <NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><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>
```
上記が現在の出力結果です。
(出力の結果は任意の数字が入っているため、例に書いてある数値そのものではなく、○○○.○○という数値が入ってあると考えております。)
どうしてこのような文字になってしまうのか分かりません。
どのあたりに問題がありそうか教えて頂きたいと思っています。
追記
HEX表示をONにしたとき、以下のように
```
<->受 <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>>
```
と<3c>という文字と<00>と<cd>という文字が混ざりました。
送信側のシリアル通信をするプログラムは以下のようになっています。
こちらのサイトを参考にしました。
(http://www.ys-labo.com/BCB/2007/070512%20RS232C%20zenpan.html)
(http://www.ys-labo.com/BCB/2007/070512%20RS232C%20zenpan.html)
BoneDSstrという部分に前述の<○○○.○○>という文字が入ってきています。  
```
     void SerialConnectOpen(){
       comPort = CreateFile(_T("COM9"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);
       
       if(comPort==INVALID_HANDLE_VALUE){
           cout<<"Port Could Not Open"<<endl;
           Sleep(3000);
           exit(0);
       }
       Ret = SetupComm(comPort,1024,1024);
       if(Ret==FALSE){
           printf("SetComm failed.\n");
           CloseHandle(comPort);
           Sleep(3000);
           exit(0);
       }
       Ret = PurgeComm(comPort,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
       if(Ret == FALSE){
       printf("PurgeComm failed.\n");
       CloseHandle(comPort);
       exit(0);
       }
       DCB dcb;
       GetCommState(comPort, &dcb);
       dcb.BaudRate = 9600;
       dcb.ByteSize = 8;
       dcb.Parity = NOPARITY;
       dcb.StopBits = ONESTOPBIT;
       
       dcb.fOutxCtsFlow = FALSE;
       dcb.fOutxDsrFlow = FALSE;
       dcb.fDtrControl = DTR_CONTROL_DISABLE;
       dcb.fOutX = FALSE;
       dcb.fInX = FALSE;
       dcb.fRtsControl = RTS_CONTROL_ENABLE;
       
       Ret = SetCommState(comPort, &dcb);
       if(Ret == FALSE){
           printf("SetCommState failed.\n");
           CloseHandle(comPort);
           Sleep(3000);
           exit(0);
       }
       COMMTIMEOUTS timeout;
       timeout.ReadIntervalTimeout = 500;                                               
       timeout.ReadTotalTimeoutMultiplier = 0;
   timeout.ReadTotalTimeoutConstant = 500;
       timeout.WriteTotalTimeoutMultiplier = 0;
   timeout.WriteTotalTimeoutConstant = 500;
   Ret = SetCommTimeouts(comPort, &timeout);
                                                   
       if(Ret == FALSE)        {
           printf("SetCommTimeouts failed.\n");
           CloseHandle(comPort);
           Sleep(3000);
           exit(0);
       }
     printf("SerialOpen is SUCCESS !\n");
     CheckSerial = 0;
     };/*シリアルポートを開く*/
     
     
     void SerialWrite(){
       
       DWORD dwSendSize;
       COMSTAT Comstat;
       DWORD dwErrorMask;
       unsigned int DataSize;
       int MAX = 20;
       DataSize = BoneDSstr.size();   
   Ret=WriteFile(comPort,&BoneDSstr,BoneDSstr.size(),&dwSendSize,NULL);
       if(Ret == FALSE)
            printf("WriteFile failed.\n");
           CloseHandle(comPort);
           exit(0);
       }   
     };
     //シリアル通信書き込み用に使用する変数
     HANDLE comPort;
     bool Ret;
     string BoneDSstr;
     DWORD dwSendSize;
     COMSTAT Comstat ;
     DWORD dwErrorMask ;
```
 
###補足情報(言語/FW/ツール等のバージョンなど)
com0comでデバッグしています。
ボーレートはどちらも9600に設定してあります。
送信しようとしている文字列が<119.98>などになっていることはVisualStudio側のプログラムで確認しています。
  • Visual Studio

    2543 questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • シリアルポート

    63 questions

    シリアルポートは一度に一ビットごと移行される物理的なインターフェイスです。一般的には、9ピンのd-subコネクタであるRS-232を指します。

  • Leap Motion

    34 questions

    Leap Motionは、Leap Motionによって開発、販売している、手のジェスチャーでパソコンを操作できるデバイスです。

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

dero223

dero223 score 11

2017/09/07 12:16  投稿

RS232Cテストツールを使用したシリアル通信のテストにて、送信したい文字が送信できない。
###前提・実現したいこと
VisualStudio2008(VC++)のプログラムにて、string型の文字列のデータをRS232テストツール(
(http://nonsoft.la.coocan.jp/Download/Rs232cTool/index.html))に送信し、送信した情報がどのようになっているかを確認したいと思っています。
###発生している問題・エラーメッセージ
入力は、
入力は、例として
```
<119.98>
<120.68>
```
などの文字列です。<>の中に送信したい数値を入れてstring型の文字列として送信しています。
この文字列が出力側でも同様に送信され、
```
接続 COM8
->受<119.98>
->受<120.68>
```
のような出力結果になると期待、予想していたのですが
RS232テストツールにおいては以下のような結果となってしまいました。
```
->受 <NUL><NUL><NUL><NUL><cd><cd><cd><cd><<NUL><NUL><NUL>
->受 <NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><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>
```
上記が現在の出力結果です。
(出力の結果は任意の数字が入っているため、例に書いてある数値そのものではなく、○○○.○○という数値が入ってあると考えております。)  
どうしてこのような文字になってしまうのか分かりません。
どのあたりに問題がありそうか教えて頂きたいと思っています。
 
追記  
 
HEX表示をONにしたとき、以下のように  
 
```  
<->受 <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>>  
 
```  
と<3c>という文字と<00>と<cd>という文字が混ざりました。  
 
送信側のシリアル通信をするプログラムは以下のようになっています。  
こちらのサイトを参考にしました。  
(http://www.ys-labo.com/BCB/2007/070512%20RS232C%20zenpan.html)  
 
 
```  
     void SerialConnectOpen(){  
 
       comPort = CreateFile(_T("COM9"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);  
 
         
       if(comPort==INVALID_HANDLE_VALUE){  
           cout<<"Port Could Not Open"<<endl;  
           Sleep(3000);  
           exit(0);  
       }  
 
       Ret = SetupComm(comPort,1024,1024);  
       if(Ret==FALSE){  
           printf("SetComm failed.\n");  
           CloseHandle(comPort);  
           Sleep(3000);  
           exit(0);  
       }  
       Ret = PurgeComm(comPort,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);  
       if(Ret == FALSE){  
       printf("PurgeComm failed.\n");  
       CloseHandle(comPort);  
       exit(0);  
       }  
 
       DCB dcb;  
       GetCommState(comPort, &dcb);  
       dcb.BaudRate = 9600;  
       dcb.ByteSize = 8;  
       dcb.Parity = NOPARITY;  
       dcb.StopBits = ONESTOPBIT;  
         
       dcb.fOutxCtsFlow = FALSE;  
       dcb.fOutxDsrFlow = FALSE;  
       dcb.fDtrControl = DTR_CONTROL_DISABLE;  
 
       dcb.fOutX = FALSE;  
       dcb.fInX = FALSE;  
       dcb.fRtsControl = RTS_CONTROL_ENABLE;  
         
       Ret = SetCommState(comPort, &dcb);  
       if(Ret == FALSE){  
           printf("SetCommState failed.\n");  
           CloseHandle(comPort);  
           Sleep(3000);  
           exit(0);  
       }  
 
       COMMTIMEOUTS timeout;  
 
       timeout.ReadIntervalTimeout = 500;                                                 
       timeout.ReadTotalTimeoutMultiplier = 0;  
   timeout.ReadTotalTimeoutConstant = 500;  
       timeout.WriteTotalTimeoutMultiplier = 0;  
   timeout.WriteTotalTimeoutConstant = 500;  
 
   Ret = SetCommTimeouts(comPort, &timeout);  
                                                     
       if(Ret == FALSE)        {  
           printf("SetCommTimeouts failed.\n");  
           CloseHandle(comPort);  
           Sleep(3000);  
           exit(0);  
       }  
     printf("SerialOpen is SUCCESS !\n");  
     CheckSerial = 0;  
 
     };/*シリアルポートを開く*/  
       
 
       
     void SerialWrite(){  
         
       DWORD dwSendSize;  
       COMSTAT Comstat;  
       DWORD dwErrorMask;  
       unsigned int DataSize;  
       int MAX = 20;  
 
       DataSize = BoneDSstr.size();     
 
   Ret=WriteFile(comPort,&BoneDSstr,BoneDSstr.size(),&dwSendSize,NULL);  
 
       if(Ret == FALSE)  
            printf("WriteFile failed.\n");  
           CloseHandle(comPort);  
           exit(0);  
       }     
     };  
 
     //シリアル通信書き込み用に使用する変数  
 
     HANDLE comPort;  
     bool Ret;  
     string BoneDSstr;  
 
     DWORD dwSendSize;  
     COMSTAT Comstat ;  
     DWORD dwErrorMask ;  
 
```  
###補足情報(言語/FW/ツール等のバージョンなど)
com0comでデバッグしています。
ボーレートはどちらも9600に設定してあります。
送信しようとしている文字列が<119.98>などになっていることはVisualStudio側のプログラムで確認しています。
送信しようとしている文字列が<119.98>などになっていることはVisualStudio側のプログラムで確認しています。
  • Visual Studio

    2543 questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • シリアルポート

    63 questions

    シリアルポートは一度に一ビットごと移行される物理的なインターフェイスです。一般的には、9ピンのd-subコネクタであるRS-232を指します。

  • Leap Motion

    34 questions

    Leap Motionは、Leap Motionによって開発、販売している、手のジェスチャーでパソコンを操作できるデバイスです。

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

dero223

dero223 score 11

2017/09/06 21:10  投稿

RS232Cテストツールを使用したシリアル通信のテストにて、送信したい文字が送信できない。
###前提・実現したいこと
VisualStudio2008にて、LeapMotionの数値情報を読み取りその数値の一部を文字列(string型)に変換しRS232テストツールに送信し、送信した情報がどのようになっているかを確認したいと思っています。
VisualStudio2008(VC++)のプログラムにて、string型の文字列のデータをRS232テストツール(
(http://nonsoft.la.coocan.jp/Download/Rs232cTool/index.html))に送信し、送信した情報がどのようになっているかを確認したいと思っています。
###発生している問題・エラーメッセージ
本来は、VisualStudio2008のコンソール側に出ている
入力は、
```
<119.98>
<120.68>  
```
という文字列を取得し、連続で送信しているはずなのですが、RS232テストツール
(http://nonsoft.la.coocan.jp/Download/Rs232cTool/index.html)
には、以下のように変換されてしまいます。
などの文字列です。<>の中に送信したい数値を入れてstring型の文字列として送信しています。
この文字列が出力側でも同様に送信され、
```
接続 COM8
->受<119.98>  
->受<120.68>  
 
```  
のような出力結果になると期待、予想していたのですが  
RS232テストツールにおいては以下のような結果となってしまいました。  
```  
->受 <NUL><NUL><NUL><NUL><cd><cd><cd><cd><<NUL><NUL><NUL>
->受 <NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL><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>
```
上記が現在の出力結果です。  
 
どうしてこのような文字になってしまうのか分かりません。
どのあたりに問題がありそうか教えて頂きたいと思っています。
###補足情報(言語/FW/ツール等のバージョンなど)
com0comでデバッグしています。
ボーレートはどちらも9600に設定してあります。
送信しようとしている文字列が<119.98>などになっていることはVisualStudio側のプログラムで確認しています。
  • Visual Studio

    2543 questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • シリアルポート

    63 questions

    シリアルポートは一度に一ビットごと移行される物理的なインターフェイスです。一般的には、9ピンのd-subコネクタであるRS-232を指します。

  • Leap Motion

    34 questions

    Leap Motionは、Leap Motionによって開発、販売している、手のジェスチャーでパソコンを操作できるデバイスです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る