www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom Uart


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich versuche gerade per Bascom eine String vom Pc zuempfangen und
auszuwerten. Da ich leider die Stringlaenge nicht weiss wollte ich z.B.
warten bis das String ein "A" (spaeter return) ist und somit die
Laenge ermitteln.

Leider komme ich nicht so richtig  weiter... Ich hoffe jemand der eine
Antwort parat hat kann mir helfen.
$sim


$regfile = "8535def.dat"
$crystal = 7372800
$baud = 19200


Dim S As String * 24
Dim A As Byte
A = 0

On Urxc Onrxd
Enable Urxc
Enable Interrupts

Cls



Main:
Home
If A = 1 Then
Lcd "" ; S
Else
Goto Main
End If
Goto Main
End                                                         'end
program


Onrxd:
   If Chr(udr) = Chr(65) Then
   A = 1
   Return
   Else
   S = S + Chr(udr)
   End If
  Return


Mfg Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ok habs gefunden .


Thread closed.

Mfg
Dirk

Autor: guenter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo dirk

Schön für Dich ...

... aber da ich ein ähnliches Problem habe, wäre ich Dir sehr
verbunden,wenn Du mir Dein jetzt funktionierendes BASCOM-Listing zur
Verfügung stellen könntest.

Ist das zu machen ?

Bitte hier posten oder direktes email am mich

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

musste bis heute abend warten... dann kann ich posten.

mfg

Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

leider bin ich noch nicht wirklich viel weiter bekommen.

Ich frage jetzt ein startbit ab und ein Stopbit ab.

$sim
$regfile = "8535def.dat"
$crystal = 7372800
$baud = 19200

Dim S As String * 10
Dim A As Byte
A = 0
On Urxc Onrxd
Enable Urxc
Enable Interrupts

Cls



Main:
Home
Lcd S
Goto Main
End                                                         'end
program

Onrxd:
If Asc(udr) = 97 Then
A = 1
End If
If Asc(udr) = 13 Then
A = 0
End If
If A = 1 Then
S = S + Chr(udr)
End If
Return


Mfg Dirk

Autor: Sven A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich würde lieber mit dem Uart puffer in bascom arbeiten, und in einer
do loop schleife den uart auslesen,nach erfolgreichen empfangen deines
Strings natürlich nicht vergessen den puffer wieder zu leeren.


$regfile = "8535def.dat"
$crystal = 7372800
$baud = 19200


Config Serialin = Buffered , Size = 20

Enable interrupts

dim s as string * 30
dim a as byte

do

a = ischarwaiting()
if a <> 0 then gosub lesen

loop

lesen:

dim f as byte

Do
      F = Inkey()

       If F = 10 Then Exit Do
       Select Case F
       Case 0
       Case 13
       Case 10
       Case Else
         S = S + Chr(f)
      End Select

  Loop
cls
lcd s
wait 5

'Buffer wieder leeren

do
f = inkey()
loop until f = 0 'Pointer auf 0



return

Guck mal ob's so klappt, habe es jetzt noch nicht ausprobiert....müßte
dir aber den empfangenen Text auf dem LCD anzeigen.


Gruß


Sven A.

Autor: Sven A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uuppsss,
nochwas vergessen, f natürlich in a umbenenen, sonst geht's
nicht,sorry.

Sven A.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich glaube ich mache aus einer Mucke ein Elefanten.

In meiner Routine lese auch alle Zeichen aus auch Startbit und Stopbit.


Ich denke wohl einfach zu kompliziert. Ich weiss nur das erste Char das
Startbit ist danach folgen ein paar Strings. z.B. (1100 oder 170)
und danach das endbit. wie trenne ich den jetzt meine eigentlichen
Daten von den Start- und Stopbit?

@Sven A. :

welche Vorteile hat es den meine Daten aus dem Uartbuffer auszulesen?



Mfg

Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,


keiner da der mir das mal mit no0bie Worten erklaeren kann?


Mfg

Dirk

Autor: Sven A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk,

Ich weiß ja nicht, ob das das einzige ist was dein Programm machen
muß...
laufen in einer Hauptroutine z.b. noch andere Abfragen, kann es
Schwierigkeiten geben, das zeichen verlohren gehen...
Startbit und Stopbit brauchst du nicht zu trennen, das wird von bascom
selbst erledigt.....
eigentlich müsstest du mit dem obrigen Listing deine gesendeten Zeichen
auf dem Display sehen....

Gruß

Sven A.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.