1

Comm32 (activeX コントロール) を使用して、メソッド GetInput() を使用してシリアル ポートからデータを取得しています。このメソッドは _variant_t を返すので、これを unsigned char の配列に変換する必要があります。

シリアル ポートが TextMode (これはデータ入力が文字列として解釈される) に構成されている場合、Variant を BSTR に変換してから CString に変換すると、期待どおりに動作します (コードは私が作成したものではありません)。

_variant_t x = m_comm32.GetInput();
CString cs = x.bstrVal;

ただし、シリアル ポート経由で送信されるデータは実際にはバイナリ データであるため、データをバイナリとして解釈するように comm32 を構成すると、上記のサンプル コードでは有効なデータが得られません。だから私はそれを別の形式に変換する必要があると思います(おそらく符号なしのchar配列ですか?それは私がテストしたいものです)。

私の問題は、VARIANT 構造からデータを変換する方法に関する詳細な情報が見つからないため、頭がおかしくなっていることです。バリアントを unsigned char 配列に変換するにはどうすればよいですか??

4

1 に答える 1

1

InputModeプロパティは、Input プロパティで取得されるデータのタイプを決定します。InputMode が comInputModeText に設定されている場合、Input プロパティは Variant でテキスト データを返します。InputMode が comInputModeBinary の場合、Input プロパティはバイナリ データを Variant のバイト配列で返します。( msdnから)

セーフアレイからデータを取得する方法を理解するには、例sample1またはsample2を参照してください。

于 2011-05-12T15:07:25.313 に答える