اطلاعیه

Collapse
No announcement yet.

کبیورد usb

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

    کبیورد usb

    سلام.وقت بخیر.من در پروژه ی، کبیورد usb رو به برد STM32H743 وصل کردم ولی مشکلی که داره ،دکمه کیبورد فشار میدم فقط یک کاراکتر ارسال میشه و تا کاراکتر بعدی باید یک بار دیگه کلید فشار بدم این خیلی بد هست برای ادیت فایل طولانی. ولی می خوام تا زمانی که کلید رو نگه می دارم کاراکتر برگردونه . دوستانی گفتن که باید دستور صفر ارسال بشه ولی خودم فکر می کنم یه کانتری یا همچین چیزی باشه باید صفر شه.من این دستور نوشتم????
    [CPP][ if(Resend==true) {
    Resend=false;

    report[0] = 0x02; // eror key
    report[1] = 0x0; // eror key
    report[2] = 0x02; // eror key
    report[3] = 0x02; // eror key
    report[4] = 0x02; // eror key
    report[5] = 0x02; // eror key
    report[6] = 0x02; // eror key
    report[7] = 0x02; // eror key
    for(int i=0;i<10;i++){
    USBH_HID_SetReport(&hUsbHostFS,0x07, 0x00, report, 1);
    HAL_Delay(10);

    }


    }



    ​/CPP]
    جدیدترین ویرایش توسط MM320; ۱۶:۴۳ ۱۴۰۴/۰۶/۰۱.

    #2


    سلام! مشکل شما مربوط به تنظیم نبودن Auto-repeat یا Key-repeat delay در کیبورد هست. باید گزارش HID رو طوری تنظیم کنید که هنگام نگه داشتن کلید، کد آن به صورت پیوسته ارسال بشه.

    کد شما نیاز به اصلاح داره. پیشنهاد میکنم این کارها رو انجام بدید:
    1. اصلاح ساختار گزارش HID:
    cuint8_t report[8] = {0}; // Reset entire report

    // For key 'A' example:
    report[0] = 0; // Modifier keys
    report[2] = 0x04; // HID keycode for 'A'

    // Send key press
    USBH_HID_SetReport(&hUsbHostFS, 0x02, 0x00, report, 8);
    HAL_Delay(500); // Initial delay

    // Send repeated key
    while(key_is_pressed) {
    USBH_HID_SetReport(&hUsbHostFS, 0x02, 0x00, report, 8);
    HAL_Delay(50); // Repeat rate
    }
    1. اضافه کردن Key Release:
    c// When key released
    memset(report, 0, 8);
    USBH_HID_SetReport(&hUsbHostFS, 0x02, 0x00, report, 8);
    1. تنظیم تایمر برای Auto-repeat:
      با استفاده از HAL_TIM_PeriodElapsedCallback تایمری ایجاد کنید که هر 50ms گزارش رو ارسال کنه وقتی کلید نگه داشته شده.

    اگر نیاز به راهنمایی بیشتر دارید، لطفاً بخش HID descriptor و نحوه تشخیص نگه داشتن کلید رو هم بفرستید.
    و موتورهای motor BLDC از وsite ما دیدن کنید و مجموعه گسترده ما از موتورهای سروو را به صورت آنلاین دریافت کنید.​

    دیدگاه

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