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?