Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Problem mit WLAN Verbindung und selbst geschriebene FBProgs

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
EverNoob



Anmeldungsdatum: 23.10.2005
Beiträge: 15

BeitragVerfasst am: 26.11.2005, 20:53    Titel: Problem mit WLAN Verbindung und selbst geschriebene FBProgs Antworten mit Zitat

Hallo,
ich lerne gerade in FB zu programmieren und hab ein Problem mit selbst geschriebenen Programmen....
Nach einigen durchläufen von Programmen die ich in FB geschrieben habe, verliert mein Wlan Adapter plötzlich die Verbinden mit dem Router. Dieses Problem taucht nur auf wenn ich in FB geschriebene Programme laufen lasse.
Hat jemand ne Idee voran es liegen könnte?

Hier ein Beispiel
http://mitglied.lycos.de/enterpriseforum/progs/Systembench.rar

P.s. Ich benutze die FBIde 0.4.3 und die FBC Version 0.14


Zuletzt bearbeitet von EverNoob am 27.11.2005, 12:47, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 27.11.2005, 03:53    Titel: Antworten mit Zitat

Servus.

Aaaalso, zwei Sachen:

Ich hab nen T-Sinus-111-WLan-Paket zu Hause (also USB-Adapter wie Router), und die Verbindung ist _nicht_ abgerissen, im Gegenteil, ist von 33% "Verbindungsqualität" auf 40% gestiegen - ehrlichgesagt zweifle ich allerdings, dass das an deinem Programm liegt grinsen

Des weiteren: Du hast da einen Denkfehler in deinem Programm. "print" selber benötigt (zumindest relativ) viel Rechenzeit - probiers aus: Vergleich mal das Ergebniss deines Benchmarks wenn a) nach jedem "loop" ein "print" kommt, oder wenn b) erst am ende der 30 (?) Sekunden die Zahl der Durchläufe ausgegeben wird.

(Genaue Erklärung für Klugscheisser: du misst nicht die Menge der "line"s in 30 Sekunden, sondern die Menge der "line + print"s in 30 Sekunden. Da diese Zahl zumindest bei mir in die hunderttausende geht, machen schon die Millisekunden für ein "print" in der Summe ordentliche Messfehler aus. Mit den Worten meines Physiklehrers: "Wer misst, misst Mist!")

Gruß
Lutz böse Ifer

ps: nette grafik lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Devilkevin
aka Kerstin


Anmeldungsdatum: 11.11.2004
Beiträge: 2532
Wohnort: nähe Mannheim

BeitragVerfasst am: 27.11.2005, 11:59    Titel: Antworten mit Zitat

Vielleicht liegts ja wirklich am Compiler oder der IDE.
Ich würde einfach mal mir die neuste Version von beiden besorgen.
_________________
www.piratenpartei.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 27.11.2005, 12:15    Titel: Antworten mit Zitat

@Devilkevin
EverNoob hat Folgendes geschrieben:
P.s. Ich benutze die FBIde 0.4.3 und die FBC Version 0.14

Das ist absolut in ordnung, weil die Testing Version von Freebasic hat keine relaventen änderungen in dem Gebiet lächeln.

Nun zum Eigentlichen Problem:
Ich kenne das Problem in einer Variante:
Als ich eines meiner Programme unter Linux kompletiert habe, ruckelte das Programm wie blöd, die Lösung war in die Hautpschleife eine Sleep 1 einzubauen, dann läuft Programm rund.
Unter Windows ist der Effekt ähnlich, die Prozessorlast sank von 100% auf 0%, ich vermute das es auch bei dir gehen könnte.

Probiermal diese zwei Programme aus:
Code:
Do
Print "Test"
Loop

Code:
Do
Print "Test"
sleep 1
Loop

beim zweiten Programm sollte die Verbindung nicht mehr abbrechen.

Kurze Erklärung noch:
sleep 1 bewirkt eine Pause von 1ms also 0.001 Sekunden, in dieser Zeit kann das Betriebssystem sozusagen "verschnaufen" und anderen Programmen Rechenzeit geben.

Edit:
SystemBenchmark.bas hat Folgendes geschrieben:
Code:
# __FB_WIN32__
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''Marcel Scheele Kleines Benchmark und CPU Auslastungsgenerator Proggi     ''
''Erzeugt auf A64 Prozessoren 100% Prozessorlast                           ''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Also darum ...
Dann musst du wohl beim Benchmark Programm damit leben ...
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight


Zuletzt bearbeitet von Michael Frey am 27.11.2005, 12:25, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
EverNoob



Anmeldungsdatum: 23.10.2005
Beiträge: 15

