2011-05-12 58 views
1

我使用Comm32(一个ActiveX控件)通过使用方法GetInput()的串行端口获取数据。 该方法返回一个_variant_t,所以我需要将它转换为一个unsigned char数组。将VARIANT转换为无符号字符数组

当串行端口被配置为的TextMode(这是数据输入被解释为字符串),将所述变体为BSTR,然后到一个CString作品如预期(代码不是由我所著):

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

但是,由于通过串口发送的数据实际上是二进制数据,所以当配置comm32将数据解释为二进制数时,上面的示例代码不会提供有效数据。 所以我想我需要将它转换为另一种格式(无符号字符数组可能?这就是我想测试的东西)。

我的问题是我疯了,因为我找不到任何关于如何从VARIANT结构转换数据的详细信息。如何将变体转换为无符号字符数组?

回答

1

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

要了解如何从SAFEARRAY获取数据看例子sample1sample2

相关问题