|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Kermit
Anmeldungsdatum: 03.06.2005 Beiträge: 2
|
Verfasst am: 03.06.2005, 20:05 Titel: input$ - Nur 7 Zeichen |
|
|
Hallo,
ich habe ein Programm geschrieben, dass unter QBasic fehlerfrei laeuft, aber unter Win2000 100% Prozessorlast beansprucht und somit andere Applikationen stark verzoegert.
Nun wollte ich es mit Freebasic mal ausprobieren, weil es ja angeblich echte win32 Applikationen kompiliert.
Leider funktioniert es nicht richtig:
OPEN "COM1:9600,N,8,1,RS,CS,DS,CD" FOR RANDOM AS #1
REM Steuerzeichen STX erkennen (ASCII 002)
DO
DO
in$ = INPUT$(1, #1)
LOOP WHILE ASC(in$) <> 2
in$ = INPUT$(29, #1)
print in$
LOOP
Das Problem ist, dass ich in in$ nur 7 Zeichen reinkriege.
Sende ich z.B.
[STX]1234567890abcdefghijklmnopqrstuvwxyz von einem anderen Rechner an COM1, so wird nur
1234567
ausgegeben anstatt die ersten 29 Zeichen. Nur Warum?
Sende ich die Folge nochmal, geschiet immer das gleiche.
Wieso "schlabbert" Freebasic einfach die restlichen Zeichen? Wie koennte man das eleganter loesen. Hier im Forum wird viel von einen inpout.dll geschrieben, aber nirgends bekommt man einen vernuenftige Anleitung/Beispiel, wie man damit von der seriellen Schnittstelle lesen kann
Danke im voraus,
Dominik |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Kermit
Anmeldungsdatum: 03.06.2005 Beiträge: 2
|
Verfasst am: 03.06.2005, 20:50 Titel: |
|
|
Danke! Was FreeBasic und CPU-Last betrifft helfen die SLEEP Anweisungen vor den LOOPs
Aber dennoch funktioniert die Eingabe vom seriellen Port nicht richtig. In einem englischen Forum sagte man mir, dass open com Anweisungen gar nicht unterstuetzt werden von FreeBasic
QBasic hat trotz den Sleep Anweisungen immer noch 100% CPU-Last (weil Dos-Programm). Aussdem funktioniert mit SLEEP-Anweisung die COM-Eingabe auch nicht mehr richtig.
Ich muss mich also wohl nach einer anderen Loesung umsehen |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 04.06.2005, 12:05 Titel: |
|
|
Unter QB musst du anders vorgehen, um die CPU-Auslastung zu senken.
dreael hat Folgendes geschrieben: | Für die DOS-Programmierer an dieser Stelle noch einen ganz wichtigen CALL INTERRUPT wieder einmal:
http://www.ctyme.com/intr/rb-4530.htm
(INT 2Fh, AX=1680h)
Diesen solltet Ihr in jeder INKEY$/Mausroutinen-Idle-Schleife ständig aufrufen. Damit gibt man die CPU dem Betriebssystem zurück. Wer Ctrl+Alt+Del, "Taskmanager" aufruft, erkennt den Unterschied sofort, wenn rechts unten das grüne Vierecklein dunkelgrün bleibt. Notebook-Besitzer merken den Unterschied ausserdem im Akkubetrieb ebenfalls sofort.
Das Malprogramm-Beispiel unter
http://beilagen.dreael.ch/QB/MALPROG2.ZIP
macht ansonsten praktischen Gebrauch von dieser Funktion. |
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|