اطلاعیه

Collapse
No announcement yet.

ارسال رشته و متغیر به پورت USB

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

    #16
    پاسخ : ارسال رشته و متغیر به پورت USB

    نوشته اصلی توسط hamidcia
    یه مثال مال اتمل که همراهش درایور هم هست و برنامه رو کامپایل کردم و روی میکرو ریختم جالب بود که کامپیوتر میکرو رو شناخت .....
    ..
    البته برنامه رو دارم کم کم میخونم ببینم هدفش چیه. :redface:
    باسلام
    آقا به کجا رسیدی؟ :nerd:
    نتایج رو دوست داریم بدونیم چی شد.
    ماهم دنبالشیم.

    دیدگاه


      #17
      پاسخ : ارسال رشته و متغیر به پورت USB

      این برنامه درس مثل یک مبدل usb to serial عمل میکنه ،داده usb رو میگیره به سریال تبدیل میکنه و روی پورت usart0 میفرستد.
      برای تست برنامه بعد پروگرم کردن بردتون بایستی درایورش را که فایلی با نام 6119.inf است رو نصب کنی.
      کابل usb رو وصل کن و پورت usart0 رو هم با استفاده از یه مبدل به usb تبدیل کن، بعدشم که خودت میدونی دیگه ، دو تا پنجره ترمینال باز میکنی و تو یکی داده وارد می کنی و توی پنجره دیگه داده هات رو تبدیل میکنه و میاره و برعکس.
      در تمام طول برنامه روی پورت سریال دیباگ هم پیغام هایی جهت اطلاع رسانی ارسال می شود.

      در این برنامه
      از وقفه ISR_Vbus برای متصل کردن و جداسازی کابل usb اسفاده می کند و دو تابع USBD_Connect() و USBD_Disconnect() این کار را برایمان انجام میدهد.
      از وقفه ISR_Usart0 برای ورود اطلاعات به Usart0 و ارسال آن به usb استفاده می شود.
      از وقفه ISR_Timer0 برای ارسال داده به پورت مجازی استفاده می شود.
      USBD_GetState تابعی هست که وضعیت usb رو مشخص میکنه که در چه وضعیتی هست و کاربردش در کار با توابع است که می خواهد بخواند و بنویسد اول وضعیت usb چک میکند بعد کار مورد نظر رو انجام میدهد.

      چند تا فرمان مهم cdc داره :

      پیکربندی پورت مجازی از قبیل بودریت ، پریتی بیت ، چند بیت توقف و مقدار بیت داده با تابع زیر است :
      کد:
      /// Initializes the USB Device CDC serial driver & USBD Driver.
      //------------------------------------------------------------------------------
      void CDCDSerialDriver_Initialize()
      {
        TRACE_INFO("CDCDSerialDriver_Initialize\n\r");
        
        // Initialize Abstract Control Model attributes
        CDCLineCoding_Initialize(&(cdcdSerialDriver.lineCoding),
                     115200,
                     CDCLineCoding_ONESTOPBIT,
                     CDCLineCoding_NOPARITY,
                     8);
      این تابع در فایلی به نام cdcdSerialDriver.c موجود است.
      |||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
      نوشتن روی پورت مجازی:
      کد:
      /// Sends a data buffer through the virtual COM port created by the CDC
      /// device serial driver. This function behaves exactly like USBD_Write.
      /// \param data Pointer to the data buffer to send.
      /// \param size Size of the data buffer in bytes.
      /// \param callback Optional callback function to invoke when the transfer
      ///         finishes.
      /// \param argument Optional argument to the callback function.
      /// \return USBD_STATUS_SUCCESS if the read operation has been started normally;
      ///     otherwise, the corresponding error code.
      //------------------------------------------------------------------------------
      unsigned char CDCDSerialDriver_Write(void *data,
                         unsigned int size,
                         TransferCallback callback,
                         void *argument)
      مثال :
      کد:
      CDCDSerialDriver_Read(usbBuffer,DATABUFFERSIZE,(TransferCallback) UsbDataReceived,0);
      |||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
      خواندن از پورت مجازی:
      کد:
      /// Receives data from the host through the virtual COM port created by
      /// the CDC device serial driver. This function behaves like USBD_Read.
      /// \param data Pointer to the data buffer to put received data.
      /// \param size Size of the data buffer in bytes.
      /// \param callback Optional callback function to invoke when the transfer
      ///         finishes.
      /// \param argument Optional argument to the callback function.
      /// \return USBD_STATUS_SUCCESS if the read operation has been started normally;
      ///     otherwise, the corresponding error code.
      //------------------------------------------------------------------------------
      unsigned char CDCDSerialDriver_Read(void *data,
                        unsigned int size,
                        TransferCallback callback,
                        void *argument)
      مثال :
      کد:
       CDCDSerialDriver_Write(usartBuffers,DATABUFFERSIZE, 0, 0);
      هی.. روزگار ...

      دیدگاه


        #18
        پاسخ : ارسال رشته و متغیر به پورت USB

        با سلام
        دوستان usb خودش پیچیدست ولی استفادش نه، خود کیل مثال های سر راستی برای کار با usb داره، من پست ها رو خندم نفهمیدم اصل مشکل چیه، خوشحال میشم کمکی کنم :rolleyes:
        The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

        دیدگاه


          #19
          پاسخ : ارسال رشته و متغیر به پورت USB

          متعاسفانه برای من کامپایل نشد و ارور داد
          حالا با یه کیل نسخه جدید می خوام تست کنم

          دیدگاه


            #20
            پاسخ : ارسال رشته و متغیر به پورت USB

            باسلام
            دوست عزیز
            hamidcia
            در صورت امکان پروژه را اپلود نمایید
            برای کامپایل به مشکل خوردیم

            باتشکر

            دیدگاه


              #21
              پاسخ : ارسال رشته و متغیر به پورت USB

              نوشته اصلی توسط S.R.F
              باسلام
              دوست عزیز
              hamidcia
              در صورت امکان پروژه را اپلود نمایید
              برای کامپایل به مشکل خوردیم

              باتشکر
              بفرمایید : http://s5.picofile.com/file/8153347050/usb_device_cdc_tested_.rar.html
              این فایل را شما تست کنید. کامایل کردم مشکلی نداشت.
              در صورت بروز مشکل ، ارور را بنویسید.
              هی.. روزگار ...

              دیدگاه

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