Forum: PC-Programmierung usb und polling intervall


von tim (Gast)


Lesenswert?

hi,
mit einem usb-gerät (hid) sende ich 8bit daten in 1ms (polling
intervall) abständen an den pc.
dabei gehen daten verloren, wahrscheinlich weil mein application
programm (in vb) die datenrate nicht bewältigen kann.
ich habe zwar das polling-intervall verändern und erziele auch bessere
ergebnisse, aber ganz zufrieden bin ich damit nicht.
hat jemand ähnliche probleme gehabt oder weiß wie ich diese problem am
besten löse?

von René K. (king)


Lesenswert?

Es ist eine gute Idde, bInterval so groß wie möglich zu halten; das hält
den Bus frei für andere Geräte. Wenn Du die eine Millisekunde nicht
wirklich brauchst, setze das Intervall ruhig hoch.

Wenn Du es trotzdem nicht schaffst, das eine Byte Deines Reports
rechtzeitig zu verarbeiten, kannst Du Dir überlegen, den Eingangsbuffer
zu erhöhen. Das machst Du mit der API-Funktion HidD_SetNumInputBuffers
(Achtung: Der zweite Parameter ist die Anzahl der Reports, nicht
Bytes).

Im Übrigen hege ich gerade den Verdacht, daß Du die Daten in einem
Timer einliest. Wenn dem so ist und Du tatsächlich jeden Report
mitbekommen mußt, Dir keine Aussetzer leisten kannst, hast Du Dein
Problem gefunden. Das geht nicht in einem Timer.

von tim (Gast)


Lesenswert?

stimmt, du hast mit deiner vermutung recht. ich benutze den
1,024-millisekunden-timer as interrupt (sof-isr).ich werde das dann
umändern.
besser ist es dann einen usb-endpunkt-interrupt zu benutzen?
danke rene!! ich werde ausprobieren, ob es funktioniert.

von tim (Gast)


Lesenswert?

rene du bist echt ein king :)
dank dir hab ich den fehler beseitigt bzw rausgefunden, dass es daran
liegt. die datenübertragung klappt super, es gehen keine daten
verloren........yeeeeee

von tim (Gast)


Lesenswert?

leider hab ich an einer anderen stelle ein weiteres problem entdeckt,
und zwar:

ich sende kontinuierlich eine zahl z.b. 10. dieser report kann auch
empfangen werden in meiner pc-application. aber in unregelmäßigen
abständen wird plötzlich eine ganz bestimmte zahl empfangen. und diese
zahl ist immer dieselbe. ich weiß nicht woher die herkommt.. an meiner
firmware kann es nicht liegen, die habe ich emuliert bzw. der code ist
minimal. ich weiß nicht woher diese zahl herkommt...

läuft an einer stelle irgendwas schief mit meinen api-aufrufen?
readfile?

von Tobias F. (Gast)


Lesenswert?

Hi..
ich möchte ein Referat über den Polling-Bus von USB halten...

Habt ihr irgendwelche Seiten für mich wo ich mich über diese Thematik 
belesen kann bis in den Urschleim? als was in die tiefe geht .. wo man 
sieht wie das alles funktioniert?

mfg
Tobias F.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.