البرمجة USB تحويل كابل / يتحدث إلى برنامج تشغيل جهاز USB

StackOverflow https://stackoverflow.com/questions/608607

  •  03-07-2019
  •  | 
  •  

سؤال

كيف يمكنني برمجيا الوصول USB تحويل كابل (مثل بلكين من السهل نقل كابل) من ويندوز ؟

أنا على دراية libusb-win32, ولكن من ما أستطيع أن أقول, باستخدام هذا مع أحدث الأجهزة مع نظام التشغيل Windows Vista يبدو غير محدد.

وأنا أعلم أن ويندوز من السهل نقل يمكن أن تفعل هذا.كيف يمكنني كتابة التعليمات البرمجية التي يفعل نفس الشيء مثل ويندوز من السهل نقل ؟

إذا كان هناك أي المعلبة وثائق حول كيفية القيام بذلك, أنا على استعداد للقيام ببعض الحفر, ولكن لا تعرف من أين تبدأ.كيف يمكنني مشاهدة ما ويندوز من السهل نقل إلى معرفة كيف يفعل ذلك ؟ أرى أن ويندوز حتى يعطي نقل الكابلات الخاصة بهم الفئة في "إدارة الأجهزة" ، "كابل نقل الأجهزة." كيف أفعل مستوى منخفض اتصال مع واحد من هؤلاء هؤلاء السائقين ؟

هل كانت مفيدة؟

المحلول

اكتشفت أن مايكروسوفت تقدم الآن وينوسب بسيطة وضع المستخدم التواصل مع أجهزة USB.(أ وينوسب تشغيل الجهاز يجب أولا أن تكون مثبتة على الجهاز ، هذا يشبه إلى حد ما libusb-win32 تشغيل الجهاز.) وينوسب يعمل على XP (SP2 وما فوق) و فيستا.

سهولة نقل كابل يستخدم وينوسب عن تشغيل الجهاز, لذلك كنت قادرا على التواصل معها من خلال اتباع سبيل المثال التعليمات البرمجية في Microsoft وينوسب howto الوثيقة.

نصائح أخرى

وسوف تحتاج إلى استخدام منخفض API مستوى Win32 وللقيام بذلك. مايكروسوفت لديها بعض الأمثلة لطيفة هنا على الوصول إلى جهاز واجهة الإنسان. كابل نقل ليست صراحة HID مثل الماوس أو لوحة المفاتيح، لكنه يتفق مع المواصفات HID.

وعلى سبيل المثال، للحصول على اسم الجهاز USB يمكن أن أسميه

HidD_GetProductString(...)

http://msdn.microsoft.com/en-us/library /ms790920.aspx

وهناك الكثير من هناك، يجب عليك بالتأكيد أن نلقي نظرة على التطبيق ج عينة الذي يعمل لكافة إصدارات ويندوز من عام 2000 إلى ويندوز فيستا.

http://msdn.microsoft.com/en-us/library /dd163258.aspx

وحظا سعيدا!

وأنت في حاجة الى كابل نقل البيانات USB (وتسمى أيضا USB كابل ربط البيانات) التي دعم API أو SDK، ثم استخدام التعليمات البرمجية التالية:

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();


}

وانظر: Reference1 و <لأ href = "http://blog.csdn.net/ zzkjliu / من المادة / تفاصيل / 12838383 "يختلط =" نوفولو "> Reference2

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top