Leitura de dados ausentes hidraw [closed]

1

Ao ler dados do dispositivo HID via hidraw, às vezes sinto falta de alguns dados. Eu posso ver que os dados são transmitidos OK via USB usando um dispositivo de espionagem de hardware, mas por alguma razão eu nem sempre recebo os dados quando leio o hidraw.

O problema se tornou menos perceptível quando eu matei um processo no sistema que estava consumindo grandes quantidades de CPU, por isso estou a pensar que o meu problema está de alguma forma relacionado com a falta de CPU.

A leitura dos dados HID é feita através de um encadeamento aguardando uma seleção de bloqueio.

Por exemplo:

FD_ZERO ( &fdset_device );
FD_SET ( fd, &fdset_device );

// fd is file descriptor for /dev/hidraw0

fd_set read_set;
read_set = fdset_device;

for ( ;; ) {
    if ( ( select_result = select ( fd + 1, &read_set, NULL, NULL, NULL ) ) >= 0 ) {
    int report_len = read ( fd, report_buffer, sizeof ( report_buffer ) );
    ...
    …

Assim, sob condições corretas, os pacotes A,B,C,D,E,F são enviados & Eu recebo os pacotes hidraw A,B,C,D,E,F , mas quando o erro acontece recebo talvez A,B,E,F ou A,B,C,F

Não sei por que e sob quais circunstâncias eu perderia dados como esse. Alguém viu problemas com o hidraw perdendo dados?

    
por user55848 16.12.2011 / 19:25

0 respostas

Tags