Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Schuhmann
Anmeldungsdatum: 22.03.2007 Beiträge: 4 Wohnort: Osnabrück
|
Verfasst am: 27.03.2007, 16:09 Titel: 4sek Schrift einblenden + Verbindunsaufbau im Hintergrund |
|
|
Hallo,
kurz zu meiner Person, ich bin der Nachfolger von "Studio" und nun mit der MDE Programmierung in BHT-Basic betraut und habe gleich zu Anfang eine Frage an euch. Ich hoffe ihr könnt mir auch so gut helfen wie meinem Vorgänger.
Nun mein Vorhaben:
In einem Programm wird versucht eine Bluetooth-Verbindung zu einem Drucker aufzubauen. Dies dauert ca. 4sek. Da die Kollegen die das MDE benutzen aber ziemlich ungeduldig sind und schon vor fertigem Aufbau eine Taste drücken, wird der Aufbau gestört bzw. abgebrochen. Mir schwebt nun vor, während des Verbindungsaufbaus einen Schriftzug "Bitte Warten" einzublenden (4sek) und dann wieder verschwinden zu lassen.
ich habe es wie folgt versucht:
OPEN "COM4:M,SPP,"+sato$+",,5" AS #blueCom%
...
PRINT "BITTE WARTEN"
TIMEA = 40
WAIT .pvEvent,.pvEvTma0
PRINT " "
Nun wird der Schriftzug für 4sek angezeigt, nur der Verbindungsaubau wird auch für 4sek angehalten und läuft nicht weiter, dies sollte er aber.
Ich hoffe ich konnte mein Anliegen verständlich machen und hoffe auf eure Hilfe.
Schonmal vielen Dank im Vorraus!
Gruß, der Schuhmann _________________ Entwicklungsumgebung:
---------------------------
Hardware: Denso BHT 300 / SATO Etikettendrucker (MB 200)
Software: BHT-Basic (Ähnlichkeiten zu MSDOS-Basic)
Infos: ftp://www.denso-id.de/Documents/Manuals/Programmers_Manuals/Denso_OS/BHT300_Programmers_Manual_E.pdf |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 27.03.2007, 16:13 Titel: |
|
|
Code: |
Dim xtime as double
xtime=timer
do:loop while timer-xtime<4
|
so würd ich das machen... _________________
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 27.03.2007, 20:21 Titel: |
|
|
wärs nich sinnvoller die cursorpos zu speichern den schriftzug auszugeben, und dann, wenn der verbindungsaufbau ferdisch is, cursor y-pos LOCATEn und mit print die zeile überzuPRINTen?? _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Schuhmann
Anmeldungsdatum: 22.03.2007 Beiträge: 4 Wohnort: Osnabrück
|
Verfasst am: 28.03.2007, 07:46 Titel: |
|
|
Hallo,
vielen Dank für eure schnelle Hilfe.
Ich habs jetzt nach csderats Vorschlag gemaht. Einfach, aber genial. Warum ich da nicht drauf gekommen bin...
External_pain`s vorschlag konnte ich so nicht realisieren.
Da ich bis Dato nicht viel mit der Programmierung (allgemein) zu tun hatte, mal ne Verständnisfrage. Du legst ein Array xtime mit double Werten an un setzt es gleich timer. Die Schleife läuft so lange wie timer-xtime kleiner 4 sind. Ist xtime denn eien Funktion? Ansonsten kommt da doch immer 0 raus. Im Programmers Manual kann ich jedenfalls nichts in der Richtung xtime ausfindig machen.
Vielen Dank, der Schuhmann _________________ Entwicklungsumgebung:
---------------------------
Hardware: Denso BHT 300 / SATO Etikettendrucker (MB 200)
Software: BHT-Basic (Ähnlichkeiten zu MSDOS-Basic)
Infos: ftp://www.denso-id.de/Documents/Manuals/Programmers_Manuals/Denso_OS/BHT300_Programmers_Manual_E.pdf |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 28.03.2007, 14:11 Titel: |
|
|
aaalso:
Code: |
Dim xtime as double
xtime=timer
do:loop while timer-xtime<4
|
Code: |
dim xtime as double
|
-Es wird eine Variable vom typ double erstellt; das ist eine Zahl mit 15 Nachkommastellen
-timer gibt die zeit, in sekunden, zurück, die seit mitternacht vergangen ist
-xtime beinhaltet jetzt den aktuellen status von timer. xtime wird danach nicht mehr aktualiesiert
Code: |
do:loop while timer-xtime<4
|
-Das Zerpflücken wir mal:
anfang einer endlossschleife, die eine abbruchbedingung haben KANN.
Code: |
loop while timer - xtime < 4
|
ende der endlossschleife, inklusive abbruchbedingung.
-Wenn Timer, subtrahiert von xtime, kleiner ist als 4, dann machst du weiter.
in diesem fall ist das auch net sinnvoll, denn du willst nebenbei etwas tun, was hier ein wenig kompliziert wird.  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Schuhmann
Anmeldungsdatum: 22.03.2007 Beiträge: 4 Wohnort: Osnabrück
|
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 28.03.2007, 14:46 Titel: |
|
|
Ich weiss nicht warum die Timer methode nicht so sinnvoll ist,
immerhin wartet sie 4 sekunden ohne das, verarbeitende Prozeduren unterbrochen bzw angehalten werden.
Immerhin war das die Frage
Edit: oh.. btw: External_Pain  _________________
 |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 28.03.2007, 20:00 Titel: |
|
|
timer is deswegen net sinnvoll, da durch die Schleife die CPU unter Vollast steht... |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 29.03.2007, 01:03 Titel: |
|
|
hmm... das eine While/Wend bzw Do/Loop schleife die CPU ziemlich in anspruch nimmt habe ich bereits festgestellt, allerdings habe ich nicht wirklich eine ahnung warum...
Sollte das Programm nicht 4sek. warten ???
Zitat: | Mir schwebt nun vor, während des Verbindungsaufbaus einen Schriftzug "Bitte Warten" einzublenden (4sek) und dann wieder verschwinden zu lassen. |
BTW: liets denn keiner meine Sig? Helf mir mein verstand zu füllen *g* _________________
 |
|
Nach oben |
|
 |
Schuhmann
Anmeldungsdatum: 22.03.2007 Beiträge: 4 Wohnort: Osnabrück
|
Verfasst am: 29.03.2007, 07:28 Titel: |
|
|
Hallo,
die 4sek waren nur eine grobe Abschätzung, weil der Verbindungsaufbau ungefähr so lange dauert.
csderats Lösung ist für mich optimal, da die Schrift nur solange angezeigt wird wie der Aufbau dauert.
Wäre die do loop Schleife nicht quasi das selbe wie mein Timer?
TIMEA = 40
WAIT .pvEvent,.pvEvTma0
Da hatte ich aber das Problem dsas der Aufbau auch für 4sek angehalten wurde.
Echt grandios hier, Vielen Dank nochmal! _________________ Entwicklungsumgebung:
---------------------------
Hardware: Denso BHT 300 / SATO Etikettendrucker (MB 200)
Software: BHT-Basic (Ähnlichkeiten zu MSDOS-Basic)
Infos: ftp://www.denso-id.de/Documents/Manuals/Programmers_Manuals/Denso_OS/BHT300_Programmers_Manual_E.pdf |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 29.03.2007, 14:31 Titel: |
|
|
Die CPU ist immer mit dem Arbeiten beschäftigt. Nur kann man sie zeitweise in den HALT-Mode versetzen, der, je nachdem, nur wieder verlassen wird, sobald ein Interrupt auftritt. Das ist dann z.B. 18,7 mal pro Sekunde. Oder durch Tastatur, etc.
Das was unter Betriebssystemen als CPU-Auslastung angezeigt wird, ist nur die Differenz von 100% minus dem Anteil der Ausführungszeit des Leerlaufprozesses an den gesamten Prozessen. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 29.03.2007, 14:39 Titel: |
|
|
mein Fehler
hatte angenommen das Wait ein ähnlicher Befehl ist wie Sleep und war deswegen etwas irritiert, habs jetzt erst in der befehlsreferenz nachgelesen  _________________
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
|