конвертировать VARIANT в массив без знака - PullRequest
1 голос
/ 12 мая 2011

Я использую Comm32 (элемент управления ActiveX) для получения данных, поступающих через последовательный порт, используя метод GetInput ().Этот метод возвращает _variant_t, поэтому мне нужно преобразовать его в массив неподписанных символов.

Когда последовательный порт настроен на TextMode (это ввод данных интерпретируется как String), преобразование Variant в BSTR итогда CString работает как положено (код, который я не написал):

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

Однако, поскольку данные, отправляемые через последовательный порт, на самом деле являются двоичными данными, при настройке comm32 для интерпретации данных как двоичных данных приведенный выше пример кода нене дайте мне действительные данные.Поэтому я думаю, что мне нужно преобразовать его в другой формат (возможно, массив unsigned char? Это что-то, что я хочу проверить).

Моя проблема в том, что я схожу с ума, так как не могу найти подробную информацию о том, как конвертироватьданные из структуры VARIANT.Как я могу преобразовать вариант в массив без знака ??

1 Ответ

1 голос
/ 12 мая 2011

Свойство InputMode определяет тип данных, которые извлекаются с помощью свойства Input. Если для InputMode установлено значение comInputModeText, свойство Input возвращает текстовые данные в Variant. Если InputMode - comInputModeBinary, то свойство Input возвращает двоичные данные в виде массива байтов в Variant. (от msdn )

Чтобы понять, как получить данные из safearray, см. Примеры sample1 или sample2

...