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!!!
Code:
**
* 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);
}
}
}
}
Die entsprechenden Anpassungen im M128
Code:
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
Wie gesagt, eine sehr unschöne und beschämende Lösung. War für den Zweck aber ausreichend
Lesezeichen