Bug in BASCOM 2.0.1.0 ?!?!?

Markus

BASCOM-Experte
11. Jan. 2008
1.190
6
38
Lonsee
Sprachen
Hallo zusammen,

nun stecke ich schon über beide Ohren tief in meinem aktuellen Projekt und dann das noch .....

Frage an alle BASCOM-Nutzer:
Habt Ihr schon einschlägige Erfahrung mit BASCOM 2.0.1.0 gemacht und sind Euch sonderbare Dinge aufgefallen bzw. funktionieren Eure Programme noch?

Ich frage nicht ganz ohne Hintergedanken....

Bis zum Wochenende hatte ich noch BASCOM 1.12.0.0 um Einsatz. Soweit gut. Dann bin ich auf BASCOM 2.0.1.0 umgestiegen und nix geht mehr. Compiliert man den identischen Code so verhält dieser sich total unterschiedlich. Größtes Problemkind ist mein Dynamisches Menü welches ich über eine State Machine umgesetzt habe. Mit BASCOM 1.12. läuf es ohne Probleme und mit BASCOM 2.0.1.0 endet der gleiche Code in Resets und auf dem Display erscheint nix.

Nun hab ich ja in BASCOM schon das eine oder andere gemacht und ich war der Meinug, die Tücken von BASCOM zu kennen aber das Ding ist ne harte Nuss. Deswegen meine Frage ob es ähnliche Beobachtungen bei Euch gibt.

Ich selbst gebe nun nach einem ganzen Wochenende auf und habe mir wieder die alte BASCOM-Version installiert damit ich wenigstens weitermachen kann.

Grüße an alle,
Markus
 
Hallo Markus!

Ich verwende zur Zeit auch immer noch die 1.12 Version, weil ich von der 2.0.0.0 schon einiges an "Besonderheiten" gelesen hatte.

