私はCに新たなんだと私は動作しないいくつかのコードを作成し...コピー多次元配列C
initLetterLibは()しながら、私は警告を受ける:整数変換は、私がしようと切り捨て
の結果私のlibraryLetterをoutputLEDにmemcpyすることはできますが、動作しません。 私はoutputLEDに0x00を取得しました。 私はoutputLEDに他のものをコピーしようとしました。これは本当にうまく機能しました。 しかし、私は私のlibraryLettersに問題があるなぜ...
#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;
}
任意のアイデアを得るいけませんか?
おかげ ファビアン
「0xFE0202020200」のような48ビット定数に使用する整数型(MCU)は何ですか?多分あなたのMCUは64ビットですか? 'letter'型を配列ではなく、' int64'または同様の64ビット 'long'として定義してください。それ以外の場合は、割り当てを行うことはできません。 – i486
コードの書式設定とインデントがすべて配置されています。 [編集]して修正してください。 – user694733