Bascom / UART String nach Länge hin auswerten

OP #2331815
Lesenswert?

Hallo,

ich möchte den UART auswerten und nach einer bestimmten Länge prüfen, ob 
ein bestimmter String übergeben wurde. Wenn ja, möchte ich zu einer 
Anweisung springen.

Ich habe mir jetzt aus Codeschnipseln das hier zusammengedacht...
Danke für Hilfestellungen.


1
$regfile = "m8def.dat"
2
$Crystal = 3686400
3
$Baud    = 9600
4

5
Dim S As String * 11
6

7
On URXC OnRxD
8
Enable URXC
9
Enable Interrupts
10

11

12
Main:
13
  If Len(s) > 10 Then
14
    Print s
15
    s = ""
16

17
    Select Case S
18

19
            Case 00000000001
20
            Goto Wert1
21

22
            Case 00000000002
23
            Goto Wert2
24
    End Select
25

26
  End If
27
Goto Main
28

29
OnRxD:
30
  s = s + Chr(UDR)
31
Return
32

33

34

35
Wert1:
36
 'anweisungen etc.
37
Return
38

39
Wert2:
40
 'anweisungen etc.
41
Return
Gast #2331829
Lesenswert?

Kenn mich mit Bascom zwar nur ganz wenig aus, aber das da wird nicht 
funktionieren, da die Variable S immer leer ist beim Case auswerten.
1
s = ""
2
Select Case S
Die Variable S z.B. erst nach dem End Select löschen.
OP #2331927
Lesenswert?

Tja, gedacht ist es u. a. für ein XBee Mesh Netz:

Beitrag "zigbee / xbee - verständisfrage x-ctu"


Mehrere "Sensor-Module" bestehen aus je einem XBee Modul und einem AVR. 
Ich stelle mir das so vor, dass die ganzen Sensoren per "Funk-"UART an 
einen Zentralen AVR angeschlossen sind...

Es gibt einen festen Befehlssyntax und dann weiß der zentrale AVR, von 
welchem Sensor welcher Wert kommt....

Ich weiß aber gar nicht, ob das so geht, also die XBee-Kommunikation...


Den String auf Länge hin auswerten benötige ich noch für eine andere 
RS232-Kommunikation bei einem anderen Projekt..

---------------

Leider erhalte ich bei dem o. g. Code immer den Fehler:

Invalit datatype

Irgendwas mache ich mit der Stringberechnung und Case falsch...
OP #2331940
Lesenswert?

Hallo!

Auja! Danke für den Hinweis!

Ich bin ein Neuling auf diesem Gebiet...

Daher habe ich den Ansatz des Zeilenendes nicht bedacht.

Grundsätzlich werden -falls das überhaupt geht- über ein XBee-Netz 
mehrere Mdoule per UART verbunden (das würde zu zimelich viel Verkehr 
auf dem UART führen, denke ich...).

00000000001 -> ist ein Beispiel von mir. Ich muss mir da noch einen 
Syntax überlegen, wie ich einem Sensor-Modul eine ID verteile und dann 
Daten/Stati und Messwerte sende..

Die 00000000001 werden also von einem anderen AVR per XBee an die o.g. 
Auswertung gesendet...

So bislang der Plan!
OP #2346290
Lesenswert?

Ich bin immer noch nicht weitergekommen...

Über die serielle Schnittstelle werden die Hex-zeichen:

>> 8101060100010301FF << gesendet.

Hierbei möchte die vorderen 2 Zeichen abtrennen und dann einfach prüfen, 
ob der Befehl: >> 01060100010301FF << angekommen ist (also 8 Bytes). 
Wenn dem so ist, sollen Anwisungen ausgeführt werden.

Ich habe leider totale Probleme dabei, diese 8 Hex-Zeichen einzulesen 
bzw. als String abzuarbeiten.

Vielen Dank für Hilfe!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren