Also ich hatte die funktionalität höchst umständlich neu Programmiert und diesen CASE ausgelassen
Meine void task_commandProcessor sieht so aus
ACHTUNG HÖCHST UMSTÄNDLICH!!!
Die entsprechenden Anpassungen im M128Code:** * This function checks if commands have been received and processes them. */ void task_commandProcessor(void) { if(getCommand()) { switch(cmd) { case CMD_SETLEDS: setLEDs(param1); break; case CMD_CLEARLCD: clearLCD(); break; case CMD_WRITECHARLCD: writeCharLCD(param1); break; case CMD_DISCHARGEPEAKDETECTOR: dischargePeakDetector(); break; case CMD_BEEP: beep(param1, param2); break; case CMD_SETBEEPERPITCH: setBeeperPitch(param1); break; case CMD_MSLEEP: mSleep(param1); break; case CMD_WRITE_I_AT_POSITION: if(param1 < 100) { setCursorPosLCD(0,param1); writeIntegerLCD(param2,DEC); writeInteger(param2,DEC); } else { setCursorPosLCD(1,(param1-100)); writeIntegerLCD(param2,DEC); writeInteger(param2,DEC); } case CMD_WRITE_S_AT_POSITION: if(param1 < 100) { setCursorPosLCD(0,param1); writeCharLCD(param2); } else { setCursorPosLCD(1,(param1-100)); writeCharLCD(param2); } } } }
Wie gesagt, eine sehr unschöne und beschämende Lösung. War für den Zweck aber ausreichendCode:Sub getASCII(a As Char) As Integer Dim t(52) As Char Dim k As Integer Dim i As Integer k = 32 t = "! #$%&'()*+,-./0123456789:;<=>?" For i=0 To 30 If t(i) = a Then k = i+33 Return k Exit End If Next t ="@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_" For i=0 To 31 If t(i) = a Then k = i+64 Return k Exit End If Next t = "`abcdefghijklmnopqrstuvwxyz{|}~" For i=0 To 30 If t(i) = a Then k = i+96 Return k Exit End If Next Return k End Sub Sub showScreenM32Integer(i As Word, j As Word) RP6_writeCMD_2params(RP6_M32_ADR, CMD_WRITE_I_AT_POSITION, 0, i) RP6_writeCMD_2params(RP6_M32_ADR, CMD_WRITE_I_AT_POSITION, 100, j) End Sub Sub showScreenM32String(ByRef text1 As Char, ByRef text2 As Char) Dim i As Integer Dim size As Word Dim asciiValue As Word Thread_Lock(1) size = Str_Len(text1) printInteger(size) For i=0 To size-1 asciiValue = getASCII(text1(i)) RP6_writeCMD_2params(RP6_M32_ADR, CMD_WRITE_S_AT_POSITION, i, asciiValue) Thread_Delay(50) Next size = Str_Len(text2) For i=0 To size-1 asciiValue = getASCII(text2(i)) RP6_writeCMD_2params(RP6_M32_ADR, CMD_WRITE_S_AT_POSITION, i+100, asciiValue) Thread_Delay(50) Next Thread_Lock(0) End Sub







Zitieren
Lesezeichen