Liebe Leute,
ich möchte im Programmspeicher ein Bytearray ablegen, welches ich zur
Compilezeit "zusammenstelle". Dazu habe ich einige #defines erstelle,
über die die die Feldinhalte festlege:
1 | #define NMEA2000_NMEADATABASEVERSION 1210 // 2Byte
|
2 | #define NMEA2000_MFPRODUCTCODE 61258 // 2Byte
|
3 | #define NMEA2000_MFMODELID "Meine ID" // 32Byte ASCII
|
Zur Compilezeit soll dann alles zusammengesetzt werden:
1 | const prog_uint8_t NMEA2000_ProductInformation_Data[] = {
|
2 | (uint8_t)(NMEA2000_NMEADATABASEVERSION),
|
3 | (NMEA2000_NMEADATABASEVERSION>>8),
|
4 | (uint8_t)(NMEA2000_MFPRODUCTCODE),
|
5 | // hier soll jetzt das "Char-Array" eingefügt werden
|
6 | // und dann kommen noch weitere Bytes und Words ....
|
7 | };
|
Das klappt auch bis auf den String "NMEA2000_MFMODELID". Hier weiß ich
nicht, wie ich den zur Compilezeit geeignet zerlegen lassen kann, so
dass die einzelnen Buchtaben sukkzessive in den Bytes von
"NMEA2000_ProductInformation_Data" abgelegt werden.
Außerdem ist in der Spezifikation vorgeschrieben, das
"NMEA2000_MFMODELID" 32 Byte lang zu sein hat und alle nicht vewendeten
Bytes mit 0xFF aufgefüllt werden. Kann mann das auch irgendwie geschickt
mit Präprozessor und Compiler lösen?
Ich hätte gern den fertigen Datensatz im Flash, damit ich im Programm
dann nurnoch die Daten kopieren muss.
lG Phili