السلام عليكم
في هذه الصورة سنجد شرح مبسط لشكل واجة البرنامج وكيفية الدخول على الكود وكيفية تغيير شكل الازرار وغيرها

الان الى شرح الكود :
في اول الكود سنجد الحدث العام او ما يعرف باسم ال general
كود:
' vendor and product IDs
Private Const VendorID = 4660
Private Const ProductID = 1
' read and write buffers
Private Const BufferInSize = 8
Private Const BufferOutSize = 8
Dim BufferIn(0 To BufferInSize) As Byte
Dim BufferOut(0 To BufferOutSize) As Byte
وهنا يجب ان تكون القيم نفس التي وضعناها في ملف الوصف في الميكروسي
لاحظ معي ان اول رقم تم تعريفه هو 4660 وهذا الرقم مكتوب بالديسيمال وهو ما يعادل 1234 بالهكس ديسيمال
الان عرفنا ان التعامل هنا كله بالهكس ديسيمال
والسطر الثاني به الرفم 1 وهو ايظا بالديسيمال وهو ما يعادل 1234 بالهكس ديسيمال 0001
اما في الاسطر الاربعه الباقيه حددنا حجم البيانات ونوعها (بايت) واعطينا لها القيمه صفر
ولهذا السبب عمل معكم هذا الكود لانكم بالصدفه وضعتم نفس ارقام ملف الوصف
************************************************** *
كود:
Private Sub Command1_Click()
Form_Unload (0)
End
End Sub
هذا الكود الخاص بغلق البرنامج...... الزر (end) ووظيفته يقوم بقطع الاتصال اولاا ثم اغلاق البرنامج
************************************************** *
كود:
Private Sub Command10_Click()
BufferOut(0) = 0 ' first by is always the report ID
BufferOut(1) = Asc("P") ' first data item, etc etc
BufferOut(2) = Asc("=")
BufferOut(3) = 65
BufferOut(4) = Asc("T")
' write the data (don't forget, pass the whole array)...
hidWriteEx VendorID, ProductID, BufferOut(0)
lblstatus = "Data sent..."
الان ناتي الى اوامر الارسال من الفجوال الى المتحكم
طبعاا نخن نعرف ان صيغة الارسال هي pt=nt حيث n خي البايت المراد ارساله
اول سطر ارسلنا البايت الاوله وهي صفر وهي ترسل دائما وهي كنبظه بداية الارسال
الان سنبدء بارسال الصيغه (pt=nt )
السطر الثاني ارسلنا الحرف p على هيئه اسكي كود
ثم ارسلنا = على هيئه اسكي كود
الان ارسلنا البايت 65 وهو ما يمثل الحرف A
ثم اغلقنا الارسال بالحرف T
وهكذا باقي الازرار
نحن نعرف ان لكل حرف اسكي كود خاص به ويجب ان لا نخلط بين الحروف الكبيره والصغيره فلكل منها رقم اسكي كود خاص به
************************************************
كود:
Private Sub Form_Load()
' do not remove!
ConnectToHID (Me.hwnd)
lblstatus = "Connected to HID..."
End Sub
هذا حدث الفور لود ويعمل الكود بداخله عندما يبدء تشغيل البرنامج
اول سطر قلنا له فعل الاتصال مع اليواس بي
السطر الثاني نكتب الحالة التي نريدها في حالة محاولة الاتصال وهي ستظهر في الادا التي تحت الزر END
************************************************** **
كود:
Private Sub Form_Unload(Cancel As Integer)
DisconnectFromHID
End Sub
هذا اسمه حدث UNLOAD
وهذا الكود ينفذ في حالة الخروج من البرنامج ايظاا يعني عند الظغط على علامة (X) التي تظهر في اقصى اليمين في الاعلى وهي موجوده في كل برنامج تقريباا
وهذا الكود يعمل على قطع الاتصال قبل اغلاق البرنامج
************************************************** ****
كود:
Public Sub OnPlugged(ByVal pHandle As Long)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
lblstatus = "USB Plugged....."
End If
End Sub
هذا الكود وضيفته يظهر ابظاا حالة الاتصال وانت في وصع التشغيل للفجوال يعني يعمل على مراقبة حالة الاتصال على الاده التي في الاسفل تحت الزر END
************************************************** ********
كود:
Public Sub OnUnplugged(ByVal pHandle As Long)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
lblstatus = "USB Unplugged...."
End If
End Sub
هذا الامر ايظاا نفس السابق ولكن في حالة قطع الاتصال سيطبع ان الاتصال قد تم فصله
********************************************
يوجد حدثين في اخر الكود وهما مخصصين لاستقبال الداتا من المتحكم ولكن لا يعملان خالياا
ملاحظه مهمه :
يوجد برنامج جميل جداا وهو غائب على الكثيرين ووظيفة هذا البرنامج هو استخراج كود بالفجوال بيسك6 كل ما عليك هو فقط ان تظع الازرار
ولا داعي ان تكتب اي حرف على الفجوال بيسك
وهذا الكود الذب امامكم هو ليس من برمجتي الكامله بل هو من برمجة البرنامج
اما انا فقد وضعت عليه بعص التعديلات
البرنامج اسمه EasyHID وهذا البرنامج كالسحر انصح وبشده تجربته
وساضع الروابط والشرح لهذا البرنامج في اقرب وقت