2011-03-02 21 views
2

ここにはシリアルポート経由で通信するハードウェアがあります。 (C++/CLIシリアルポートコマンドを送信

SerialPort^ serialPort = gcnew SerialPort(portName , 9600, Parity::None, 8, StopBits::One); 
serialPort->Open(); 
serialPort->WriteLine("<-S->"); 
serialPort->Close(); 

をしかし、外出コマンドは、<-S->.ではなく、<-S-> :私はMSのVisual C++ 2010を使用して、私はコマンドを送信したい:<-S->

私はこれをやっています発信コマンドに添付されている点に注意してください)。 無料のシリアルポートモニタを使用して、入退出データを監視します。

どうすればその点を取り除くことができますか<-S->.

これは外出されているものです。

3C 2D 53 2D 3E 0A = < -S->。

これは私が欲しいものです:

3C 2D 53 2D 3E = < -S - >助けを

感謝。

+0

これは本当に '.'か、FSMが' .'として表示する終了 '\ 0'ですか? –

答えて

4

WriteLine()を使用しています。これは改行(文字0x0A)を出力に追加しています(何かが.として表示されていますが、実際にはドットではありません)。代わりにWrite()を試してください。

+0

ああ、そうだよ。どうもありがとう! – Ilyssis

1

これは、SerialPort.NewLineプロパティの値です。デフォルトで改行。代わりにWrite()を使用してください。

デバッガを使用してシングルステップを実行すると、コードが正常に機能します。それがなければ、Close()メソッドは即座に送信バッファをパージし、ランダムな文字数だけが送信されます。プログラムが終了するときにだけ、シリアルポートを閉じます。

+0

ok、そのヒントありがとう – Ilyssis

0

C++/CLIを使用しているので、恐ろしい.NET SerialPortクラスを使用する理由はありません。 native Win32 serial port functionsはずっと強力で信頼性があります。 OVERLAPPEDモードをオンにしてイベントをアタッチすると、スレッドプールと同期を混乱させることなく、バックグラウンドI/O操作を行うことができます。

+0

私は参照してください。ありがとうございました。 – Ilyssis

関連する問題