Ich bin neu in C und ich schuf einige Code, der nicht funktioniert ...Kopie mehrdimensionales Array C
erhalte ich eine Warnung während initLetterLib(): integer Umwandlung
in Abschneiden führte ich versuche, meinen libraryLetter in meine AusgabeLED memcpy, aber es funktioniert nicht. Ich bekomme nur 0x00 in meine AusgabeLED. Ich habe versucht, etwas anderes in AusgabeLED zu kopieren - das hat wirklich gut funktioniert. Aber ich nicht bekommen, warum ein Problem mit meinem libraryLetters gibt es ...
#define LETTER_WIDTH 6
typedef unsigned char letter[LETTER_WIDTH];
letter libraryLetters[128];
void initLetterLib(){
*libraryLetters[0x20] = 0x000000000000; // Blank
*libraryLetters['A'] = 0xFE909090FE00;
*libraryLetters['H'] = 0xFE101010FE00;
*libraryLetters['L'] = 0xFE0202020200;
*libraryLetters['O'] = 0xFE828282FE00;
*libraryLetters['U'] = 0xFE020202FE00;
*libraryLetters['R'] = 0xFE9894946200;
*libraryLetters['Z'] = 0x868A92A2C200;
*libraryLetters['I'] = 0x0000FE000000;
*libraryLetters['F'] = 0xFE9090808000;
}
// takes a String and generates the outputsequence for LEDs
unsigned char * stringToLEDText(char* textString)
{
static unsigned char outputLED[LED_STEPS];
unsigned char i = 0; // index
// check length of string text
unsigned short length = strlen(textString);
// if more than 10 letters are used return error
if (length > LETTERS_LED_OUTPUT)
{
printf("Error: Too much letters. Just 10 Letters are allowed\n");
return 0;
}
// through complete string
for (i = 0; i < length; i++)
{
memcpy(&outputLED[i * LETTER_WIDTH], &(libraryLetters[textString[i]]),
LETTER_WIDTH);
}
// fills rest with 0
for (i = length * LETTER_WIDTH; i < LED_STEPS; i++)
{
outputLED[i] = 0x00;
}
return outputLED;
}
Irgendwelche Ideen?
Dank Fabian
Welchen Integer-Typ verwenden Sie (die MCU) für eine 48-Bit-Konstante wie '0xFE0202020200'? Vielleicht ist Ihre MCU 64-Bit? Definieren Sie den Typ "Buchstabe" als "int64" oder ähnliches 64-Bit "lang", nicht als Array. Andernfalls können Sie die Zuweisungen nicht ausführen. – i486
Ihr Code Formatierung und Einrückung ist überall. Bitte [bearbeiten] und beheben Sie es. – user694733