USB 전송 케이블 프로그래밍 / USB 장치 드라이버와 대화
-
03-07-2019 - |
문제
USB 전송 케이블 (예 : Belkin 's)에 프로그래밍 방식으로 액세스하는 방법 쉬운 전송 케이블) Windows에서?
나는 친숙합니다 Libusb-Win32, 그러나 내가 말할 수있는 바에 따르면, 새로운 장치와 Windows Vista와 함께 사용하는 것은 Iffy처럼 보입니다.
나는 그것을 알고있다 Windows 쉬운 전송 이것을 할 수 있습니다. Windows Easy 전송과 같은 코드를 어떻게 작성합니까?
이 작업을 수행하는 방법에 대한 통조림 문서가 없다면, 파기를 기꺼이 할 의향이 있지만 어디서부터 시작 해야할지 모르겠습니다. Windows Easy Transfer가 어떻게 작동하는지 알아내는 방법을 어떻게 지켜봐야합니까? Windows는 장치 관리자 인 "전송 케이블 장치"에서 전송 케이블에 자체 카테고리를 제공한다는 것을 알 수 있습니다. 이 드라이버 중 하나와 낮은 수준의 커뮤니케이션을하려면 어떻게해야합니까?
해결책
나는 Microsoft가 지금 제공한다는 것을 알았습니다 WINUSB USB 장치와의 간단한 사용자 모드 커뮤니케이션 용. (Winusb 장치 드라이버는 장치에 먼저 설치해야합니다. 이것은 Libusb-Win32 장치 드라이버와 다소 유사합니다.) Winusb는 XP (SP2 이상) 및 Vista에서 작동합니다.
Easy Transfer Cable은 장치 드라이버에 WinUSB를 사용하므로 Microsoft의 예제 코드를 따라 통신 할 수있었습니다. Winusb Howto 문서.
다른 팁
이를 위해서는 낮은 레벨 Win32 API를 사용해야합니다. Microsoft에는 여기에 인간 인터페이스 장치에 액세스하는 데 좋은 예가 있습니다. 전송 케이블은 마우스 나 키보드와 같이 명시 적으로 숨겨져 있지 않지만 HID 사양을 준수합니다.
예를 들어 USB 장치의 이름을 얻으려면
HidD_GetProductString(...)
http://msdn.microsoft.com/en-us/library/ms790920.aspx
더 많은 것이 있습니다. 2000 년부터 Vista까지 모든 버전의 Windows에 맞는 샘플 C 앱을 확실히 살펴 봐야합니다.
http://msdn.microsoft.com/en-us/library/dd163258.aspx
행운을 빕니다!
API 또는 SDK를 지원하는 USB 데이터 전송 케이블 (USB 데이터 링크 케이블이라고도 함)이 있어야 다음 코드를 사용해야합니다.
void CU2uDlg::OnOK()
{
BYTE buf[65530];
LPU2URET pU2uRet;
BOOL bRet;
int ret;
CString msgstr;
ret = u2u_open();
if (ret == -1){
AfxMessageBox("Open U2U device Success.");
}else{
msgstr.Format("Open U2U device fail,return:%d", ret);
AfxMessageBox(msgstr);
return;
}
//send data
bRet = u2u_SendData(buf, 65530, ret);
if(!bRet)
{
msgstr.Format("Send data error,return:%d", ret);
AfxMessageBox(msgstr);
return;
}
//receive data
while (1){
bRet = u2u_RecvData(recvData, dataLen, ret);
if( !bRet )
{
msgstr.Format("Receive data error,return:%d", ret);
AfxMessageBox(msgstr);
u2u_close();
return;
}else{
break;
}
}
u2u_close();
}