اطلاعیه

Collapse
No announcement yet.

پورت usb در ویژوال استودیو

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پورت usb در ویژوال استودیو

    سلام. چه جوری می شه تو ویژوال استودیو، به پورت یو اس بی دسترسی داشت؟ مثلا یک رشته را بفرستیم. چه دستوری لازم هست؟

    #2
    پاسخ : پورت usb در ویژوال استودیو

    حساب `پورت USBآ‌ با بقیه پورت ها مثل com و lpt و ... کاملن فرق میکنه. برای ارتباط با اون به این راحتی نمیشه کاری انجام داد مگر اینکه خودتون درایور اختصاصی بنویسید یا از کتابخانه های آماده استفاده کنید چون این پورت حالت های کاملن متفاوت و متنوعی داره . مثلن نحوه ارتباط پورت با mouse زمین تا زیر زمین با ارتباط flash memory فرق داره :mrgreen:
    اگه میخوای اطلاعات بیشتر کسب کنی بد نیست این سند رسمی مشخصات USB نسخه 2 هست

    http://sdphca.ucsd.edu/Lab_Equip_Manuals/usb_20.pdf

    مطمئن نکاهش کنی یکم وحشت میکنی :surprised: :mrgreen:
    راه راحت تر اینه که یه تبدیل USBآ‌ به serial مثل بورد های مبتنی بر FT232 یا CP210xآ‌ بگیری و به این پورت به صورت سریال نگاه کنی که هم خیلی کار رو راخت میکنه هم شرکت های سازنده ای چیپ ها کلی نمونه کد و مثال برنامه نویسی برای زبان های مختلف برنامه نویس ارائه کردن که خیلی کمکت میکنه. قیمت ارزانی هم دارند :smile:

    دیدگاه


      #3
      پاسخ : پورت usb در ویژوال استودیو

      چه جوری میشه تو C++ برای اون برنامه نوشت؟ :question:
      یعنی اون پورت سریال مجازی، اسمش همون پورت usb می شه؟(مثلا اگر usb کام 2 بود، اون پورت سریال مجازی com2 می شه؟)

      دیدگاه


        #4
        پاسخ : پورت usb در ویژوال استودیو

        من متوجه منظورتون نشدم،
        اگه میخواید یک رشته توسط USB با استفاده از ارتباط USB2Serial مث FT232 ارسال یا دریافت کنید که کار آسونیه!
        یه SerialPort باس بیارین روی فرم، معرفی کردن مشخصات:
        کد:
        serialPort1.PortName = "COM5";
              serialPort1.BaudRate = 1000000;
        مثلاً واسه من Com5 شده، و بعدش باز کردن پورت:
        کد:
        serialPort1.Open();
        حالا میشه مثلاً مقداری رو روی پورت سریال نوشت:
        کد:
        serialPort1.Write("Test");
        و البته باید قبلش اول برنامه:
        کد:
        using System.Net;
        using System.Net.Sockets;
        البته امیدوارم من اشتباه متوجه منظورتون نشده باشم
        موفق باشید

        «پشتکار» «پشتکار» «پشتکار»

        دیدگاه


          #5
          پاسخ : پورت usb در ویژوال استودیو

          با سلام
          ارتباط با USB بستگی به کلاسی داره که ویندوز میشناسدشون. ساده ترین اونا کلاس VCP یا پورت سریال مجازیه که در عمل شما فقط کابلتون رو عوض کردین.
          من پیشنهاد میکنم از پروتکل HID استفاده کنین که یه ارتباط USB واقعیه.درایور نمیخواد و DLL آ‌هاش هم تو نت هست. کار باهاش هم راحته.
          من تو سی شارپ خیلی باهاش کار کردم.
          کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

          دیدگاه


            #6
            پاسخ : پورت usb در ویژوال استودیو

            سوال شما مبهمه . چون گیرنده و فرستنذه رو مشخص نکردید. ولی میشه بحث رو کلی شروع کرد تا شما بگی که منظورتون چیه

            از نظر برنامه نویسی usb رو به 4 لایه تقیسم میکنن به ترتیب از بالا به پایین اینه
            4-device or host
            3-portocol
            2-link
            1-physical layer


            مسلما شما نمی خوای تو سه لایه زیرین کار کنی پس میمونه لایه host و device و باز مسلمه که شما نمی خوای برای host برنامه بنویسی پس میمونه device
            حالا خود device به دو قسمت تقسیم میشه
            1- device استاندارد
            2-device سفارشی

            خوب باز مسلمه که شما می خوای با یک device استاندارد کار کنی

            خوب دیواس استانداد usb بالغ بر 20 کلاس است ولی مهمترینشون 5 تا است
            1- Audio-01h
            2- CDC -02h
            3- HID-03h
            4-Printer -07h
            5- Mass Storage-08h

            و در نهایت ماکروسافت برای این کلاس ها درایور های استانداد داره
            مثلا به ترتیب

            Usbaudio.sys
            Usbser.sys
            Hidclass.sys
            Usbprint.sys
            Usbstor.sys
            حال فرض کنیم شما می خوای با یک وسیله از نوع hid ارتباط برقرار کنی ویندوز توابع api زیر را دارد

            توابع شناسایی


            HidD_GetAttributes
            HidD_GetHidGuid
            HidD_GetIndexedString
            HidD_GetManufacturerString
            HidD_GetPhysicalDescriptor
            HidD_GetPreparsedData
            HidD_GetProductString
            HidD_GetSerialNumberString
            HidD_GetNumInputBuffers
            HidD_SetNumInputBuffers

            توابع ارتباط

            HidD_GetInputReport
            HidD_SetFeature
            HidD_SetOutputReport
            ReadFile
            WriteFile

            و در نهایت توابع گزارش گیری


            HidP_GetButtonCaps
            HidP_GetButtons
            HidP_GetButtonsEx
            HidP_GetCaps
            HidP_GetData
            HidP_GetExtendedAttributes
            HidP_GetLinkCollectionNodes
            HidP_GetScaledUsageValue
            HidP_GetSpecificButtonCaps
            HidP_GetSpecificValueCaps
            HidP_GetUsages
            HidP_GetUsagesEx
            HidP_GetUsageValue
            HidP_GetUsageValueArray
            HidP_GetValueCaps
            HidP_InitializeReportForID
            HidP_IsSameUsageAndPage
            HidP_MaxDataListLength
            HidP_MaxUsageListLength
            HidP_SetButtons
            HidP_SetData
            HidP_SetScaledUsageValue
            HidP_SetUsages
            HidP_SetUsageValue
            HidP_SetUsageValueArray
            HidP_UnsetButtons
            HidP_UnsetUsages
            HidP_UsageAndPageListDifference
            HidP_UsageListDifference




            مثلا صفحه کلید و ماوس از hid استفاده میکنن که دارای

            تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
            داشتن عقله زيادتر از دیگر آدم ها است

            دیدگاه


              #7
              پاسخ : پورت usb در ویژوال استودیو

              نوشته اصلی توسط نو رسیده
              با سلام
              من پیشنهاد میکنم از پروتکل HID استفاده کنین که یه ارتباط USB واقعیه.درایور نمیخواد و DLL آ‌هاش هم تو نت هست. کار باهاش هم راحته.
              من تو سی شارپ خیلی باهاش کار کردم.
              همین بیشتر توضیح بدید
              ممنون
              هرکه خود را یک بار با اشکهایش شستشو دهد تا زنده است پاک و مقدس میماند

              دیدگاه


                #8
                پاسخ : پورت usb در ویژوال استودیو

                اولا پیشنهاد میکنم برای ارتباط با USB اصلا سراغ روشهای معمول ارتباط با پورتها مثل ارسال دیتا به آدرس پورت و غیره نرین. چون عملیات ارسال و دریافت دیتا تو این پورت بطور کاملا سخت افزاری انجام میشه و آدرسها شناور هستن. سراغ مطالعه پروتکلش هم نرین، چون هم خیلی پیچیدس و در صورت فهم کاملش هم هیچ دخل و تصرفی توش نمی تونید بکنید. بنا براین لطفا آب در هاون نکوبین و یکراست برین سراغ درایور ها و DLLآ‌ های آماده و مخصوص اینکار.
                همونطور که پیشتر گفتم ابتدا باید یه سخت افزار با پورت usbآ‌ به PC وصل بشه که از طرف سیستم به عنوان HID شناخته بشه.مثلا یه برد با میکرو های PIC که پورت USBآ‌ دارن. بعدش شما با استفاده از DLL های مربوط به ارتباط با HID میتونین اختیارش رو بدست بگیرین و کنترلش کنین.
                اگه سخت افزار جانبی درست تعریف شده باشه دارای دو شناسه 16 بیتی بنامهای VID و PID خواهد بود که یه کد یونیک برای هر USB DEVICE هست و اولی ID سازنده محصول و دومی ID خود محصوله که از طرف سایت USB.ORG به سازندگان و محصولات تجاری اختصاص داده میشه. بنابراین بین ابزار های USB مختلفی که به PC تون وصله، شما میتونین ابزار مورد نظرتون رو شناسایی کنین و با اون ارتباط برقرار کنین.
                بعد از برقراری ارتباط دیتا، نوبت به نرم افزار های دو طرف میرسه که طوری نوشته بشن که زبون همو بفهمن و اطلاعات دریافتی رو درست تفسیر یا اجرا کنن.
                کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                دیدگاه


                  #9
                  پاسخ : پورت usb در ویژوال استودیو

                  سلام دوستان.

                  حالا با این توضیحاتی که دادید، تقریبا یچیزهایی دستم اومد،
                  حالا باید از کجا شروع کنم؟
                  فکرشو نمیکردم این همه دردسر داشته باشه،
                  برای پورتهای دیگه ، هم همینقدر داستان داره؟
                  یا مثلا برای لینوکس چی؟

                  هنوز تو ذهنم این یه علامت سواله بزرگه ، و تو نت هم گشتم ، هیچی نبود.

                  با تشکر.
                  به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
                  (پيش به سوي هدف)

                  دیدگاه


                    #10
                    پاسخ : پورت usb در ویژوال استودیو

                    سلام
                    جناب aliila که خوب توضیح دادند توضیحات تکمیلی از طریق سرچ در گوگل یا کتبی مثل اصول کامل راه اندازی و کنترل دستگاههای جانبی توسط کامپیوتر (فصل 5) پیدا کنید.
                    «اگر واقعيات با نظريات هماهنگي ندارند، واقعيتآ‌ها را تغيير بده.»
                    آلبرت انشتين

                    دیدگاه

                    لطفا صبر کنید...
                    X