BeitragVerfasst am: 27.11.2005, 12:24    Titel: Antworten mit Zitat

Lutz Ifer hat Folgendes geschrieben:
Servus.

Aaaalso, zwei Sachen:

Ich hab nen T-Sinus-111-WLan-Paket zu Hause (also USB-Adapter wie Router), und die Verbindung ist _nicht_ abgerissen, im Gegenteil, ist von 33% "Verbindungsqualität" auf 40% gestiegen - ehrlichgesagt zweifle ich allerdings, dass das an deinem Programm liegt grinsen

Des weiteren: Du hast da einen Denkfehler in deinem Programm. "print" selber benötigt (zumindest relativ) viel Rechenzeit - probiers aus: Vergleich mal das Ergebniss deines Benchmarks wenn a) nach jedem "loop" ein "print" kommt, oder wenn b) erst am ende der 30 (?) Sekunden die Zahl der Durchläufe ausgegeben wird.

(Genaue Erklärung für Klugscheisser: du misst nicht die Menge der "line"s in 30 Sekunden, sondern die Menge der "line + print"s in 30 Sekunden. Da diese Zahl zumindest bei mir in die hunderttausende geht, machen schon die Millisekunden für ein "print" in der Summe ordentliche Messfehler aus. Mit den Worten meines Physiklehrers: "Wer misst, misst Mist!")

Gruß
Lutz böse Ifer

ps: nette grafik lächeln



Hallo,

Doch ich kann mit ziemlicher Sicherheit andere Ursachen ausschließen, da ich das Programm auch schon an 2 anderen Rechnern (Centrino NB usw.) getestet hab und den gleichen Fehler reproduzieren konnte...

Nimm den Zweck des Programmes mal nicht soo ernst.. Das die Methode nicht so ganz das wahre ist ist mir klar. Der Code ist vielmehr ein Sammelsurium von Codeschnipseln die ich im laufe meines Übens so prduziert hab... Das Programm hab ich seitdem auch schon 3 mal komplett umgeschrieben... (von goto zur gosub Methode und zur sub/end sub usw.)...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 27.11.2005, 12:31    Titel: Antworten mit Zitat

Ich hab wie gesagt, das Gefühl, das dein WLAN Treiber oder die WLAN Karte einfach zuwenig rechenzeit abbekommt, wenn du 100% der Rechenzeit für irgendeinen Benchmark verbrauchst ...
Es kann auch sein, das deine Basisstation alle x-Sekunden eine Meldung will und du diese eben mit der 100% Prozessorlast abwürgst, weil WIndows meint dein Programm sei wichtiger als WLAN.

Etwas frage ich mich: Du machst Benchmark Messung bei einem System das du gerade Verwendest? ugly!
Wenn du den Rechner im moment der Messung nicht Benützen würdest, würdest du nicht bemerken das die Verbindung abbricht ...
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
EverNoob



Anmeldungsdatum: 23.10.2005
Beiträge: 15

BeitragVerfasst am: 27.11.2005, 12:32    Titel: Antworten mit Zitat

Michael Frey hat Folgendes geschrieben:
@Devilkevin
EverNoob hat Folgendes geschrieben:
P.s. Ich benutze die FBIde 0.4.3 und die FBC Version 0.14

Das ist absolut in ordnung, weil die Testing Version von Freebasic hat keine relaventen änderungen in dem Gebiet lächeln.

Nun zum Eigentlichen Problem:
Ich kenne das Problem in einer Variante:
Als ich eines meiner Programme unter Linux kompletiert habe, ruckelte das Programm wie blöd, die Lösung war in die Hautpschleife eine Sleep 1 einzubauen, dann läuft Programm rund.
Unter Windows ist der Effekt ähnlich, die Prozessorlast sank von 100% auf 0%, ich vermute das es auch bei dir gehen könnte.

Probiermal diese zwei Programme aus:
Code:
Do
Print "Test"
Loop

Code:
Do
Print "Test"
sleep 1
Loop

beim zweiten Programm sollte die Verbindung nicht mehr abbrechen.

Kurze Erklärung noch:
sleep 1 bewirkt eine Pause von 1ms also 0.001 Sekunden, in dieser Zeit kann das Betriebssystem sozusagen "verschnaufen" und anderen Programmen Rechenzeit geben.

Edit:
SystemBenchmark.bas hat Folgendes geschrieben:
Code:
# __FB_WIN32__
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''Marcel Scheele Kleines Benchmark und CPU Auslastungsgenerator Proggi     ''
''Erzeugt auf A64 Prozessoren 100% Prozessorlast                           ''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Also darum ...
Dann musst du wohl beim Benchmark Programm damit leben ...



