Ich muss zugeben, das war wohl nicht ganz eindeutig formuliert .
Ich sende folgende Daten:
-32766
-11111
Ausgegeben wird dann:
66 erkannt
anders als 68
Das ist korrekt.
Sende ich:
-32766
-32768
Wird genau das gleiche ausgegeben, obwohl ich als zweites die "68" gesendet habe.
Und wenn ich folgendes sende:
-11111
-32766
bekomme ich garkeine Ausgabe. Die -11111 wird also korrekterweise als "nicht 66" erkannt, die 66 danach allerdings dann nicht als die gesuchte 66.
Es scheint also so zu sein, das das erste, was ich sende richtig erkannt wird und danach nichts mehr.
Ich arbeite unter Linux und sende die entsprechenden Zeichen mit:
echo -e "-32768\r" > /dev/ttyUSB0
hier der Komplette Code:
Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600
Config Timer1 = Timer , Prescale = 8 'Konfiguriere Timer0
Disable Timer1 'schalte Den Timer0 Overflow -interrupt Ein
On Timer1 Schritt
Enable Interrupts
Config Pind.5 = Output 'LEDs
Config Pind.6 = Output
Led1 Alias Portd.5
Led2 Alias Portd.6
Config Pina.0 = Output 'Motorx pins
Config Pina.1 = Output
Config Pina.2 = Output
Config Pina.3 = Output
X1 Alias Porta.0
X2 Alias Porta.1
X3 Alias Porta.2
X4 Alias Porta.3
Dim Empfangen As String * 8
Dim Modus As Byte
Modus=0
Dim Befehlsarray(20) As Integer
Dim Befehlsindex as Integer
Dim i as Integer
Dim Schrittarray(8) As Byte
Schrittarray(1).1 = 0 '##### Tabelle mit dem Steuermuster #####
Schrittarray(1).2 = 1
Schrittarray(1).3 = 0
Schrittarray(1).4 = 1
Schrittarray(2).1 = 0
Schrittarray(2).2 = 1
Schrittarray(2).3 = 0
Schrittarray(2).4 = 0
Schrittarray(3).1 = 0
Schrittarray(3).2 = 1
Schrittarray(3).3 = 1
Schrittarray(3).4 = 0
Schrittarray(4).1 = 0
Schrittarray(4).2 = 0
Schrittarray(4).3 = 1
Schrittarray(4).4 = 0
Schrittarray(5).1 = 1
Schrittarray(5).2 = 0
Schrittarray(5).3 = 1
Schrittarray(5).4 = 0
Schrittarray(6).1 = 1
Schrittarray(6).2 = 0
Schrittarray(6).3 = 0
Schrittarray(6).4 = 0
Schrittarray(7).1 = 1
Schrittarray(7).2 = 0
Schrittarray(7).3 = 0
Schrittarray(7).4 = 1
Schrittarray(8).1 = 0
Schrittarray(8).2 = 0
Schrittarray(8).3 = 0
Schrittarray(8).4 = 1
Print "gestartet"
Declare Sub run
Do
Input Empfangen
If Modus=1 Then 'array befüllen
If Empfangen<> "-32768" Then 'Befehl, das array fertig
print "anders als 68"
Incr Befehlsindex
Befehlsarray(Befehlsindex)=Val(Empfangen)
Else
Modus=2
i=0
while i< Befehlsindex
incr i
Print Befehlsarray(i)
Wend
End If
ElseIf Modus=2 Then
If Empfangen="-32767" Then 'Befehl, Programm starten
gosub run
End If
ElseIf Modus=0 Then
If Empfangen="-32766" Then 'Befehl, das array zu befüllen
Modus=1
Befehlsindex=0
print "66 erkannt"
End If
End If
Loop
sub run
print "run"
End sub
Schritt:
print "schritt"
Return
Lesezeichen