-
Thread
Mega 32 als Xb*x gamepad + obdevs avr usb
USB_CFG_DESCR_PROPS_DEVICE == 0 #undef USB_CFG_DESCR_PROPS_DEVICE #define USB_CFG_DESCR_PROPS_DEVICE sizeof(usbDescriptorDevice) PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */ 18, /* sizeof(usbDescriptorDevice): length of descriptor in bytes */ USBDESCR_DEVICE,
USB_CFG_DESCR_PROPS_CONFIGURATION == 0 #undef USB_CFG_DESCR_PROPS_CONFIGURATION #define USB_CFG_DESCR_PROPS_CONFIGURATION sizeof(usbDescriptorConfiguration) PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor */ 9, /* sizeof(usbDescriptorConfiguration): length of descriptor in bytes
-
Thread
Float Formatierung
Genauer gesagt: [c] char temp_str[20]; snprintf(temp_str, sizeof(temp_str), "%06.3f", wert); U8glib.print(temp_str); [/c]
Jörg W. schrieb im Beitrag #4307806: > snprintf(temp_str, sizeof(temp_str), "%06.3f", wert); Aber Vorsicht. Bei der Feldbreite, den 6, ist der Dezialpunkt und ein mögliches Vorzeichen auch schon mit eingerechnet. Vor allen Dingen auf den Dezimalpunkt vergisst
-
Thread
realloc kopiert nur einen teil der daten
kopieren, bessergesagt immer nur den 1. Datensatz. Den datensatz habe ich so erzeugt: malloc(sizeof(mytype)*anzahl). Jetzt möchte ich das ganze mit realloc vergrößern: not yet changed: ==Analizing contents of table testing== NAME TYPE DEFAULT id 1 a name1 1 b Wenn ich
Nachtrag: Eigentlich müsste das Makro so heißen: #define UDS_COLUM_SIZE() (sizeof(uds_colums_t)) aber das ändert auch nichts an der Funktion. Der Output ist aber anders: michael[uds]$ ./uds This is a mainfunction for individual testing. Later it gonna be removed! not yet
-
Thread
Arry aus einer Funktion übergebn
// … } int main() { struct array_int_3 array = array_test(); printf("%d\n", sizeof(array_test())/sizeof(int)); // … return 0; } [/c]
-
Thread
Probleme bei Programm! Verkettete Listen
alter_neu; char name_neu, krankheit_neu; struct patient *neu; neu = (struct patient*) malloc(sizeof(struct patient)); printf("Name des Patienten: "); scanf("%c", &name_neu); printf("Krankheit des Patienten: "); scanf("%c", &krankheit_neu); printf("Alter des Patienten: "); scanf
krankheit_neu[30], name_neu[20]; struct patient *neu; neu = (struct patient*) malloc(sizeof(struct patient)); printf("Name des Patienten: "); scanf("%s", &name_neu); printf("Krankheit des Patienten: "); scanf("%s", &krankheit_neu); printf("Alter des Patienten: ");
-
Thread
96-Bit "Wert" bearbeiten (LED-Laufschrift)
} d; uint8_t Digits[0]; } z; void shiftout(void) { uint8_t i; for (i = 0; i < sizeof z / sizeof(uint8_t); i++) { SPDR = z.Digits[i]; while ((SPSR & _BV(SPIF)) == 0) ; } } int main(void) { z.d.Digit00 = 0x11; z.d.Digit01 = 0x02; z.d.Digit02 = 0x13; z.d.Digit03
-
Thread
Soft-USB AVR
bytesRemaining = rq->wLength.word; // store the amount of data requested if(bytesRemaining > sizeof(buffer)) // limit to buffer size bytesRemaining = sizeof(buffer); return USB_NO_MSG; // tell driver to use usbFunctionWrite() } return 0;
-
Thread
CH32V003 und Arduino
[], const bool mode) { char buffer[32]; // anpassen if (mode) { snprintf(buffer, sizeof(buffer), "%s %d.%02d %s", s1, (value/100), (value%100), s2); } else { snprintf(buffer, sizeof(buffer), "%s %d %s", s1, value, s2); } out.println(buffer); } [/c]
const bool mode) > { > char buffer[32]; // anpassen > if (mode) { > snprintf(buffer, sizeof(buffer), "%s %d.%02d %s", s1, (value/100), > (value%100), s2); > } > else { > snprintf(buffer, sizeof(buffer), "%s %d %s", s1, value, s2); > } > out.println(buffer); > } Okay
-
Thread
arduino <-> c++ programm
pause"); return (1); } // Initialize the DCB structure. SecureZeroMemory(&dcb, sizeof(DCB)); dcb.DCBlength = sizeof(DCB); // Build on the current configuration by first retrieving all current // settings. fSuccess = GetCommState(hCom, &dcb); if (!fSuccess)
-
Thread
max3232 funktioniert nicht
while((URXIFG1)==0); received[ii++]=U1RXBUF; P5OUT ^= BIT0 + BIT1; } while(ii < sizeof (received) && received[ii-1] !='\r'); ii--; received[ii]='\0'; for(;;); } Nach rumspielerei ist mir ein Buchstabe im U1RXBUF hängengeblieben. Die kriege ich auch nicht mehr weg. Woran
Hat sich erledigt! while(ii < sizeof (received) && received[ii-1] !='\r'); || statt && und vieles mehr. Es funzt :)
-
Thread
Problem serielle Schnittstelle
/: [c] DCB dcb; //Gerätekommunikationsanpassung memset(&dcb, 0, sizeof (dcb)); dcb.DCBlength = sizeof (dcb); GetCommState(this->m_hPort, &dcb); [/c]
-
Thread
Struct im Union über array abfüllen
die Adressen von spare und as_array ganz genau an. Oder ein compiletime assert mit der Größe (sizeof) der Union.
float f; char ch1; char ch2; char str[4]; }; printf("size: %zu\n", sizeof(struct test)); printf("alignment: %zu\n", _Alignof(struct test)); [/c] Und trotzdem braucht diese Struktur 12 Bytes (oder 16, oder 20, ...). Man kann ja auch ein Array erzeugen: [c]
-
Thread
*Pointer und struct, Anfängerfrage
/c] "You must take care to allocate enough memory to store the results in dest (at least nb * sizeof(uint16_t))." const uint16_t *dest 1) Wieso wird hier const verwendet? 2) uint16_t *dest bedeutet das jedesmal wen ich ein dest++ mache er den Pointer um 16 bits bewegt?
> "You must take care to allocate enough memory to store the results in > dest (at least nb * sizeof(uint16_t))." Da hat der unbekannte Autor der Funktion das mit dem const auch nicht auf die Reihe gekriegt. Im Sourcecode wurde die aber wohl nicht ausgeliefert, denn jeder "anständige" C-Compipler
-
Thread
AVR C array Programmierung wo liegt der Fehler?
Werte des Array mit 0b111... > initalisieren Damals gab es aber noch kein memset und auch kein sizeof
Nick M. schrieb im Beitrag #6516650: > Damals gab es aber noch kein memset und auch kein sizeof Also wir haben damals auch mit der Hand die Bits einzeln in die Lochkarten gestanzt.
-
Thread
Ausgabe einer Struct-Größe per #error / #warning
unsigned char tx_buf[400]; unsigned char rx_buf[400]; }; struct GLVAR_STRUCT g; #error sizeof(GLVAR_STRUCT) Leider bekomme Ich nur die folgende Ausgabe, und nicht die Größe: "global.h:47:2: #error sizeof(GLVAR_STRUCT)" "#warning" funktioniert gar nicht. Vielen Dank für eure Hilfe
Kann nicht funktionieren. #error und #warning sind Präprozessor- Anweisungen, während sizeof() erst dem Compiler bekannt ist. Du kannst bestenfalls irgendwo ein Array anlegen, das Du via sizeof() initialisierst und Dir dann den generierten Assemblercode ansehen. Vielleicht fragst Du
-
Thread
Mikrocontroller menüstruktur in C
NULL }, { "Mittel", NULL }, { "Hell", NULL } }; struct Menu LedMenu = { "LED", sizeof( LedEntries ) / sizueof( LedEntries[0] ), LedEntries }; struct MenuEntry MotorEntries[] = { { "Aus", NULL }, { "Ein", NULL } }; struct Menu MotorMenu = { "Motor", sizeof(
, { "Motor-Eintellungen, MotorMenu } }; struct Menu SetupMenu = { "Einstellungen", sizeof( SetupEntries) / sizueof( SetupEntries[0] ), SetupEntries }; [/C]
-
Thread
NTP-Request mit uIP
NTP-Anfrage? { ntpp = (char *)uip_appdata; memcpy_P (ntpp, NTP_Request, sizeof(NTP_Request)); uip_udp_send (sizeof(NTP_Request)); } else // keine Zeitabfrage gestellt return; // weiter warten
now finished. ntpstat.state = STATE_IDLE; memcpy_P (×tamp, &(str_udp->t_time), sizeof(timestamp)); timestamp = timestamp - 0x83AA7E80; // the seconds from Jan 1, 1900 to Jan 1, 1970 } } void ntp_init(void) { ntpstat.state = STATE_IDLE; uip_ipaddr_t
-
Thread
wie verwende ich *malloc();??
int a; int b; char c; }; void main(void) { struct sMeineDaten *Data; Data = malloc(sizeof(struct sMeineDaten)); Data->a = 5; ... ... ... free(Data); } Hilft das?
speicher erst zur laufzeit bestimmt werden kann, benutzt du malloc(); char* sepp = malloc( i * sizeof(char) ); wobei i = menge der zu reservierenden bytes ist. sepp zeigt nun sicher auf das 1. element des reservierten speicher. zugriff ist nun wieder durch dereferenzierung möglich: *(sepp+n)
-
Thread
Probleme beim casten
z. B. für qsort und bsearch sinnvoll ist. Ausgeschrieben sieht das z. B. so aus: qsort(a, 10, sizeof(int), (int (*) (const void *, const void *)) intcompare);
meist schreibe ich auch wegen der Lesbarkeit die Casts meist aus, beispielsweise so: qsort(a, 10, sizeof(int), (int (*) (const void *, const void *)) intcompare); pthread_create (&pro, NULL, (void *(*)(void *)) func_timeout, NULL);
-
Thread
MEGA32 & Bootloader
buf) { uart_puts("P\n\r"); _delay_ms(100); program_page(page, buf); memset(buf, 0xFF, sizeof(SPM_PAGESIZE)); } int main() { /* Intel-HEX Zieladresse */ uint32_t hex_addr = 0, /* Intel-HEX Zieladress-Offset */ hex_addr_offset = 0, /* Zu schreibende Flash-Page */
(void*)0x0000; /* Füllen der Puffer mit definierten Werten */ memset(hex_buffer, 0x00, sizeof(hex_buffer)); memset(flash_data, 0xFF, sizeof(flash_data)); /* Interrupt Vektoren verbiegen */ temp = GICR; GICR = temp | (1<<IVCE); GICR = temp | (1<<IVSEL); /* Einstellen
-
Thread
#include <complex.h> in C
sätzen will um einen komplexen Wert zu bekommen. Das wollte ich so machen: [c] int i; for(i=0;(sizeof(I_comp))>0;i++) { Rx_complex=I_comp[i]+I*Q_comp[i]; } [/c] Dann möchte ich für Rx_coplex die Phase berechnen...
um einen komplexen Wert zu bekommen. Das wollte ich so machen: > > [c] > int i; > for(i=0;(sizeof(I_comp))>0;i++) > { > Rx_complex=I_comp[i]+I*Q_comp[i]; > } > [/c] In C++ würde das so gehen. In C geht das so sicher nicht. > > Dann möchte ich für Rx_coplex die Phase berechnen...
-
Thread
µC mit USB (kein FT232.)
man macht einfach structs für die gewünschten I/O Daten und dann: HidDevInfo.InReportCount = sizeof(InStruct); HidDevInfo.OutReportCount = sizeof(OutStruct); Im USB ROM Treiber sieht der Report vermutlich so ähnlich aus (sieht man ja nicht): HID_USAGE_PAGE_LED, HID_USAGE_LED_GENERIC_INDICATOR
-
Thread
system_clock::now() liefert UTZ, benötige GMT + 1
ctime> std::string getDate() { time_t t = time(NULL); char buffer[30]; strftime(buffer, sizeof buffer, "%FT%TZ", localtime(&t)); return std::string(buffer); } [/c] Das ist vielleicht kein "Modern C++", funktioniert aber dafür ;-)
(struct tm tm{}; localtime_r(&t, &tm) != nullptr) { if (char buffer[30]; strftime(buffer, sizeof buffer, "%FT%TZ", &tm) > 0) { return std::string{buffer}; } } return {}; } [/c] Wahrscheinlich sollte Dein Beispiel nur das Prinzip zeigen. Leider kursiert solcher Code
-
Thread
AT90USB Software Library für avr-gcc?
erinnere ich mich an diese Konstrukte: [c] ... .. #define Usb_get_dev_desc_length() (sizeof (usb_dev_desc)) ... ... U8 data_to_transfer; ... ... case DESCRIPTOR_DEVICE: data_to_transfer = Usb_get_dev_desc_length(); //!< sizeof (usb_user_device_descriptor); pbuffer
-
Thread
Fernabfrage ELV Raumklimastation RS500 über SSH
to open device\n"); return 1; } hid_set_nonblocking(handle, 1); memset(buf,0,sizeof(buf)); buf[0] = 0x7b; buf[1] = 0x03; buf[2] = 0x40; buf[3] = 0x7d; res = hid_write(handle, buf, 17); if (res < 0) { printf("Unable to write()\n"); printf("Error: %
hid_error(handle)); } res = 0; while (res == 0) { res = hid_read(handle, buf, sizeof(buf)); // if (res == 0) // printf("waiting...\n"); if (res < 0) printf("Unable to read()\n"); usleep(1000*1000); } for (i=0;i<8;i++) { if (strlen(pMo[i]))
-
Thread
Extrahieren eines Teil-Strings aus einer Konstanten
SVNVERSION; // Die letzen beiden Zeichen abschneiden (ende-Markierung setzen) svnversion[sizeof(svnversion)-2] = '\0'; // Auf die Nummer hinter dem Anfang der Zeichenkette zeigen char* zeiger = svnversion+11; // Nummer ausgeben puts(zeiger); return 0; } [/c] Ausgabe: [pre] 214 [/pre] Achtung: sizeof() funktioniert hier nur deswegen, weil die Größe des Arrays schon zur Compile-Zeit feststeht, da SVNVERSION eine bekannte Länge hat (die ändert sich nach dem Compilieren nicht mehr). Wenn du das
-
Thread
Wie rechne ich ich bitte in TC3 diese 2 Werte um in Seg und Offs Adre.
*(p+y)=117; *(pp+y)=45; } } int main () { char cmd; p = malloc(64000 * sizeof(char)); pp = malloc(64000 * sizeof(char)); SetMode13h (); do { cmd = toupper(getch()); switch (cmd) { case 'Q': voll(p, pp); break; case 'W
-
Thread
Dynamisches 2D Array in C
; i<count; i++) { printf("%i\n", i); test = (int**) realloc(test, i+1 * sizeof(int*)); test[i] = (int*) malloc(5 * sizeof(int)); } } [/c] Ich erhalte folgende Konsolen-Ausgabe: [c] 0 1 2 3 4 realloc(): invalid next size Aborted (core dumped) [/
2D Array idiot... schrieb im Beitrag #5832572: > test = (int**) realloc(test, i+1 * sizeof(int*)); Hier fehlen die Klammern um "i+1". BTW count x realloc ist suboptimal. leo
-
Thread
Basic c-frage: const char - Parameterübergabe?
andere (fehlertraechtige) Metode ist mit Makros: [c]#define Debug_MSG(s) Debug_MSG_Function(s, sizeof(s)) void Debug_MSG_Function(const char *str, size_t str_len);[/c] Das funktioniert gut mit konstanten Strings, aber ein Code wie der folgende wird nicht mehr funktionieren [c]char *str = "hallo, das ist ein Debugstring" Debug_MSG(str)[/c] Denn sizeof(str) == sizeof(char *) == 2 oder 4 oder sonstwas, je nach Architektur.
-
Thread
Sinnvolles Debug Statement für Atmel / Arduino C++
durch ein prettify schicken, nur ... . Ein anderes Beispiel ist: if(sendto(sockfd,&dhcpmsg,sizeof(dhcpmsg),0,(struct sockaddr*)&servaddr,sizeof(servaddr)) < 0) die("sendto"); Da kann man einfach sowas schreiben: #define die(id) DBG("abort because no %s",id) && die(id) Wie auch #define
-
Thread
C++ mehrere Int Variablen mit einander vergleichen
#include <stdio.h> int main(){ int nums[] = {1,2,3,4,5,6,7,8,9,0}; size_t num_count = sizeof(nums)/sizeof(*nums); size_t i,j; bool unique=true; for( i=0; i < num_count; i++ ) for( j=i+1; j < num_count; j++ ) if( nums[j] == nums[i] ){ unique = false; break
-
Thread
UDP Empfangsprobleme mit Winsock2
buf[256]; char buf2[300]; SOCKADDR_IN addr; SOCKADDR_IN remoteAddr; int remoteAddrLen=sizeof(SOCKADDR_IN); rc=startWinsock(); if(rc!=0) { printf("Fehler: startWinsock, fehler code: %d\n",rc); return 1; } else { printf("Winsock gestartet!\n"); } //
addr.sin_port=htons(7); addr.sin_addr.s_addr=htonl(INADDR_ANY); rc=bind(s,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN)); if(rc==SOCKET_ERROR) { printf("Fehler: bind, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("Socket an Port 1234 gebunden\n"); }
-
Thread
little zu big endian funktioniert nicht
groß... Doch, ist es. > Und float nicht zwangsläufig 32 Bit. Statt 4 könnte man besser sizeof(float) nehmen.
Byte ist. Dann sind die kaputt. Aus ISO C: ****************************************** The sizeof operator yields the size (in bytes) of its operand, which may be an expression or the parenthesized name of a type. When applied to an operand that has type char, unsigned char, or signed char,
-
Thread
AVR: Resetpin als GPIO --> Problem
die LED-Helligkeit verändert: [c] if( get_key_long(1<<KEY1) ){ if( brightnessValue >= sizeof(brightnesses)/sizeof(uint8_t)-1 ) brightnessValue = 0; else brightnessValue += 1; for(index = 0;index < 3;index += 1){ LEDS[index].brightnessReduction = brightnesses
-
Thread
Probleme bei Pointer in C. Code crasht
Wie schon geschrieben wurde, gibt es einen Array-Überlauf, wenn sizeof(table_T) > sizeof(uint32) ist. Die Zeile [c] resp_table = (table_t)(init_s->table); [/c] verstößt gegen die strict aliasing Rule, d.h. selbst wenn es keinen Array-Überlauf gibt, ist
-
Thread
Ringpuffer im EEPROM anlegen
t getSelectedPreset(){ uint8_t presets[100]; eeprom_read_block(&presets, &selectedPresets, sizeof(presets)); uint8_t retVal = 0, j = 0; retVal = presets[0]; for(i = 1; i < 100; i++){ if(presets[i] != 0xFF){ retVal = presets[i]; } else { return retVal; }
= 0xFF; } presets[0] = preset; eeprom_write_block(&presets, &selectedPresets, sizeof(presets)); return; } [/c] Könnte das so funktionieren? Geht es auch einfacher? Ich freue mich auf eure Kommentare! :)
-
Thread
c++ Code langsam
getchar()) != EOF) if (c == ';') { *p++ = 0; if (i < sizeof(field)/sizeof(*field) - 1) field[++i] = p; } else if (c != '\n') { if (p < buf + sizeof(buf) - 2) *p++ = c; }
stdin)) return 1; // if (!freopen("nodup.txt", "w", stdout)) return 1; while (fgets(buf, sizeof(buf), stdin)) { char *field[64], *p; int i; for (field[i = 0] = p = buf; (p = strchr(p, ';')); p++) if (i < sizeof(field)/sizeof(*field) - 1)
-
Thread
AVR32 ADC richtig verwenden
c] /* Assign and enable GPIO pins to the ADC function. */ gpio_enable_module(ADC_GPIO_MAP, sizeof(ADC_GPIO_MAP) / sizeof(ADC_GPIO_MAP[0])); /* Configure the ADC peripheral module. * Lower the ADC clock to match the ADC characteristics (because we * configured the CPU clock to
{ // Assign and enable GPIO pins to the ADC function. gpio_enable_module(poti_ADC_GPIO_MAP, sizeof(poti_ADC_GPIO_MAP) / sizeof(poti_ADC_GPIO_MAP[0])); // Initialize AVR32_ADC.mr |= 0x8 << AVR32_ADC_MR_PRESCAL_OFFSET; adc_configure(poti_adc_gpio_map); // Enable the ADC channel
-
Thread
Größe von String herausfinden
überhaupt nicht vor Pufferüberlauf. Das muß jeder Programmierer selber absichern: [c] if( idx >= sizeof(buffer)) return ERROR; else buffer[idx] = irgendwas; [/c] Oder man hat ein OS, was dynamisch Speicher vergrößert, sobald die aktuelle Länge überschritten wird. Das kostet natürlich
nicht vor Pufferüberlauf. > Das muß jeder Programmierer selber absichern: > [c] > if( idx >= sizeof(buffer)) > return ERROR; > else > buffer[idx] = irgendwas; > [/c] Das ist ein völlig anderes Problem, da geht es nicht um die fehlende Längenangabe in Strings, sondern die fehlende
-
Thread
AT Kommandos / Befehlsliste verarbeiten
rename_f }, // ... ggf. weitere }; // Anzahl Elemente in der Map: const int l_cmd_map = sizeof(cmd_map)/sizeof(cmd_map[0]); // Vergleichsfunktion für cmd_map_entry_t-Elemente (zum Sortieren mit // qsort() und zum Suchen mit bsearch() geeignet): int compare_cmd_map_entry( const void *p1
Kommandos bereits // alphabetisch sortiert in cmd_map[] stehen): qsort( cmd_map, l_cmd_map, sizeof(cmd_map[0]), compare_cmd_map_entry ); // Anhand eines Kommandos die Funktion suchen und aufrufen: const char *p_cmd = "copy"; char *p_restliches_Kommando = "a.txt b.bak
-
Thread
If Else geht nicht
/ alle 250µs { //-- Variable Licht betüdeln --------------- uint_xx_t Max = (uint_xx_t) ( sizeof(WAIT) / sizeof(WAIT[0]) ) if ( ... ) Licht = 1; else if ( ... ) Licht = 2; ... if ( Licht >= Max ) Licht = 0; // Timing erzeugen ------------------------- if ( ++TimeTick
-
Thread
Einlesen einer Hex Zahl von stdin
return 1; } // 10 Zeichen aus der Datei lesen size_t elements_read = fread(buffer, sizeof(char), 10, file); if (elements_read != 10) { if (feof(file)) { printf("Ende der Datei erreicht.\n"); } else { printf("Fehler beim Lesen der Datei.
unsigned long adresse; ínt datum1 ínt datum2 }buffer; [/c] size_t elements_read = fread(buffer, sizeof(TELEGR), 1, file); Wichtig ist zu beachten ist, dass die Order (MSB ...LSB), abhängig vom μP, passt
-
Thread
Stringspielerei
Platz hätten. Dein Aufruf soll so aussehen char s[40]="Hallo du!"; aenderung( s, sl, sizeof( s ) ); dann wid auch niemand angelogen und kein Array geht über.
return NULL; } } int main() { char s[200]="Wie gehts?"; sperrungEinfuegen( s, 2, sizeof(s) ); printf( "%s\n", s ); return 0; } [/c]
-
Thread
USART Empfangsbuffer
Befehle wieder aus dem Speicher ziehen kann? Wenn ich einen Befehl habe, kann ich doch eigentlich mit sizeof des vergleichsstrings die Größe ermitteln und diese dann aus dem Buffer löschen. Was aber, wenn in der Zeit nach dem Empfang und des Kompares ein weiteres Zeichen eintrifft, dann würde ich es ja schlimmstenfalls
gar nichts gezogen. Siehe oben. > Wenn ich einen Befehl habe, kann ich doch >eigentlich mit sizeof des vergleichsstrings die Größe ermitteln und >diese dann aus dem Buffer löschen. Falscher Ansatz. Siehe oben.
-
Thread
Wert des an eine Funktion uebergebenen Pointers
uwData, unsigned char **ucBuffer) { *uwData = (unsigned int *) *ucBuffer; (*ucBuffer) += sizeof (unsigned int); } [/c]
uwData, unsigned char **ucBuffer) { *uwData = *((unsigned int *) *ucBuffer); (*ucBuffer) += sizeof (unsigned int); } [/c]
-
Thread
bmp Zeichenfunktion, funktioniert nicht ohne Serial.print
t lcdbuffer[BUFFPIXEL]; // Pixel-Ausgangspuffer (16-Bit pro Pixel) uint8_t buffidx = sizeof(sdbuffer); // Aktuelle Position im sdbuffer boolean goodBmp = false; // Bei gültigem Header-Parsing auf true setzen boolean flip = true; // BMP wird von unten
(buffidx >= sizeof(sdbuffer)) { // tatsächlich bmpFile.read(sdbuffer, sizeof(sdbuffer)); buffidx = 0; // Index auf Anfang setzen } // Pixel von BMP in TFT-Format