Danke für den Tip... Das Problem mit der teilweisen hundertprozentigen Prozessorlast bei allen Programmen im Idle hatte ich anfangs auch. Nachdem mich hier ein Forenmitglied in einem Thread auf die Idee mit dem sleep 1 gebracht war
es weg...

aus meinem Code
Code:
if start=0 then sleep 1 ''Wenn keine Aktion dann schlafe kurz


Hmmm aber das könnte tatsächlich sein das während des Benchloops die hohe Prozessorlast die Verbindung zusammen brechen läßt.... verwundert Aber dann hättest du wohl recht und ich müßte damit leben....Komisch nur das es bei Luzifer nicht die gleichen Auswirkungen hatte.... neutral
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
EverNoob



Anmeldungsdatum: 23.10.2005
Beiträge: 15

BeitragVerfasst am: 27.11.2005, 12:40    Titel: Antworten mit Zitat

Nochmal ich lächeln

Bei dem anderen Programm wo es genauso häufig auftaucht... Einem 2D Spiel (Raumschiffshooter) ist wohl eine ähnlich hohe Prozessorlast in manchen Programmteilen zu erwarten... Und damit würde sich das Problem wohl auch dort erklären lassen..... mit dem Kopf durch die Mauer wollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 27.11.2005, 16:04    Titel: Antworten mit Zitat

In Schleifen immer schön SLEEP 1 verwenden. Damit geht die CPU-Auslastung drastisch runter und dein Programm wird nicht ausgebremst... lächeln
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 27.11.2005, 16:28    Titel: Antworten mit Zitat

Hallo.

Mit Qbasic und Visual Basic kann man ja irgendwie ein DoEvent aufrufe, was nicht solange dauert wie sleep 1. Geht das auch irgendwie bei fb?? Denn sleep 1 ist mir in manchen sachen zu lange.

MIchael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 27.11.2005, 16:37    Titel: Antworten mit Zitat

Hallo!

DoEvent gibt es bei QB nicht direkt - hier im Forum wurde das mal "nachgebaut". Ich such's mal raus... lächeln

/Edit:

So, hier ist es: ich weiß aber nicht ob's auch in FB funktioniert. Versuch's mal, ich kann's gerade nicht testen. Hat dreael 'mal vorgestellt.

Zitat:

Code:

' $include: 'qb.bi'

DIM dosIntEin AS RegType, dosIntAus AS RegType

dosIntEin.ax = &H1680
CALL INTERRUPT(&H2F, dosIntEin, dosIntAus)



/Edit2: Ich hoffe, dass ich hier nichts falsches schreibe... mit den Augen rollen

Greetings,
Mao
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 27.11.2005, 17:14    Titel: Antworten mit Zitat

Es kann so nicht funktionieren!
z.B. 'qb.bi' gibt's bei Freebasic nicht ...
des weiteren hat Freebasic den Befehl "CALL INTERRUPT" nicht ...

Alle Befehle für Event Handling die in der Datei keywords.txt sind, stehen unter "* Unsupported (won't be implemented unless someone else does that...) *".
Vielleicht gibt es Workarounds für solche Probleme, leider kenne ich nur sleep 1 ...
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 27.11.2005, 17:19    Titel: Antworten mit Zitat

Das meinte ich ja auch. Bei freebasic geht das aber nicht. Habe mal eins gesehen, was mit der Winapi nachgebaut wurde, allerdings wird da auch sleep 1 gebraucht.

Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 27.11.2005, 17:31    Titel: Antworten mit Zitat

Hallo,

du kannst SLEEP 1 auch mit der WinAPI nachbilden, sodass du um den SLEEP Befehl herumkommst. Außerdem kannst du in deine zeitkritischen Schleifen einen Zähler einbauen, der nur bei jedem 10. Durchlauf oder so einen SLEEP Befehl ausführt. In Schleifen bei QB-Programmen muss unbedingt der Interrupt rein, wenn das Programm mal unter Windows 2000/XP laufen soll, ohne den Prozessor zu grillen... Ein ausführlicheres Beispiel dazu liefert die Forensuche nach DoNothing. lächeln

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 27.11.2005, 20:03    Titel: Antworten mit Zitat

Hallo!

Das es die qb.bi bei freeBASIC nicht gibt war mir klar, hab's der Vollständigkeit halber aber drinnen gelassen. Ob Interrupts unter FB angesprochen werden können - ebend dabei war ich mir nicht sicher. Kann ich eigentlich nicht direkt verstehen, da es sicher praktisch wäre. neutral
Ich schrieb ja
Zitat:
Ich hoffe ich hab hier nichts falsches geschrieben...

_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz