2011-05-12 5 views
1

Comm32 (activeX 컨트롤)를 사용하여 GetInput() 메서드를 사용하여 직렬 포트를 통해 데이터를 가져옵니다. 이 메서드는 _variant_t를 반환하므로 unsigned char의 배열로 변환해야합니다. 직렬 포트 텍스트 모드로 구성된VARIANT를 부호없는 char 배열로 변환합니다.

예상 (코드 날 writed 생략) 작동 BSTR에 다음 CString을로 변형 변환 (이는 문자열로 해석 데이터 입력)

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

그러나 직렬 포트를 통해 전송 된 데이터는 실제로 이진 데이터이므로 comm32에서 이진 데이터로 해석하도록 구성하면 위의 샘플 코드가 올바른 데이터를 제공하지 않습니다. 그래서 내가 다른 형식으로 변환해야 할 것 같아요 (아마도 서명되지 않은 char 배열일까요? 그걸 테스트하고 싶습니다).

내 문제는 VARIANT 구조에서 데이터를 변환하는 방법에 대한 자세한 정보를 찾을 수 없어서 미쳐 가고 있습니다. 변형을 unsigned char 배열로 변환하려면 어떻게해야합니까 ??

답변

1

InputMode 속성은 Input 속성을 사용하여 검색되는 데이터 형식을 결정합니다. InputMode가 comInputModeText로 설정된 경우 Input 속성은 Variant에 텍스트 데이터를 반환합니다. InputMode가 comInputModeBinary 인 경우 Input 속성은 Variant의 바이트 배열에서 이진 데이터를 반환합니다.

예제를 참조 SAFEARRAY에서 데이터를 가져 오는 방법을 이해하려면 (msdn에서) sample1 또는 sample2

관련 문제