Jump to content

    

USB HID PIC18F4550, все работает, что я делаю не так.http://electronix.ru/forum/style_images/1/folder_editor_images/rte-emoticon.gif

Здравствуйте!

Делаю пример из Microchip App Library, Device - HID - Custom Demos

Как я правильно понял, создается на стороне РС и устройства некий pipe, через который происходит обмен по 64 байта в одном пакете.

Разбор пакетов происходит по первому байту.

 

        switch (ReceivedDataBuffer[0])                //Look at the data the host sent, to see what kind of application specific command it sent.
        {case 0x80:  //Toggle LEDs command
           mLED_5_Toggle();
break;
            case 0x81:  //Get push button state
                  ToSendDataBuffer[0] = 0x81;                //Echo back to the host PC the command we are fulfilling in the first byte.  In this case, the Get Pushbutton State command.
                  if(sw3 == 1)            //pushbutton not pressed, pull up resistor on circuit board is pulling the PORT pin high
                  {ToSendDataBuffer[1] = 0x01;}
                  else{ToSendDataBuffer[1] = 0x00;}
                  if(!HIDTxHandleBusy(USBInHandle)){
                      USBInHandle = HIDTxPacket(HID_EP,(BYTE*)&ToSendDataBuffer[0],64); }
            break;

            case 0x37: {
                WORD_VAL w;
                if(!HIDTxHandleBusy(USBInHandle)) {
                  ToSendDataBuffer[0] = 0x37; 
                  ToSendDataBuffer[1] = 55;      
                  ToSendDataBuffer[2] = 12;      
                  USBInHandle = HIDTxPacket(HID_EP,(BYTE*)&ToSendDataBuffer[0],64);
                } //if
            }
            break;
          
            default:
            break;

        }// switch(ReceivedDataBuffer[0])

 

Мне собственно это и нужно. Устройство должно читать кнопки, моргать светодиодами, читать АЦП и тд.

 

Вопрос, нужно ли для каждой функции создавать endpoint, или определить для себя 255 (или более) типов пакетов и обмениваться данными через готовый endpoint?

Share this post


Link to post
Share on other sites
Вопрос, нужно ли для каждой функции создавать endpoint, или определить для себя 255 (или более) типов пакетов и обмениваться данными через готовый endpoint?

Создавать endpoint не нужно.

А лучше сначала почитать документацию по USB, HID и т.д., она ведь сейчас доступна - а уже потом задавать вопросы...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this