PDA

View Full Version : سوال: مشکل ارتباط با پورت usb



safa.net
دوشنبه 21 خرداد 1397, 02:54 صبح
با سلام و احترام
چند وقتی است که روی یک موضوعی دارم کار میکنم و خواستم اگه کسی از اساتید و دوستان درباره اون اطلاعاتی داره اینجا مطرح کنه تا بقیه هم از اون استفاده کنند.
شرح موضوع:
موضوع اصلی کار با دستگاه های RFID READER R/O هستش که در بازار مدل های مختلفی از اون وجود داره.
مدل اول که با پورت سریال کار میکنند و بعد از نصب درایور اونها روی سیستم، یک پورت کام مجازی براشون ساخته میشه و از طریق اون پورت اطلاعات کارت رو میشه خوند.
مدل دوم اصطلاحاً Plug And Play هستش که دقیقاً مثل بارکد ریدر عمل میکنه و هر جا که موس فعال باشه کد رو نمایش میده. این مدل به محض اینکه کابل رو به سیستم میزنید در لیست usb ها خودش رو با نام Usb Composite Device اضافه میکنه و شروع میکنه به کار کردن.
موضوع مد نظر این تاپیک کار با مدل دوم یعنی همون Plug And Play هستش.
چند تا سوال مطرح هست :
1- اولا این دستگاه چطور با ویندوز ارتباط برقرار میکنه و اطلاعات رو با چی مینویسه و یا شاید اینطور بگم بهتر باشه، اساس کار ارسال و تشخیص و نوشتن در جایی که موس فعال هست با چه سرویسی انجام میشه؟
اصلا اگه کسی بخواد یه همچین چیزی درست کنه میشه؟ یا اینکه با کامپیوتر باید چطور ارتباط برقرار کنه و دستگاهش Plug and Play بشه. (توضیح تئوری بیشتر مد نظر هست اگر کسی هم سورس یا لینکی داشت که چه بهتر)
2 - در یک پروژه نیاز است که کارت خوان رو در اختیار خودم بگیریم و با پورت usb ارتباط برقرار کنم و مانع از نوشتن در جایی که موس فعال هست بشم. میخوام وقتی کارت زده شد بخونمش و اطلاعات رو روی دیتابیس ذخیره کنم.

مهدی کرامتی
دوشنبه 21 خرداد 1397, 03:00 صبح
تا جایی که در پیام خصوصی فرمودید دستگاه تون از این مدل هست:
https://shop.aftabrayaneh.com/image/cache/data/arduino/rfid/RFID-JT300/RFID_JT400_3-500x500.jpg
لینک هایی که عرض کردم بررسی کنید اینها بود:

کتابخانه LibUsbDotNet :
http://libusbdotnet.sourceforge.net/V2/Index.html
و مثال نحوه استفاده اش:
http://libusbdotnet.sourceforge.net/V2/html/9926451f-29bf-4fae-9233-f6467ed072c7.htm

روال کلی کار هم این است که شما با داشتن شناسه دستگاه اون رو در اختیار خودتون می گیرید و ورودی هایی که ارسال می کنه رو به جای دریافت به صورت ورودی کی برد، یک راست از طریق کد برنامه تون میخوانید.

حالا بفرمایید مشکل کجاست.

safa.net
دوشنبه 21 خرداد 1397, 03:39 صبح
تا جایی که در پیام خصوصی فرمودید دستگاه تون از این مدل هست:
https://shop.aftabrayaneh.com/image/cache/data/arduino/rfid/RFID-JT300/RFID_JT400_3-500x500.jpg
لینک هایی که عرض کردم بررسی کنید اینها بود:

کتابخانه LibUsbDotNet :
http://libusbdotnet.sourceforge.net/V2/Index.html
و مثال نحوه استفاده اش:
http://libusbdotnet.sourceforge.net/V2/html/9926451f-29bf-4fae-9233-f6467ed072c7.htm

روال کلی کار هم این است که شما با داشتن شناسه دستگاه اون رو در اختیار خودتون می گیرید و ورودی هایی که ارسال می کنه رو به جای دریافت به صورت ورودی کی برد، یک راست از طریق کد برنامه تون میخوانید.

حالا بفرمایید مشکل کجاست.
اول اینکه من شناسه دستگاه رو از دیوایس منیجر پیدا کردم و به صورت اینتیجر نیست باید چی کار کنم؟ با توجه به اینکه کامپوننت Libusb مقدار int رو برای شناختن دستگاه میخواد.
دوم هم چطور باید حالت اتوماتیک رو غیر فعال کنم و خودم چطور بخونمش؟ یعنی بهتره چطوری مداوم پورت رو چک کنم؟
148361

مهدی کرامتی
دوشنبه 21 خرداد 1397, 03:42 صبح
پیدا کردن کدش کار سختی نیست. نهایتش اینه که کد به صورت هگز هست و شما باید تبدیلش کنید به Int.
وقتی شما دستگاه رو تحت اختیار بگیرید عملا داده ها تحویل کد شما میشه، نه هر TextBox ای در ویندوز که Cursor الان درونش باشه.

من نمونه این دستگاه رو داشتم، امروز هر چی گشتم پیدایش نکردم که تست کنم.

safa.net
دوشنبه 21 خرداد 1397, 03:49 صبح
پیدا کردن کدش کار سختی نیست. نهایتش اینه که کد به صورت هگز هست و شما باید تبدیلش کنید به Int.
وقتی شما دستگاه رو تحت اختیار بگیرید عملا داده ها تحویل کد شما میشه، نه هر TextBox ای در ویندوز که Cursor الان درونش باشه.

من نمونه این دستگاه رو داشتم، امروز هر چی گشتم پیدایش نکردم که تست کنم.
ممنون میشم اگه سمپلی هم دارین در اختیار بگذارین.
اگر هم دستگاه رو پیدا کردین حداقل نمونه ای درست کنید و در اینجا قرار بدین.
در هر صورت من هم تلاشم رو میکنم تا ببینم به کجا میرسیم.
تشکر از راهنمایی هاتون

safa.net
دوشنبه 21 خرداد 1397, 04:36 صبح
این کدها رو قرار دادم برای اینکه دستگاه رو بشناسم ولی کد سمپل Device Not Found مینویسه رو صفحه نمایش؟!
string productID = "0035"; int pid = Convert.ToInt32(productID, 16);
pid = Int32.Parse(productID, System.Globalization.NumberStyles.HexNumber);
string vendorID = "FFFF";
int vid = Convert.ToInt32(vendorID, 16);
vid = Int32.Parse(vendorID, System.Globalization.NumberStyles.HexNumber);


#region SET YOUR USB Vendor and Product ID!
UsbDeviceFinder MyUsbFinder = new UsbDeviceFinder(vid, pid);
#endregion

مهدی کرامتی
دوشنبه 21 خرداد 1397, 14:55 عصر
این آی دی من در تلگرام است: @Mehdi_Keramati
Any Desk را نصب کنید، و شناسه اتصال رو برام بفرستید تا بیام روی سیستم تون و وضعیت رو چک کنم.