mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BASCOM: Empfang eines strings oder HEX-Wertes per UART


Autor: micha b (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Jungs, ihr seit meine letzte Hoffnung!

Ich hänge jetzt seit Tagen an der Inbetriebnahme einer RS232-Verbindung
zwischen einem ATM128 und einem ELM323 und komme nicht mehr weiter:

>$baud1 = 9600
>Open "COM2:" For Binary As #1
>Waitms 50
>Print #1 , "ATI"

Die Verbindung steht bereits in die eine Richtung; der ATM128 kann den
ELM ansprechen (z.B. über "Print #1 , "irgendwas") der ELM reagiert
darauf und sendet eine ASCII-Folge (bekannt) zurück. Konkret frage ich
hier seinen Namen mit "ATI" ab, zurück sollte der ASCII-String
"ELM323 Version 2.0" kommen.

Leider bekomme ich diesen String weder mit "INKEY", "WAITKEY",
"GET" oder sonst irgendwas eingelesen.
ISCHARWAITING sagt mir zwar, es wäre wohl ein Zeichen im Buffer, aber
wie komme ich an diese Zeichen heran damit ich nachher einen kompletten
String habe?

Darüber hinaus sollen im nächsten Step dann auch Hex-Werte empfangen
werden.


Kann mir irgendjemand ne kleine Hilfestellung geben? :-)


Danke!

Autor: A. K. (addy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wie frägst du denn ab?
Wenn du dir eine Schnittstelle zuweist auch z.B wie du "#1" dann
musst die auch mit inkey(#1) oder waitkey(#1) abrufen.
Dann sollte der Empfang klappen, wenn ischarwaiting schon 1 zurückgibt,
liegts ja blos noch am auslesen. :-)

greetz
Addy

Autor: micha b (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
YIP!
Frage ab mit z.B. inkey (#1), da kommt dann aber nix! :-/

Gibt's denn nicht irgendwo ein Codefragment, in dem man die genauen
Definitionen und die Vorgehensweise sehen kann?


Und bevor jemand schreit .... wills ja nicht kopieren, sondern
verstehen ,-)

Autor: A. K. (addy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich arbeite da gerne mit dem Urxc - Interrupt

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 ,
Databits = 8 , Clockpol = 0

Open "com1:" For Binary As #1

Enable Interrupts

Enable Urxc
On Urxc Daten_empfang

Dim Abfrage_zeichen as Byte
Dim Daten as Bit
'--------------------------------------
Do
  If Daten = 1 Then
  'Tue hier was
  Reset Daten
  End If
Loop
End
'--------------------------------------
Daten_Empfang:
  Abfrage_zeichen = Inkey(#1)
  Set Daten
Return

Das ist jetzt mal so ein Pseydocode ohne Empfangspuffer.
Wenn du Empfangspuffer benötigst, solltest du das hier verwenden.

Config Serialin = Buffered , Size = 20

Dim Na As String * 10

Enable Interrupts

Print "Start"

Do
  If Ischarwaiting() = 1 Then
      Print Na
  End If
  Wait 1
Loop

Da bleibt dann auch Luft um was zu bearbeiten.

greetz
Addy

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe das mal wie folgt gelöst (aus meinem Archiv ohne
Funktionsgarantie, da ich es jetzt gerade nicht getestet habe):

Wolfgang

Do
   X = Ischarwaiting()
   If X = 1 Then
         Gosub Datenempfang
         Zeile = Str(rxin)
         Call LCD_Print(Zeile, x1, y1, Font1, XSize, YSize, Red,
White)
   End If
Loop


Datenempfang:
   Inputbin Rxin
Return

Autor: papa_of_t (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst Byte für Byte auch so lesen:

If UCSRA.RXC=1 Then meinByte = UDR

(mußt mal prüfen ob der Registername stimmt, beim MEga8 geht es so)

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.