Vielleicht handelt es sich ja gar nicht um Bug`s sondern um grundsätzliche Änderungen in BASCOM? :hmmmm:
Kann mich erinnern, dass mir dies vor einiger Zeit bei einem Versionswechsel mal mit "ADR" passiert ist.
Vorher hatte ich ADR immer als Variable für meine IR-Kommandos. Auf einmal war "ADR" ein reserviertes Wort und ich musste alle alten Codes überarbeiten.

Beim Wechsel zu BASCOM 2.0 habe ich bis jetzt aber nur etwas von der Konfiguration der COM-Ports und etwas von "Declare....." gelesen. Da sollen die wohl grundsätzlich etwas von der Syntax geändert haben.
Angeblich steht aber alles in der Hilfe.......... :rolleyes:


Ich werde dann wohl auch sicherheitshalber erst mal bei 1.12 bleiben. ;)

Grüße,
Cassio
 
Hi Casio,

ich hatte noch am Sonntag Abend Kontakt mit Mark Alberts von MCS aufgenommen und das Problem diskutiert. Ich habe im Voranalysen geliefert und ihm meine Probleme detailiert beschrieben. Daraufhin gingen einige Mails hin und her und gestern Morgen habe ich zum Test eine neue DLL erhalten welche dann wahrscheinlich zu einer BASCOM-Version 2.0.2.0 führen wird die es noch nicht gibt.

Mit der neuen DLL und dem BugFix von Mark konnte ich meine Probleme positiv verifizieren. Damit kann ich sagen, dass es sich bei dem von mir beschriebenen Problem definitiv um ein BASCOM-Problem handelte.

Lass mich etwas zum Problem ausholen:

Man definiere eine Menü-Datenstruktur im Speicher wie folgt. Als Basis dient meine Menü-Statemachine welche ich schon in meinem Projekt ConvCtrl eingesetzt habe.
Code:
' Null ist ein Dummy-Flag für Zustand und Gosub -> tue nichts
Null:
         Return

' Menü MEN1 - Dimmerstatus und Einstellen
Men1:
         ' Hoch       Runter      Links       Rechts
         Adr2 Men5 : Adr2 Men2 : Adr2 Null : Adr2 Null
         Adr2 Null
         Data &B00000111
         '     1234567890123456
         Data "2            2/5"
         Data " Dimmer  Status"
         Data " und einstellen"
....

Soooo. Dann definiere man noch ein paar Arbeitsvariablen zum Halten der Daten und Parameter:
Code:
' ----- MENUE:  Menue -----
' Tastencodes
Dim Key_codes(key_buttons) As Byte                          ' Array für Tastencodes
Dim Key_shortcut_status As Byte                             ' Statusflag für Short-Cut Modus

' Textausgaben
Dim Menue_lcd_textbuffer(3) As String * 17                  ' Auslesebuffer für die Menü-Strings
Dim Menue_ausgabeflags As Byte                              ' Ausgabeflags wie viele Zeilen
Dim Menue_menueupdate_flag As Byte                          ' Flag für zyklisches Update von Menüs
Dim Menue_update_counter As Word                            ' Sectic counter für Menü-Update

' Zustandsvariablen
Dim Menue_state As Word                                     ' aktueller State
Dim Menue_state_buffer As Word                              ' gebufferter Menüstatus
Dim Menue_state_renew As Byte                               ' Flag
Dim Menue_state_gosub As Word                               ' aktuelles Unterprogramm
....

Das erste was ich in der SW dann mache ist die korrekte Adresse des Menüpunkts für die Speicherstruktur aufgrund des Labels in eine Arbeitsvariable laden:
Code:
'Initial state variables
Menue_state = Loadlabel(men5)                               ' Startbildschirm

Nun, wenn man Menüs umschalten möchte geschieht das in der Routine Menue_change_state. Hier werden alle relevanten Inhalte aus dem Speicher geladen:

Code:
'------------------------------------------------------------------------------
' MENUE - Gosub-Routine: Menue_change_state
' Routine stellt den Status der Menue-State-Machine fest und führt ggf. Wechsel
' durch. Hierbei werden die Pointer auf die States neu befüllt und die notwen-
' digen Variablen neu gesetzt.
'------------------------------------------------------------------------------
Menue_change_state:

   ' Wenn Konstante gesetzt Trace Output schreiben
   #if Menue_testmodus                                      ' Trace
      Print #3 , "Enter Menue_change_state"
      Print #3 , "MenueState : " ; Hex(menue_state)
   #endif                                                   ' Trace

   ' 16-Bit-Adresse des aktuellen Labels / Menüzustandes laden
   lds R8, {Menue_State}
   lds R9, {Menue_State + 1}

   ' Mittels Schleife über das Tastatur-Array Verzweigung prüfen
   For Temp_byte_1 = 1 To Key_buttons
      ' Ansprungsadresse laden
      Read Temp_word_1
      ' Prüfen ob zugehörige Taste betätigt
      If Key_taste = Key_codes(temp_byte_1) Then
         ' Wenn Taste betätigt dann prüfen ob Ansprungziel gültig
         If Temp_word_1 <> Loadlabel(null) Then
            ' Menü muss erneuert werden - Flag setzen
            Menue_state_renew = 1
            ' Tastenstatus zurücksetzen um Einfluss von GOSUBs zu verhindern
            Key_taste = Key_null
            ' Neuer Menüstatus in Zustandsmaschine laden
            Menue_state = Temp_word_1
         End If                                             ' Ansprungziel
      End If                                                ' gültige Taste
   Next Tempb_byte_1                                        ' Array mit Tasten-Codes

   ' Adresse des anzuspringenden Unterprogramms einlesen
   Read Menue_state_gosub

   ' Ausgabeflags einlesen
   Read Menue_ausgabeflags

   ' Textzeilen für LCD-Ausgabe einlesen
   Read Menue_lcd_textbuffer(1)                             'read LCD text
   Read Menue_lcd_textbuffer(2)                             'read LCD text
   Read Menue_lcd_textbuffer(3)                             'read LCD text

Return
'-- End Menue_chane_state -----------------------------------------------------

Und das geht mächtig schief. In den Variablen steht nur Müll drinn und wenn man versucht eine Menüfunktion im Nirvana anzuspringen dann landet man im Reset.

Als Fehlerursache habe ich die Funktionen
- Loadlabel()
- ds R8, {Menue_State}; lds R9, {Menue_State + 1}
- Read

eingekreist.

An was es nun explizit lag weiß ich nicht und da hält sich bisher MCS auch bedeckt. Ich wollte noch ein wenig mit den Funktionen in BASCOM 2.0.1.0 rumspielen damit ich genau weiß was madig war.

Nun freue ich mich zunächst auf eine neue BASCOM Version 2.0.2.0

Mal sehen, wann ich meinen Ansprechpartner das nächste Mal strapazieren muss :cool:

Grüße,
Markus
 
Hallo Markus!

Danke, für die Ausführungen!
Dann warte ich also erst einmal noch auf die Version 2.0.2 und dann werde ich updateten. :)

Mal sehen, wann ich meinen Ansprechpartner das nächste Mal strapazieren muss

Och, ich glaube nicht, dass er es als unangenehm empfunden haben wird.
Letztlich wird er doch froh gewesen sein, so einen kompetenten "Helfer" gehabt zu haben! ;)


Werde also gleich mal schauen, ob MCS die Version 2.0.2 schon online gestellt hat. :cool:


Grüße,
Cassio
 
Hallo!

Ab Bascom 2.0.0.0 checkt Bascom automatisch beim Programmstart
ob neue Updates vorhanden sind.
Das lästige nachschauen entfällt dadurch.

MfG
caargoo
 
Hallo zusammen,

noch was:

Ab Bascom 2.0.0.0 checkt Bascom automatisch beim Programmstart

Mein Tipp dazu ist abschalten. Und zwar unter Options-Environment-IDE die CheckBox "CheckForUpdates".

Warum?

Wenn Du auf einer Maschine arbeitest welche hinter einem Proxy mit beschränktem Internetzugang hängt dann dauert der Start von BASCOM suuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuper lang und zum Schluss bekommst Du einen Socket Error # 10061 "Connection refused".

Das war mir zu läßtig und ich habe das Ding abgeklemmt!

Grüße,
Ma
 
Hallo Markus,

ich kann den Bug bestätigen. StateMachine mit der aktuellen Bascom-Version funktioniert definitiv nicht. Daran bin ich diese Woche beinahe verzweifelt. Ich habe zudem mit Clock = User neuerdings Probleme, muss aber mal noch weiter testen, woran es genau liegt.
 
Hi, guten Morgen,

probier mal die neue DLL im Anhang. Einfach die DLL im BASCOM-Installationsverzeichnis austauschen. Damit sollte auf jeden Fall das Problem mit der State-Machine behoben sein.
Habe die DLL von Mark von MCS bekommen.

Grüße,
Markus
 

Anhänge

  • BASC-AVR-2020.zip
    509,1 KB · Aufrufe: 39
Habe die Datei mit WinZIP 11.1 und maximaler Kompression gepackt damit sie 509k groß wird. Sonst ist sie 530k groß und ich kann sie mit der Dateigröße nicht mehr hochladen.
Mit WinRAR ist sie 268k groß aber RAR kann unser Forum nicht. Die Originaldatei ist 1,3 MByte groß.

@Dirk; bitte mehr ZIP-Space oder ein RAR-Format :adore:

Grüße,
Ma
 
Hallo Markus,
Dein Zip-File ist okay, ich konnte es runterladen und entpacken
(bei mir tut's der interne Zipper des TotalCommanders) :D
Hab es aber noch nicht ins BASCOM gespielt, weil ich die aktuelle
Version noch installieren muß. Aber ich denk es geht :rolleyes:.
Grüsse
Wolfgang
 
Hallo Wolfgang,

das denke ich auch. Ich arbeite nun seit - ich glaube Montag habe ich die DLL bekommen - schon seh intensiv mit dem Patch und bin bisher auf keine weiteren Fehler gestoßen. Aktuell sitzt das Problem eher vor der Tastatur :p

Interessant finde ich, dass die 2.0.2.0 noch nicht offiziell gelaunched ist....

Grüße und schönen Abend,

Ma
 
Ja super, freut mich zu hören!

Grüße,
Markus
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)