将VARIANT转换为unsigned char数组

时间:2011-05-12 14:24:19

标签: c++ visual-c++ variant

我正在使用Comm32(一个activeX控件)使用GetInput()方法通过串口获取数据。 此方法返回_variant_t,因此我需要将其转换为unsigned char的数组。

当串行端口配置为TextMode(这是数据输入被解释为String)时,将Variant转换为BSTR然后转换为CString按预期工作(代码不由我编写):

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

但是,由于通过串口发送的数据实际上是二进制数据,因此在配置comm32将数据解释为二进制时,上面的示例代码并不能提供有效数据。 所以我认为我需要将它转换为另一种格式(可能是unsigned char数组?这是我想要测试的那些)。

我的问题是我变得疯狂,因为我找不到有关如何从VARIANT结构转换数据的任何详细信息。如何将变量转换为unsigned char数组?

1 个答案:

答案 0 :(得分:1)

InputMode 属性确定使用Input属性检索的数据类型。如果InputMode设置为comInputModeText,则Input属性返回Variant中的文本数据。如果InputMode是comInputModeBinary,则Input属性返回Variant中字节数组中的二进制数据。 (来自msdn

要了解如何从safearray获取数据,请参阅示例sample1sample2