Forum: Mikrocontroller und Digitale Elektronik Bascom Serielles Problem


von F.Markus (Gast)


Lesenswert?

hallo,

kann mir bitte vieleicht jemand weiter helfen. ich habe erst vor kurzem 
angefangen mit bascom zu programmieren.

jetzt habe ich ein kleine programm geschrieben was ich mit einen 2313 
nicht Compilieren kann. sobald ich einen mega8 definiere funktioniert 
es.

und zwar hängt es an dem befehl: Ucsra

hier mein code


Hauptschleife:
Do

If Ucsra.rxc = 1 Then                                       'Ein Byte 
vollständig empfangen
I = Udr                                                     'Byte aus 
der USART auslesen

Select Case I

Case "3139988148"
Gosub Tuere_oeffnen
Case "2851976404"
Gosub Tuere_oeffnen

Case Else
Goto Falsch
End Select

End If
Loop

von Weingut P. (weinbauer)


Lesenswert?

nene, der fehler hängt ganz wo anders.

Du empfängst ein Zeichen im UDR-Register, das ist ein Zahlenwert von 
einem (!) Byte, also von 0 bis 255 (siehe ASCII, entsprich einem 
Zeichen) und vergleichst mit einem String, einer Zeichenkette,
("3139988148") von 10 Zeichen, also 10 Bytes, das geht nicht.

kann sein das rxc-bit ist in der def nicht definiert, probiers mal mit 
Ucsra.7

aber das wird dennoch nicht funktionieren

Ach so, eins noch ... vermeide goto, gerade als Einsteiger, Wenn Dein 
Programm wächst wird das herumspringen mit goto schnell unübersichtlich.

von F.Markus (Gast)


Lesenswert?

Was hätte ich noch für möglichkeit diesen string auszuwerten?
ich habe das problem, dass ich strings mit 9 und 10 zeichen bekomme.

vorerst vielen dank!

von Cyblord -. (cyblord)


Lesenswert?

F.Markus schrieb:
> Was hätte ich noch für möglichkeit diesen string auszuwerten?
> ich habe das problem, dass ich strings mit 9 und 10 zeichen bekomme.
>
> vorerst vielen dank!

Ein String aus, sagen wir mal 10 Zeichen, besteht aus 10 Bytes. Jedes 
Byte entspricht dem ASCII Wert für ein Zeichen. Bei dir für eine Ziffer 
(0-9).
Willst du also einen String mit 10 Zeichen seriell empfangen, musst du 
10 Bytes lesen und diese dann hintereinander speichern und als String 
interpretieren. Wie das in Bascom geht kann ich dir nicht sagen. Ich 
benutze kein Bascom.
Du brauchst also wohl auch noch einen Begrenzer um festzustellen 
wieviele Bytes du lesen musst. Oft ist das ein Return oder Wagenrücklauf 
(dezimal 10 bzw. 13). Aber das kommt auf deinen Sender an. Woher kommen 
denn diese Strings? Wer sendet sie?

gruß cyblord

von F.Markus (Gast)


Lesenswert?

die zeichen kommen von einen rfid mifare lesemodul am schluss kommt ein 
CR  also 9 oder 10 zeichen und ein CR.

ich habe im netzt nicht wirklich nützliche programme gefunden was das so 
verarbeiten.

von Cyblord -. (cyblord)


Lesenswert?

F.Markus schrieb:
> die zeichen kommen von einen rfid mifare lesemodul am schluss kommt ein
> CR  also 9 oder 10 zeichen und ein CR.

Na also dann ist es ja einfach. Du liest die Zeichen so lange ein bis du 
ein CR empfängst.

> ich habe im netzt nicht wirklich nützliche programme gefunden was das so
> verarbeiten.
Aha. Wie meinen?

von F.Markus (Gast)


Lesenswert?

danke für die infos. aber ich weiß immer noch nicht wie ich mein problem 
lösen kann. da mein englisch nicht so gut ist tu ich mich auch mit hilfe 
im bascom schwer.

hat von euch wer die bücher von marius meißner oder vom roland walter?
was würdet ihr mir für eines empfehlen?

von Cyblord -. (cyblord)


Lesenswert?

F.Markus schrieb:
> danke für die infos. aber ich weiß immer noch nicht wie ich mein problem
> lösen kann.

Programmieren lernen. Im besten Fall eine bessere Sprache als Bascom 
Basic, aber zur Not geht auch das.

> da mein englisch nicht so gut ist tu ich mich auch mit hilfe
> im bascom schwer.

Englisch lernen, da kommst du leider nicht drumrum. Wie gedenkst du 
sonst Datenblätter zu lesen? Auf ne Übersetzung warten? Sorry das läuft 
so nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.