INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Polling über USB RAW - Timeout funktioniert nicht



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

29.08.2017, 08:58
Beitrag #1

MirkoB Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Apr 2008

2016
2007
kA

09599
Deutschland
Polling über USB RAW - Timeout funktioniert nicht
Hallo!

Ich habe das Problem, dass ich mit einem USB-Gerät kommunizieren muss, welches seine Messwerte per Polling zur Verfügung stellt. Die Kommunikation selbst funktioniert. Ich kann Kommandos via Bulk-In auf EP 0x02h senden und auf 0x83h empfangen.

02h Bulk Out (Befehle)
83h Bulk In (Status)
84h Bulk In (Messdaten)

Sobald ich aber in den "Messmodus" gehe, funktioniert es nicht mehr:
Dazu muss ich auf EP 02h den Startbefehl senden und bekomme auf 84h die ersten 96 Byte der Messwerte zurück.
Danach muss ich auf 83h ein Status abfragen, ehe auf 84h die nächsten Messwerte lesbar sind.

Das Problem ist, das es kein starres Raster ist, sondern mal 3...4 Messwerte auf 84h kommen können und auch mehrfach auf 83h Statusmeldungen.

Ich muss also irgendwie rausfinden, auf welcher USB Bulk-In Pipe Daten anliegen und dann diese auslesen.

Der Versuch dies über einen knackig-kurzen Timeout zu machen schlägt leider fehl, da der Timeout scheinbar ignoriert wird...
(Immer >2 Sekunden)

Benutzt wird Labview 2016 und der NI-VISA-Driver Wizzard.

Vielleicht hatte ja schon mal jemand eben das selbe Problem und konnte es lösen?


Mirko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.09.2017, 11:11
Beitrag #2

Freddy Offline
Oldtimer
****


Beiträge: 729
Registriert seit: Aug 2008

2019, 2020, 2021
1996
DE

76275
Deutschland
RE: Polling über USB RAW - Timeout funktioniert nicht
Hallo Mirko,
unter Visa kann man die Timeout Zeit einstellen. Du bekommst als Vorgabe die Konstante mit 2 Sekunden, die kann man aber einfach überschreiben.

Wenn Du mal Dein Programm anhängst, versteht man das Problem besser.
Du weisst doch Bilder sagen mehr als Worte Big Grin

Gruß Freddy

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.09.2017, 12:36 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2017 18:52 von Lucki.)
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Polling über USB RAW - Timeout funktioniert nicht
Das Übliche ist eigentlich, dass die Daten im ASCII-Code übertragen werden, mit Zeilenende-Zeichen für jeden Datensatz. Dann gib es keine Probleme mit unterschiedlichen Datenlängen. Vielleicht ist das bei Dir der Fall und Du hast es nur nicht bemerkt. Auf jeden Fall wäre es wichtig, das Du das "USB-Gerät" hier benennst und das Schnittstellenprotokoll postest.
Und was beinhalten denn die Statusmeldungen und wie reagierst Du darauf?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.09.2017, 15:18 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2017 15:28 von MirkoB.)
Beitrag #4

MirkoB Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Apr 2008

2016
2007
kA

09599
Deutschland
RE: Polling über USB RAW - Timeout funktioniert nicht
Hallo!

...und es wurde doch gelesen! Big Grin

Das Gerät selbst ist ein selbstentwickeltes Messgerät aus unserer Firma. Normalerweise reden die verbauten µC nur untereinander via USB. Ich muss jetzt aber für einen Prüfstand den Master auf dem PC nachbilden.

Das Protokoll ist relativ simpel:
Bulk-in Pipe ist 85h, Bulk-Out Pipe is 06h
Ich kann mit dem Gerät reden...alles gut...!

Wenn ich auf die Bulk-Out Pipe ein 0x0000 0114 (hex) rausschiebe, werden Messdaten vom Messgerät auf der Bulk-In Pipe 84 ausgegeben.
Anschließend können(!) auf der 83h Statusdaten anliegen....oder auch nicht.

Das Problem ist, dass ich die die vorhandenen Daten auf der 83h abholen muss, bevor neue an der 84h anliegen. (und umgekehrt)

Ohne das Gerät selber kann man es schlecht nachstellen.

Leider funktioniert der Timeout nicht, wenn der EP gültig ist aber keine Daten vorhanden sind. (oder ich habe den richtigen noch nicht gefunden)

Ich muss also rausfinden, ob auf EP 83h oder 84h Daten anliegen und wenn ja, darauf reagieren. (Was sicherlich mit Interrupts zu lösen sein müsste, ich weiß nur nicht wie)

Ein rudimentäres Python-Skript auf dem PC funktioniert via "CallBack"-Funktionen des darunterliegenden WinUSB-Treibers. (Der selbe, den auch der NI-VISA Wizard bereitstellt)

Ich kann leider nicht so viele "interna" freigeben, hoffentlich reicht das Blockdiagramm um mein Problem zu verstehen.

Mirko

Edit: Die Kommando Bulk-Out ist 06h (im Anhang steht noch 02h)


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  GPIB / VISA Verbindung funktioniert nicht mehr in exe marc10k 2 4.465 25.01.2019 12:15
Letzter Beitrag: marc10k
  VISA über MAX geht, im VI nicht mehr buettnerstefan 7 6.804 29.06.2018 13:02
Letzter Beitrag: buettnerstefan
  Modbus Ansteuerung funktioniert nicht JohSch 0 3.434 16.03.2018 14:53
Letzter Beitrag: JohSch
  TimeOut error 6101 patriote00 15 14.053 18.12.2015 14:55
Letzter Beitrag: patriote00
  RS 232 NI MAX funktioniert nicht/ Putty schon Gesetzt 7 7.689 19.01.2015 12:24
Letzter Beitrag: Gesetzt
  VISA: Timeout Error (1073807339) TobSTAR 4 9.704 03.07.2014 09:22
Letzter Beitrag: TobSTAR

Gehe zu: