AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wie kann ich mit Delphi Daten vom USB-Controller abfragen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann ich mit Delphi Daten vom USB-Controller abfragen?

Offene Frage von "KRM"
Ein Thema von KRM · begonnen am 14. Apr 2007 · letzter Beitrag vom 14. Apr 2007
 
KRM

Registriert seit: 6. Feb 2007
Ort: Kölle am Rhing
24 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Wie kann ich mit Delphi Daten vom USB-Controller abfrage

  Alt 14. Apr 2007, 12:33
@Daniel B:

Der PIC hat einen 64 Byte großen Puffer, daran kann ich leider nichts einstellen... ...

@Corpsman:

Danke, ich werde die Information im Hinterkopf behalten...



---


Inzwischen habe ich ein wenig weiter gearbeitet...
Ich habe auf die Funktionen

_MPUSBWrite und
_MPUSBRead

für de USB-Kommunikation zurück gegriffen...
Gesendet wird mein Codewort READ_IR und der Pic reagiert darauf (mit einer leuchtenden LED)
Dann habe ich eine While-Schleife dahinter gesetzt, die prüft, ob Daten angekommen sind...
Und hey, das Programm springt nur raus, wenn auch welche gekommen sind.
(Habe es getestet, in dem ich im PIC ein Delay eingebaut hat, dass erst nach einer Weile 2 Datenpackete in die Buffer schreibt, die vom Delphi-Programm ausgelesen werden -> receive_buf)

Jedenfalls, jetzt wollte ich einen Timout einbauen, der in einem TLABEL oder einem TEDIT-Feld angezeigt wird.
ABER
Der macht das nicht...

Guggst du:

Delphi-Quellcode:
  
//Rumtesten
  send_buf[0]:=READ_IR; // Wird vom Microcontroller erkannt und er schaltet seine Interrupts ein
  RecvLength:=4; // Anzahl der erwarteten Bytes
  ExpectedReceiveLength:= RecvLength;

  if(_MPUSBWrite(myOutPipe,send_buf,1,SentDataLength,100)<> 0) then begin
    Memo1.lines.add('gesendet'); // wird ausgegeben, PIC reagiert
    receive_buf[2] := 0; // Voreinstellung, damit er nicht vorzeitig aus der Schleife gekickt wird
    TimeCounter := 10; // 10 Sekunden Timeout
                                     // wenn der µC in den Buffer schreibt, ist der Wert 52 soweit erst mal fest
    while((receive_buf[2] <> 52) AND (TimeCounter > 0)) do begin
                                     
      // Habe ich etwas empfangen? Nein = 0, dann "warte"
      if(_MPUSBRead(myInPipe,receive_buf,ExpectedReceiveLength,RecvLength,100)=0) then
      begin
        Memo1.Lines.Add("Warte": IntToStr(TimeCounter)); // Ausgabe des Timers im Memofeld
        Label2.Caption := IntToStr(TimeCounter); // Ein Label, in dem der Timer angezeigt werden soll
        sleep(900); // 100ms werden schon in der _MPUSBRead-Funktion gewartet
        TimeCounter:=TimeCounter-1;
      end
      else
        Memo1.lines.add('Empfangen'); // funktioniert auch, wenn der PIC seine Daten gesendet hat
    end;
    if TimeCounter = 0 then
      Memo1.lines.add('TIMEOUT!'); // funktioniert auch, wenn der Timer abgelaufen ist
    Memo1.lines.add('Firmware version : '+ IntToStr(receive_buf[3])+'.'+IntToStr(receive_buf[2]));
  end;

Die Zeit im Memofeld wird angezeigt, aber nicht im Label o_O...
Und auch, wenn ich das Label durch ein TEdit ersetze und die Zuweisung

Edit1.Text := IntToStr(TimeCounter); einbaue geht es nicht... -_-...

Jedoch, wenn "TIMEOUT!" ausgegeben wurde, setzt er das Label auf "1" o_O...
WARUM macht der das?
Und warum macht er nicht das, was er machen soll?


Jemand eine Idee?

Ich habe den Sleep-Befehl auch schon mal entfernt -> Ging auch nicht...




Im Anhang ein Screenshot der GUI
Angehängte Grafiken
Dateityp: jpg gui_163.jpg (81,6 KB, 20x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz