C++/CLI(Windows::IO::Ports
)のSerialPort
クラスを使用して、シリアルポートを開き、Perifericデバイスと通信するとすべてがうまくいくようです。ポートが開き、データが送られます。しかし、私はperifericデバイスから答えを得ていませんでした。私はのようなコードを使用SerialPort StopBits Windows7 C++/CLI
:シリアルポートの通信を監視するためのプログラムを使用して
SerialPort^ _serialPort;
_serialPort = gcnew SerialPort();
//_serialPort = gcnew SerialPort("COM1",115200,Parity::None, 8, StopBits::One);
// Allow the user to set the appropriate properties.
_serialPort->PortName = "COM1";
_serialPort->BaudRate = 115200;
//Parity None by default
//_serialPort->Parity = Parity::None;
_serialPort->DataBits = 8;
_serialPort->StopBits = StopBits::One;
// Set the read/write timeouts
_serialPort->ReadTimeout = 1000;
_serialPort->WriteTimeout = 500;
_serialPort->Open();
、私がストップビットを設定し、あなたが見ることができるようにストップビットの数が0であると思われます私はボーレートとデータを変更しようとしましたが、それは変更されましたが、 StopBits ...
これはウェブ上の他のコードを使用するのが本当に簡単だから、本当にピッタリです。
誰かが私を助けることができますか?それがうまくいかなかった理由は何ですか?
このコードは大丈夫ですか?
送られた配列である:array<Byte>^ bytes = gcnew array<Byte>(32);
(それはいくつかの値で初期化される)
は、私が使用してデータを送信する:_serialPort->Write(bytes,0,32);
は私がしようとしているデータを読み込むには:
_serialPort->Read(readarray,0,18);
_serialPort->ReadExisting();
そして、私はシリアルポートモニタを使用して通信を開き、同じバイトを送信すると、それは答えます...
)? –
どのモニタープログラムを使用しましたか?ポートから信号をキャプチャしない限り、ストップビットがゼロであることをどのように確認しましたか? Ben Voigtの回答に関しては、おそらくDCBを使用していないかもしれませんが、恐らく使用しているモニタプログラムはゼロを表示しています。 – tinman
私はそれをチェックするためにシリアルポートモニタ4.0をダウンロードしました(シリアルポートでも少し働いて、他のソフトウェアを見るのに便利です)。そして、ストップビットを1つのストップに設定した標準シリアルターミナルアプリケーションシリアルポートモニタには "StopBits - 0"と表示されます。 2つのストップビットで開くと、SMP4.0は "StopBits - 2"を表示します。つまり、DCBの値が表示されているように見えます。 – tinman