![]() |
Abfragen des Input
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ersteinmal Hallo an alle wirklich nettes Forum was ihr hier habt^^ so nun zum Thema, hoffe ich hab den richtigen Forenteil erwischt^^ Es geht darum , ich habe mir eine USB Optokopler Karte geholt, weil ich gerne versuche starten wollte mit Signal über Eingängen die von draußen kommen mit meinem Delphi etwas auszulösen^^. So habe mir diese Karte besorgt und es gab ein beispiel Porgramm dazu, dieses Funktioniert auch Tadelos, allerdings steig ich nicht dahinter wie die das Programiert haben. Ich habe versucht mit dem ersten Eingang der karte ein Porgramm zu schreiben, auf Knopfdruck bzw Schalterumlegung soll erscheinen Hallo Welt, nur irgendwie gelingt mir das nicht, ich würde mich über hilfe sehr freuen. Habe das Mitgeliferte Programm angehangen. Danke schonmal im voraus^^ |
Re: Abfragen des Input
Hi,
also ich finde das Programm ist sehr einfach aufgebaut. Zeige mal deinen Code, damit wir rausfinden können woran es hapert. Wichtig scheint mir zu sein, dass die Inputs mit Hilfe eines Timer immer wieder abgefragt werden. Es passiert also nix von alleine. Gruss |
Re: Abfragen des Input
code habe ich noch keinen, wollte eigentlich einfach nur hallo welt schreiben lassen auf knopfdruck also
hatte mir gedacht anfrangs:
Delphi-Quellcode:
aber wollt er nicht, zur timer abfrage, die wollte ich eigentlich komplet weglassen einmal ausgelöst soll es bis manuelle pc eingabe dableiben.
Label1.Caption := 'Bereit, warte...';
while QApiExtReadDl1(...) = 0 do Application.ProcessMessages; ShowMessage('Hallo Welt'); In deren Programmbeispiel hab ich mich garnicht zurecht gefunden :wall: Gruß Christian. |
Re: Abfragen des Input
Ok, also versuchen wir es mal zusammen.
Zunächst scheint mir wichtig zu sein, das Gerät zu öffnen und ein Handle zu bekommen
Delphi-Quellcode:
device ist eine Gerätenummer von 0 - 7, versuch es mal mit 0.
handle := QAPIExtOpenCard(USBOPTO8, device);
dann sollte es möglich sein die inputs zu lesen
Delphi-Quellcode:
lines liefert dir 8 inputs auf einmal, jeder ist ein bit und kann mit
lines := QAPIExtReadDI32(handle, 0, 0);
Delphi-Quellcode:
wobei j von 0 - 7 geht, auf seinen Zustand geprüft werden.
if (lines and (1 shl j)) <> 0 then
// input an else // input ist aus ; und am Ende wieder das Gerät schliessen
Delphi-Quellcode:
Das erste im FormCreate, das letzte im FormDestroy. In der Mitte deine Prozedur zu erkennen der Aktion.
QAPIExtCloseCard(handle);
Versuchs mal. :thumb: |
Re: Abfragen des Input
irgendwi versteh ich das nicht^^
wo die befehle hinmüssen und die vereinbarungen. könntest du mir ein beispiel für mein hallo welt schreiben, tappe komplett im dunkeln bei dem ganzen. Grüße Christian |
Re: Abfragen des Input
Liste der Anhänge anzeigen (Anzahl: 1)
Na eigentlich solltst Du das selber können.
Du hast doch schon mal ein Programm geschrieben oder ? Also ich will mal nicht so sein.... Achtung in der qlib.pas sind noch ein paar Fehler drin. Habe sie korrigiert. Ich kann es natürlich nicht testen, da ich deine Hardware nicht habe. Versuchs. Die Dll zu der Karte sollte im Windows Verzeichnis oder im Programmverzeichnis liegen. Gruss |
Re: Abfragen des Input
danke dir^^ ja habe schon programme geschrieben allerdings stehe ich noch weit am anfang vieles ist für mich eher neu und ich will auch daran lernen^^
eine frage habe ich allerdings wozu ist dieses formdestroy eigentlich gut? hatte als ich selber versucht habe das program zu kürzen diese funktion entfern dachte immer die wäre unnütz |
Re: Abfragen des Input
Hi,
unnütz ist sie sicher nicht, sonst gäbe es sie nicht :-) FormDestroy wird aufgerufen, kurz bevor das Form halt freigegeben wird. Hier kann man notwendige Aufräumarbeiten durchführen, z.B. Speicher oder Handles freigeben, den/die man am Anfang (FormCreate) reserviert hat. Es ist einfach das logische Gegenstück zu FormCreate. Ich Empfehle dir mal ein paar Tutorials zu studieren, das bringt dich sicherlich konzeptionell weiter. Verwende die Forensuche ![]() Gruss |
Re: Abfragen des Input
so hab nun bischen rumgespielt (ganzen tag schon) möchte auch gerne das bischen anders probieren, nun hab ich ein altes schulprojekt mal rausgegraben, und will nun das mit dem abfragen einbasteln.
Delphi-Quellcode:
das ist die prozedur die ich damit auslösen will
procedure TForm1.StartesequenzielleAufnahme1Click(Sender: TObject);
begin Aufnahme:=true; AnsichtUpdate1Click(self); //aktualisiere Menüs if form1.IniEinzelbild then begin // Foto - Sequenz timer1.Interval:=form1.IniIntervall*1000; TimerStatus:=TSBildFolge; timer1.Enabled:=true; end else begin // Video - Folge TimerStatus:=TSvideoFolge; repeat label1.Caption:='Videoaufnahme'; NextDateiname; EinVideo; // aufnehmen Timer1.Interval:=form1.IniEinzelVideoDauer*1000; timer1.Enabled:=true; repeat Application.ProcessMessages; //Abbruchmöglichkeit 1 until TimerStatus<>TSvideoFolge; label1.Caption:='Videoerholpause'; EinVideoStop; // erholen Timer1.Interval:=form1.IniErholzeit; timer1.Enabled:=true; repeat Application.ProcessMessages; //Abbruchmöglichkeit 1 label1.Caption:=inttostr(timer1.interval)+'x'+inttostr(Timerstatus); until TimerStatus<>TSvideoFolgePause; until TimerStatus=TSStopAnforderung; // abbruch? Aufnahme:=false; AnsichtUpdate1Click(self); end; end; also muss ich das nun folgendermaßen einbinden:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin while QAPIExtReadDI32(handle, 0, 0) = 0 do Application.ProcessMessages; label1.Caption:='Videoaufnahme'; NextDateiname; EinVideo; // aufnehmen Timer1.Interval:=form1.IniEinzelVideoDauer*1000; timer1.Enabled:=true; end; end. ist das nun richtig gedacht oder komplet falsch? |
Re: Abfragen des Input
Sagen wir mal so: "Es ist nicht elegant, aber würde wohl gehen."
Du solltest mal über das Programmkonzept nachdenken. Wenn ich erst einen Button klicken soll, um dann noch darauf zu warten dass ein Schalter umgelegt wird, ist hier eine Aktion zu viel da. Ich denke dass lässt sich schöner lösen. Aber das ist halt deine Aufgabe als Entwickler, ein Konzept zu erstellen. Versuch es mal nicht mit "Try and Error", sondern mit "Concept and Realisation". :zwinker: Gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19: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