Die Variable telnr wird überlaufen.
Wie geschieht denn die IR-Abfrage?
Nimm, wie schon erwähnt, ein Array.
Wenn die IR-Abfrage (Fernbedienungsroutine) per Interrupt z.B. die letzte Ziffer in der Variablen neueziffer ablegt, dann würde ich es so probieren (nicht getestet!):
In der IR-Routine dann einfach die Ziffer direkt in die Variable neueziffer schreiben.Code:$regfile = "m88Adef.dat" $baud = 19200 $crystal = 8000000 $hwstack = 160 $swstack = 100 $framesize = 100 Dim Position As Byte Dim Stelefonnr As String * 15 Dim Btelefonnr(15) As Byte At Stelefonnr Overlay Dim Neueziffer As Byte Gosub Telnrleeren Do Gosub Infrarot Gosub Zifferntest Loop End Zifferntest: Select Case Neueziffer 'Ziffer 0-9 Case Is < 10 Gosub Zifferhinzu Case 13 'Nummer fertig eingegeben also wählen Gosub Nummernwahl Case 12 'letzte Stelle löschen Gosub Zifferweg Case 11 'alle Stellen löschen Gosub Telnrleeren End Select Return Infrarot: 'Wenn nicht per Interrupt Return Telnrleeren: For Position = 1 To 15 Btelefonnr(position) = 0 'Nullbyte signalisiert Ende eines Strings Next Position Neueziffer = 255 Position = 0 Return Zifferhinzu: If Position < 15 Then Incr Position Neueziffer = Neueziffer + 48 'ASCii Codes für Zahlen Btelefonnr(position) = Neueziffer End If Return Zifferweg: If Position => 1 Then Decr Position Btelefonnr(position) = 0 End If Return Nummernwahl: Print "Kommandozumnummerwählen"; Print Stelefonnr Gosub Telnrleeren Return
Wurde OK gedrückt, dann die 13 reinschreiben.
usw.







Zitieren


Lesezeichen