kalletronic
25.11.2008, 21:34
Hi Leute,
hab mal wieder was zusammengeschustert und wollte euch mal fragen ob man das so gut gehn lassen kann oder ob ich da was verbessern kann.
Es soll so eine Art Telegramm für die RS232 werden, ich möchte es dazu verwenden, um Daten von meinem Rechner zum Bot zuschicken und umgekehrt. ich hoffe ich habs gut genug beschrieben :-k
Hier mal der Code
'
'Befehle über RS232 / RS485
'Erstellt 10.04.2008 By Kalle
'
'Befehlszusammensetzung:
' se06255xxx
' ^ ^ ^ ^
' | | | |
' | | | Checksumme
' | | Aktion z.B bei Servos Position (hier 255)
' | Bei mehreren Geräten gleichen Typs z.B se06... für Servo 6
' Belehlstyp z.B. se für Servo
$regfile = "m32def.dat"
$crystal = 16000000
Declare Sub Notaus()
Enable Interrupts
'*** Variablendeklaration ***
Dim Befehl As String * 10
Dim Befehllaenge As Byte
Dim Typ As String * 2
Dim Nummer As String * 2
Dim Aktion As String * 3
Dim Fehler As String * 10
Dim Checksumme As String * 3
Dim Nummerbyte As Byte
Dim Kanal(16) As Byte
Dim Aktionbyte(4) As Byte
Dim Fehlerlaenge As Byte
Dim Adrbyte As Byte
Dim Varcrc As Byte
Dim Checkbyte As Byte
'*** Hauptprogramm ***
Do
Input Befehl
Varcrc = Crc8(befehl , 7) 'Checksumme berechnen
Checksumme = Right(befehl , 3) 'Checksumme aus Zeichenkette auslesen
Checkbyte = Val(checksumme)
If Varcrc = Checkbyte Then 'Wenn Checksummen gleich ...
Befehllaenge = Len(befehl)
If Befehllaenge > 0 Then
Gosub Befehlserkennung '... Zeichenkette auswerten
End If
Else
Fehler = "ERRChec"
Call Notaus()
End If
Fehlerlaenge = Len(fehler)
If Fehlerlaenge > 0 Then
Print Fehler
Fehler = ""
End If
Loop
'*** Unterprogramme ***
Sub Notaus()
'Befehle für NotAus hier einfügen
End Sub
'*** Zeichenkette asuwerten ***
Befehlserkennung:
Typ = Left(befehl , 2) 'sucht 1. und 2. Zeichen von links (Typ)
Nummer = Mid(befehl , 3 , 2) 'sucht 3. und 4. Zeichen von links (Nummer)
Aktion = Mid(befehl , 5 , 3) 'sucht 5., 6. und 7. Zeichen Zeichen (Aktion)
If Befehllaenge <> 10 Then Fehler = "ERRLang"
Return
'*** Aktion Ausführen ***
Ausfuehrung:
Return
Freue mich schon auf Kritik
Gruß Kalle
hab mal wieder was zusammengeschustert und wollte euch mal fragen ob man das so gut gehn lassen kann oder ob ich da was verbessern kann.
Es soll so eine Art Telegramm für die RS232 werden, ich möchte es dazu verwenden, um Daten von meinem Rechner zum Bot zuschicken und umgekehrt. ich hoffe ich habs gut genug beschrieben :-k
Hier mal der Code
'
'Befehle über RS232 / RS485
'Erstellt 10.04.2008 By Kalle
'
'Befehlszusammensetzung:
' se06255xxx
' ^ ^ ^ ^
' | | | |
' | | | Checksumme
' | | Aktion z.B bei Servos Position (hier 255)
' | Bei mehreren Geräten gleichen Typs z.B se06... für Servo 6
' Belehlstyp z.B. se für Servo
$regfile = "m32def.dat"
$crystal = 16000000
Declare Sub Notaus()
Enable Interrupts
'*** Variablendeklaration ***
Dim Befehl As String * 10
Dim Befehllaenge As Byte
Dim Typ As String * 2
Dim Nummer As String * 2
Dim Aktion As String * 3
Dim Fehler As String * 10
Dim Checksumme As String * 3
Dim Nummerbyte As Byte
Dim Kanal(16) As Byte
Dim Aktionbyte(4) As Byte
Dim Fehlerlaenge As Byte
Dim Adrbyte As Byte
Dim Varcrc As Byte
Dim Checkbyte As Byte
'*** Hauptprogramm ***
Do
Input Befehl
Varcrc = Crc8(befehl , 7) 'Checksumme berechnen
Checksumme = Right(befehl , 3) 'Checksumme aus Zeichenkette auslesen
Checkbyte = Val(checksumme)
If Varcrc = Checkbyte Then 'Wenn Checksummen gleich ...
Befehllaenge = Len(befehl)
If Befehllaenge > 0 Then
Gosub Befehlserkennung '... Zeichenkette auswerten
End If
Else
Fehler = "ERRChec"
Call Notaus()
End If
Fehlerlaenge = Len(fehler)
If Fehlerlaenge > 0 Then
Print Fehler
Fehler = ""
End If
Loop
'*** Unterprogramme ***
Sub Notaus()
'Befehle für NotAus hier einfügen
End Sub
'*** Zeichenkette asuwerten ***
Befehlserkennung:
Typ = Left(befehl , 2) 'sucht 1. und 2. Zeichen von links (Typ)
Nummer = Mid(befehl , 3 , 2) 'sucht 3. und 4. Zeichen von links (Nummer)
Aktion = Mid(befehl , 5 , 3) 'sucht 5., 6. und 7. Zeichen Zeichen (Aktion)
If Befehllaenge <> 10 Then Fehler = "ERRLang"
Return
'*** Aktion Ausführen ***
Ausfuehrung:
Return
Freue mich schon auf Kritik
Gruß Kalle