HID Keyboard連續(xù)發(fā)送為什么會(huì)錯(cuò)位?CH571

1656496831174201.png像這樣連續(xù)發(fā)送字符,中間總會(huì)出現(xiàn)錯(cuò)位的情況,為什么呢?怎么解決?

我這里使用了HID_KBD的例程進(jìn)行了嘗試,沒有出現(xiàn)你說的這個(gè)現(xiàn)象。上述程序你是做了什么修改出現(xiàn)這個(gè)現(xiàn)象的嗎,可以具體描述一下。

2dcdd28de1c162e01b9910460435026.jpg2dcdd28de1c162e01b9910460435026.jpg


? ?多謝 @TECH_Lpc!我是這樣發(fā)送的:


? ? if(events & START_REPORT_EVT)

? ? {

? ? ? ? ? ? if(send_index != save_index)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? res = hidEmuSendKbdReport(send_buffer[send_index]);

? ? ? ? ? ? ? ? send_index++;

? ? ? ? ? ? ? ? res |= hidEmuSendKbdReport(0);

? ? ? ? ? ? ? ? if(send_index >= MAX_BUFFER_LEN)

? ? ? ? ? ? ? ? ? ? send_index = 0;

? ? ? ? ? ? ? ? if(res == blePending)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? send_failed = 1;

? ? ? ? ? ? ? ? ? ? UART0_SendString("set failed\r\n", 12);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? send_failed = 0;

? ? ? ? ? ? ? ? tmos_start_task(hidEmuTaskId, START_REPORT_EVT, 35);

? ? ? ? ? ? ? ? return (events ^ START_REPORT_EVT);

? ? ? ? ? ? }

? ? }

主要改動(dòng)應(yīng)該是tmos_start_task(hidEmuTaskId, START_REPORT_EVT, 35);的時(shí)間由原來的2000改成35了,原來太慢了,我要求快速發(fā)送


調(diào)用這個(gè)tmos的任務(wù)速度較快,同時(shí)連接間隔的速度沒這么快,兩者無法匹配,所以就導(dǎo)致了丟數(shù)據(jù)。可以試試看連接間隔能不能降低,同時(shí)這里的任務(wù)時(shí)間多嘗試選擇一個(gè)合適不丟包的。

可以在這里加上一個(gè)判斷,是否發(fā)送有問題,如果不為0則丟包了。

image.png

同時(shí),我們所提供的只是參考例程。應(yīng)用到項(xiàng)目中時(shí)需要先將鍵值放入ringbuf緩存中,使用任務(wù)去發(fā)送。




只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频