-
Thread
warum werden bei uart immer char gesendet/empfangen?
mit Zeichen und Zeichensätzen zu tun: ein char ist immer ein Byte ist immer von der Größe 1. sizeof(char) = 1.
; uint8_t cmd; int32_t data; uint16_t crc; }; const static uint8_t length = sizeof(toAddr) + sizeof(fromAddr) + sizeof(cmd) + sizeof(data) + sizeof(crc); uint8_t asArray[length]; // für Zugriff über Index } empfDaten, sendDaten; // zwei gleiche Buffer anlegen [/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
-
Thread
C Speicher >1Gb
1073741824LLU char *example1; char *example2; char *example3; example1 = (char*)calloc(STORAGE, sizeof(char)); if(example1 == NULL) { printf("Storage1 failure\r\n"); return 0; } example2 = (char*)calloc(STORAGE, sizeof(char)); if(example2 == NULL) { printf("Storage2 failure\r\n"); return 0; } example3 = (char*)malloc(sizeof(char) * STORAGE); if(example3 == NULL) { printf("Storage3 failure\r\n"); return 0; } [/c] Also 1Gb kann ich immer Reservieren. Bei mehr, funktioniert das Programm nicht mehr. Ich benutze GCC
-
Thread
STM32L052x8 USB mit Bare Metal Code funktioniert nicht. SET_ADDRESS fehlerhaft
true; reject all setup packets by default ReadControlBlock(&CMD.SetupPacket.bmRequestType, sizeof(TSetupPacket)); request = CMD.SetupPacket.bRequest; if (IsStandardRequest()) { trace("isStandardRequest\n"); switch (request) { case USB_SET_ADDRESS
-
Artikel
LAUNCHXL-F28379D
Verarbeitungsbreite 16 Bit. 32-Bit-Befehle laufen ohne Zeitverzug, sind aber nicht Standard: Merke: sizeof(int) *2 == sizeof(long). Bytes können nicht adressiert werden: Merke: sizeof(char) == sizeof(wchar_t) == sizeof(int) == 1 (16 bit). Daher ist es nicht von Nachteil, alle Zeichenketten als Wide-Char
Maul schauen und den Datentyp „byte“ deklarieren (wie bei Arduino geschehen). #define elemof(x) (sizeof(x)/sizeof(*(x))) typedef unsigned char byte; Eine sinnvolle Stapelung von Funktionen, Headern und C-Quelltexten (in Schichten und Teilaufgaben) ist Voraussetzung für ein wartbares Software-Projekt.
-
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
fgets wartet nicht, setzen einer variablen in einem struct lässt programm abstürzen
= list) { printf("empty list, create first element\n"); if(NULL == malloc(sizeof(struct liste))) { fprintf(stderr, "no free memory\n"); return; } printf("add list number\n"); list->number = number; printf(
Buffer 21 Zeichen groß und setz nach dem fgets noch: word[20] = '\0'; > if(NULL == malloc(sizeof(struct liste))) Wo speicherst Du denn den Rückgabewert von malloc? Gar nicht.
-
Thread
FatFs Daten falsch herum
0x11223344; testarray[1] = 0x12223344; testarray[2] = 0x13223344; f_write(&fil, testarray, sizeof(testarray), &bw); [/c] Auch hier sind die Daten verdreht auf der Karte, ohne das ich irgendwas sortiert oder geändert habe... [c] 44 33 22 11 44 33 22 12 44 33 22 13 [/c]
vom STM32 aus. Wo ist das Problem? Man sichert ganze Structs einfach ab mit f_write(&struct...., sizeof struct(....)); Und liest das Ganze auch komplett wieder zurück als Struct direkt in die Struktur ein. Da steht alles wo es soll. Wie die Maschine das macht spielt für den Programmierer normalerweise
-
Thread
Arduino Text programmieren Gesperrt
different data pin on your microcontroller CHANGE THIS! #define DATA_PIN 6 #define arr_len( x ) ( sizeof( x ) / sizeof( *x ) ) // Matrix setup params Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(48, 16, DATA_PIN, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS +NEO_MATRIX_ZIGZAG, NEO_GRB
-
Thread
gcc komischer fehler: sbrk() Gesperrt
m_file._bf._base = m_outbuf; // the buffer (at least 1 byte, if !NULL) m_file._bf._size = sizeof(m_outbuf); // the buffer (at least 1 byte, if !NULL) m_file._lbfsize = -sizeof(m_outbuf); // 0 or -_bf._size, for inline putc m_file._read = NULL; // no read m_file._write = charout
aber dann müsste man eben für den vorherigen Ausdruck die umständlich zu lesende Form [c] i = sizeof("Foo!") - 1; [/c] wählen.
-
Thread
Mehrere Livestreams auf Raspberry Pi
dummys const uint8_t cams[] = { 1, 2, 3, 4 }; GstElement *pipeline[(sizeof(cams)/sizeof(cams[0]))]; GtkWidget* newCamera(uint8_t pipeNum) { GtkWidget *video_window; GstElement *source, *depay, *parse, *decoder, *converter, *sink; pipeline[pipeNum] = gst_pipeline_new
FALSE, 0); gtk_container_add(GTK_CONTAINER(window), hbox); for(uint8_t i = 0; i < (sizeof(cams)/sizeof(cams[0])); i = i + 1) { gst_element_set_state(pipeline[i], GST_STATE_PLAYING); } gtk_window_fullscreen(GTK_WINDOW(window)); gtk_widget_show_all(window);
-
Thread
Wie Verwendung von Konstanten erzwingen?
Überraschend für mich wäre, wenn Du nach der Änderung von x ein Array char a[x] anlegst. Und sizeof(a) dann 42 ergibt. Das wäre ein Hinweis, dass der Compiler x nicht als Konstante sieht.
-
Thread
Steuerzeichen entfernen ^@
input: 0x%.2X%s\n", c, printable ? (char[]){' ',c,0} : ""); if(printable){ if(i >= sizeof(line)-1){ printf("line buffer full: %s\n", line); i = 0; } line[i] = c; i += 1; } if(c == '\n' || c == '\r'){ line[i] = 0; i = 0;
-
Thread
riesige Datenbank verwalten
muss man nur die Startpositionen der Januare ausrechnen und von da an [c] 31Tage*720Einträge/Tag*sizeof(int16_t)*Anzahl Messtellen [/c] betrachten. Es ist da nicht notwendig die gesamte Datei zu lesen. Mit memory mapped files sorgt das Betriebssystem selbst dafür, dass nur die Speicherbereiche aus
nur die Startpositionen der Januare ausrechnen und > von da an > [c] > 31Tage*720Einträge/Tag*sizeof(int16_t)*Anzahl Messtellen > [/c] > betrachten. Es ist da nicht notwendig die gesamte Datei zu lesen. Diese Formel funktioniert natürlich nur für alle Monate, die kein Februar sind. Aber so ein
-
Thread
Probleme mit einfachem GPIO PinState User Code mit CubeIDE
ein Array kannst du dann auch am Stück versenden: [code] HAL_UART_Transmit(&huart1, &data, sizeof(data), 100); [/code] Für deine 3-Byte-Message würde sich allerdings eher eine Structur anbieten. z.B. so: [code] struct message { uint8_t status; uint8_t data[2]; }; [/code]
-
Thread
C++ template mit typabhängiger Behandlung
call this function from ISR context. */ MemoryPool() { memset(_pool_mem, 0, sizeof(_pool_mem)); osMemoryPoolAttr_t attr = { 0 }; attr.mp_mem = _pool_mem; attr.mp_size = sizeof(_pool_mem); attr.cb_mem = &_obj_mem; attr.cb_size = sizeof(
die Verzeigerung der freigen Blöcke: [c] MemoryPool() { memset(_pool_mem, 0, sizeof(_pool_mem)); osMemoryPoolAttr_t attr = { 0 }; attr.mp_mem = _pool_mem; attr.mp_size = sizeof(_pool_mem); attr.cb_mem = &_obj_mem; attr.cb_size = sizeof(
-
Thread
STM32 Embitz: Code optimieren / nano-branch Lib vermeiden
*/ char grad[4]; char minuten[10]; memset(grad,0,sizeof(grad)); memset(minuten,0,sizeof(minuten)); p = nmea_fields[3]; if (*p != '\0') { strncpy(grad,p,2); strncpy
Latitude (Breite) 00910.09884 */ p = nmea_fields[5]; memset(grad,0,sizeof(grad)); memset(minuten,0,sizeof(minuten)); if (*p != '\0') { strncpy(grad,p,3); strncpy(minuten,p+3,8); gps_info.latitude
-
Thread
Geht das Selection Sortier Algorithmus durch? Verbesserungsvorschläge wären Top!
Übung erreicht werden soll. Auf jeden Fall könnte man z.B. auch im vorliegenden Programm schon mit sizeof() arbeiten, um besser mit Änderungen im Array umgehen zu können. Nur weil man nun 2 Zahlen dazufügt, sollte man nichts im Code ändern müssen, weil das Fehleranfällig ist.
-
Thread
STM32 Interrupts - Welche Regeln sollte man beachten?
Zeichen auf $GNRMC*/ const char str1[] = "$GNRMC"; if (strncmp((char*)NmeaBuf,str1,sizeof(str1)-1) != 0) fGPSDataValid = false; else { fGPSDataValid = true; /* String zerteilen, der durch , separiert ist */ uint8_t i = 0;
false; NmeaBuf_Ptr = 0; /* Reset RX Pointer & Clear */ //memset((void*)NmeaBuf,0,sizeof(NmeaBuf)); } /* Alle Error Flags löschen */ USART1->SR; USART1->DR; } [/c]
-
Thread
Softwareversion im Flash hinterlegen.
// 1e S char name[9 + 1]; // 20 S } image_struct; _Static_assert (sizeof(image_struct) == 42, " Bad struct size");[/c]
-
Thread
Warum haben manche Programmiersprachen Nullen und andere Einsen?
include <stdio.h> #include <stdint.h> int main () { int i; uint8_t * p; printf ("sizeof(int) = %lu\n", sizeof (i)); printf ("sizeof(ptr) = %lu\n", sizeof (p)); printf ("sizeof(ul) = %lu\n", sizeof (unsigned long)); p = (uint8_t *) 0x123456789abcdef0; i = 256;
unsigned long) (p - i)); return 0; } [/c] [code] # cc -O2 -Wall -Werror a.c && ./a.out sizeof(int) = 4 sizeof(ptr) = 8 sizeof(ul) = 8 0x123456789ABCDDF0 0x123456789ABCDDF0 [/code] Für mich gibts da keinen Unterschied, aber vielleicht habe ich ja falsche Werte benutzt und Du hast ein
-
Thread
~100 TB Speichern
und PW sind immer gleich lang, also einfach aneinanderreihen und das n'te PW/Hash lese ich mit (sizeof(Hash)+sizeof(PW))*n?
sind immer gleich lang, also einfach > aneinanderreihen und das n'te PW/Hash lese ich mit > (sizeof(Hash)+sizeof(PW))*n? Das geht nicht, da die PW nicht alle gleich lang sind. Ich habe oben ja nicht nur n lange PW berücksichtigt, sondern auch n-m lange Passwörter bis n = m. Du hast also ne
-
Thread
Verliere Daten/Bits beim shiften in C/STM32
Folgender Beispielcode liefert folgendes Ergebnis: [c] HAL_UART_Transmit_IT(&huart2, &tempOut, sizeof(tempOut)); tempOutRAW = tempOut / 16; HAL_Delay(1); HAL_UART_Transmit_IT(&huart2, &tempOutRAW, sizeof(tempOutRAW));[/c] [c] OUTPUT: 0b0001 0110 1100 0000 0b0000 0001 0000 1100 [/c]
-
Thread
Unbekannte Warnung
Ja, wurde ja oben auch schon genannt. Also: [C] memcpy(&SCD30_CO2_Concentration, &CO2_Temp, sizeof SCD30_CO2_Concentration); [/C]
#6625468: > Ja, wurde ja oben auch schon genannt. > Also:memcpy(&SCD30_CO2_Concentration, &CO2_Temp, sizeof > SCD30_CO2_Concentration); Und das sollte doch eigentlich schon daran scheitern, dass SCD30_CO2_Concentration volatile ist und der (implizite) Cast nach (void *) das wegwirft.
-
Thread
Schalter entprellen Arduino
// Pin-Nummern der angeschlossenen Buttons 2, 3, 4, 5, 6, 7}; #define NUMBUTTONS sizeof(buttonPins) // Die Anzahl der Tasten durch die Anzahl der Bytes des Arrays buttonPins ermitteln (wird automatisch definiert) Bounce debouncer[NUMBUTTONS]; // Mehrere Bounce-Instanzen
die Verarbeitung übergeben (Reicht bereits für einfachste Anwendungen) { memset(buttonChange,0,sizeof(buttonChange)); // Alle alten Zustandswechsel verwerfen (buttonChange wird deshalb komplett mit Nullen überschrieben) for(int i = 0; i < NUMBUTTONS; i++) { debouncer[i].update();
-
Thread
32 GPIO Sender und Empfänger via Bus/Ethernet
portF; buffer.aIn; // send data err = sock.sendto(remoteAddr, &buffer, sizeof(buffer)); // receive data (receiver should echo data err = recvfrom(nullptr, &buffer, sizeof(buffer)); // wait before sending again ThisThread::sleep_for(1ms
-
Thread
Akausales Verhalten von Atmega328p
'\0', (N_MAX_ROUNDS + 1) * N_BLOCK): [/c] oder einfacher: [c] memset(aesContext.ksch, '\0', sizeof (aesContext.ksch)): [/c] Ich habe nachgerechnet: Glücklicherweise stimmen die 240.;) Tipp: Suche nach weiteren Zahlenkonstanten im Source, überprüfe die Richtigkeit und ersetze diese maghischen Zahlen durch passende Preprozessor-Konstanten oder sizeofs. Eine falsch verwendete Zahl kann schon verheerende Auswirkungen haben.
-
Thread
struct kopieren
quasi als default werte). Was geht hier am schnellsten? ein memcpy? memcpy(&time2_s, &time1_s, sizeof(time_ts)); oder jeden wert einzeln zu schreiben? time2_s.sekunden = time1_s.sekunden; ....
-
Thread
Attiny84 ArduinoIDE Timer/Anfängerprobleme
77, 87, 97, 108, 120, 132, 145, 159, 173, 188, 204, 220, 237, 255}; const byte anzahlDimmstufen {sizeof(helligkeit)}; const unsigned int warte {50}; void setup (void) { Serial.begin(250000); Serial.println("\nStart"); for (const byte &p : pwmPin) { pinMode(p, OUTPUT); } }
-
Thread
LoraWAN - EInstiegshürden
Prepare upstream data transmission at the next possible time. LMIC_setTxData2(1, mydata, sizeof(mydata)-1, 0); Serial.println(F("Packet queued")); } // Next TX is scheduled after TX_COMPLETE event. } void setup() { Serial.begin(115200); Serial.println(F("Starting
-
Thread
[C] flexibles Array Memeber in struct initialisieren / memcpy
; struct data *createData(struct data *s, int id, int a_size, float a[]) { s = malloc( sizeof(*s) + sizeof(float) * a_size); s->data_id = id; s->a_size = a_size; memcpy(s->vals, a, sizeof(float) * a_size); return s; } void printData(struct data *s){ printf(
c] struct data *createData(struct data *s, int id, int a_size, float a[]) { s = malloc( sizeof(*s) + sizeof(float) * a_size); ... return s; } [/c] Den Pointer auf "struct data" zu übergeben ist hier ohne Wirkung. Auf folgende Art hast Du wesentlich sinnvolleren Code und man