PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Compiler überrumpeln, aber wie?



Head Free
05.06.2022, 07:05
Moin Leute,
eigentlich ist es ja was ganz banales...
Aber wie könnte man es den Compiler verklickern, dass es schon in Ordnung ist.

if PRINT_PORT = 0 then Open "comc.6:9600,8,n,1" For Output As #2 ' für BT Ausgabe bei gesteckten Jumper (LO) an Port PC6 Buchse am Board
if PRINT_PORT = 1 then Open "comb.5:9600,8,n,1" For Output As #2 ' für BT Ausgabe bei gezogenen Jumper (HI) PB5 MOSI in der Buchse!

Leider meckert der jetzt rum :naughty:

Error : device already OPENED

Hmm, gibt es da eine Lösung?

Schöne Pfingsten noch
Ronnie

RoboHolIC
06.06.2022, 17:43
Hallo Head Free,

deine Anweisung PRINT_PORT = 0 beinhaltet die Zuweisung (=) des Wertes 0 an die Variable PRINT_PORT. Ich vermute, dass du das nicht willst.
Zu erwarten wäre an dieser Stelle eine Gleichheitsprüfung (==) von PRINT_PORT und der Konstante.
Vielleicht löst sich dein Problem schon dadurch.

Head Free
06.06.2022, 21:37
Servus RoboHolIC,

Danke für deine Antwort.
Print_Port ist ein Alias von einen gesteckten Jumper..
== kennt der Compiler nicht
Mit der entweder oder kommt der einfach nicht zurecht ](*,)

RoboHolIC
06.06.2022, 23:20
Dann scheinen ja mehrere Sachen im Argen zu liegen, die du vermengst:
1) Wenn der Compiler PRINT_PORT nicht kennt, dann musst du es ihm eben bekannt machen
2) Je nachdem, ob PRINT_PORT ein Bit-Bezeichner oder ein Integer ist, muss der Vergleich unterschiedlich geschrieben werden; es bleibt noch das = / ==-Thema
3) Was ist aus dem "Error : device already OPENED " geworden? Wann kommt diese Fehlermeldung?

Für welches Zielsystem programmierst du? Und zeig doch auch deinen gesamten Source, dann findet sich vielleicht auch jemand mit mehr Ahnung als ich, der dir weiterhelfen kann.

Edit:
Für die Nachwelt:
Sorry, geistige Vernebelung, ich war komplett auf dem falschen Gleis.

Searcher
07.06.2022, 07:03
Mit der entweder oder kommt der einfach nicht zurecht ](*,)

Hallo,
ich denke, daß es mit der Verwaltung der SW-Kanäle in BASCOM zusammenhängt

nachdem man mit OPEN einen SW-COM Kanal geöffnet hat, hätte ich vermutet, daß man vor einem erneuten Öffnen des gleichen Kanals, den alten zuerst mit CLOSE schließen müßte. Das geht bei meiner BASCOM Version 2.0.7.9 aber auch nicht. Nach Schließen mit CLOSE und erneutem Öffnen des gleichen Kanals kommt trotzdem die Fehlermeldung mit "device already OPENED":( Scheint mir ein Fehler in BASCOM zu sein.

Man könnte auf beiden Ports jeweils eine SW-UART mit unterschiedlichen Kanalnummern einrichten und später beim PRINT auswählen, auf welchem man ausgibt:-k. Also:

If Print_Port = 0 then PRINT #2 , "ABC... "
If Print_Port = 1 then PRINT #3 , "DEF... "


Gruß
Searcher

Head Free
07.06.2022, 18:47
Searcher,
du hast das Problem erkannt!
Mein Gedankengang war halt, das man mit einen Jumper zwei verschiedene Ports zuweisen kann
und die ganzen print #2 dann halt dorthin laufen.
Aber ich werde mich halt notgedrungen auf ein "Open" beschränken.
Aber eigentlich schon doof das der Compiler das nicht gebacken bekommt.

Schöne Grüsse
Ronnie

UPPS. ich hätte besser lesen sollen!
Ja, Searcher so könnte es auch gehen.
Da ich aber schon einige Print's ausgebe und dann alles Doppelt gemobbelt werden muss wird der Aufwand denk ich zu gross