ich habe jetzt mal ein wenig rumgespielt und nur den Teil der Abrfage der RS232 Daten vom Fremdgerät gemacht.
Das ist der Code:
Code:
$regfile = "m8def.dat"
$crystal = 3686400
$baud = 9600
Dim Olcd(40) As Byte 'Asciizeichenarray vom Fremdgerät
Dim A As Byte
Dim I As Byte
Dim Oegt1 As Byte
Dim Oegt2 As Byte
Dim Oegt3 As Byte
Dim Oegt4 As Byte
Dim Ogas1 As Byte
Dim Ogas2 As Byte
Dim Ogas3 As Byte
Dim Ogas4 As Byte
Dim Orpm1 As Byte
Dim Orpm2 As Byte
Dim Orpm3 As Byte
Dim Orpm4 As Byte
Dim Orpm5 As Byte
Dim Onc1 As Byte
Dim Onc2 As Byte
Dim Onc3 As Byte
Dim Odata(16) As Byte At Oegt1 Overlay
Declare Sub Odatensenden
Declare Sub Odatenlesen
Declare Sub Lcdvisual
Config Lcd = 20 * 4
Config Lcdpin = Pin , E = Portd.3 , Rs = Portd.2 , Db7 = Portd.7 , Db6 = Portd.6 , Db5 = Portd.5 , Db4 = Portd.4
Config Serialin = Buffered , Size = 45
Enable Interrupts
Cursor Off
Do
If Ischarwaiting() = 1 Then Odatenlesen
'Gosub Odatensenden
Waitms 10
Gosub Lcdvisual
Loop
'---------------------------
Odatenlesen:
A = Inkey()
If A = 128 Then
For I = 1 To 41
Olcd(i) = Inkey()
Next
End If
Oegt1 = Olcd(4)
Oegt2 = Olcd(5)
Oegt3 = Olcd(6)
Oegt4 = Olcd(7)
Ogas1 = Olcd(13)
Ogas2 = Olcd(14)
Ogas3 = Olcd(15)
Ogas4 = Olcd(16)
Orpm1 = Olcd(20)
Orpm2 = Olcd(21)
Orpm3 = Olcd(22)
Orpm4 = Olcd(23)
Orpm5 = Olcd(24)
Onc1 = Olcd(32)
Onc2 = Olcd(33)
Onc3 = Olcd(34)
Return
'---------------------------
'--------------------------
Lcdvisual:
Locate 1 , 6
Lcd Chr(oegt1) ; Chr(oegt2) ; Chr(oegt3) ; Chr(oegt4) ; "C"
Locate 1 , 16
Lcd Chr(ogas1) ; Chr(ogas2) ; Chr(ogas3) ; Chr(ogas4)
Locate 2 , 6
Lcd Chr(orpm1) ; Chr(orpm2) ; Chr(orpm3) ; Chr(orpm4) ; Chr(orpm5)
Locate 2 , 16
Lcd Chr(onc1) ; Chr(onc2) ; Chr(onc3) ; "V"
Return
'----------------------------
'----------------------------
Odatensenden:
Baud = 4800
Print "Orbitdaten" ; Chr(odata(1) , 16)
Baud = 9600
Return
'--------------------------------
End
Komisch ist aber, wenn ich "Gosub Odatensenden" "aktiviere" kommt mir so einiges durcheinander und das Display zeigt zeitweise andere Datensätze aus dem Array an.
Wenn ich nun in meine (schon recht) vorhandene komplexe Anwendung diesen Teil hier implementiere dann hab ich glaub ich ein Problem. Wenn es jetzt schon mit nicht richtig funktioniert.
Oder wo habe ich den Fehler drin? Ist das nun ein Timingproblem?
Lesezeichen