-
Thread
gcc array an mehrdimensionales array zuweisen
reg[]" zugreift, nun, wie lang eines der Elemente darin sind? Diese Information geht verloren. sizeof (wr_bat_volt) funktioniert, aber sizeof (reg[0]) liefert /ganz was anderes/. Und .. u8? Wirklich? Spätestens seitdem es stdint.h gibt, ist sowas eine schlechte Idee.
Warum dann indiziert? der naive Ansatz wäre: [c] bat_volt = sub_wr_tx_rx(wr_bat_volt, sizeof(wr_bat_volt)); bat_kw = sub_wr_tx_rx(wr_bat_pow , sizeof(wr_bat_pow )); [/c]
-
Thread
Heltec LoRa32 Evaluationboard
void loop() { static uint32_t packetCount = 0; char message[64]; snprintf(message, sizeof(message), "LoRa Paket #%lu", packetCount++); Serial.print("Sende: "); Serial.println(message); int state = radio.transmit(message); if (state == RADIOLIB_ERR_NONE) { Serial.println
-
Thread
printf format strings prüfen?
} if (format == NULL || *format == '\0') { format = "%F %T"; } strftime (text, sizeof text, format, localtime (&unixtime)); return text; }[/c] Ja, natürlich kann ich das mount auch anders formulieren, da gibt es nur vier bekannte Dateisysteme. Aber wie man ein Datum schreibt,
options) doch lieber. [c]static const char dosopts[] = "check=strict,showexec"; snprintf (fatopts, sizeof fatopts, "time_offset=%ld,uid=%d,gid=%d", timezone / 60L, uid, uid); if (strcmp (fstype, "vfat") == 0 || strcmp (fstype, "msdos") == 0) { asprintf (&options, "%s,%s,%s", errors, fatopts
-
Thread
gcc auf dem pc ausführen
von C etwas anderes als das was du glaubst. https://stackoverflow.com/questions/11868211/does-sizeof-return-the-number-of-bytes-or-the-number-of-octets-of-a-type-in-c
Doch, auch sonst, bis auf wenige Ausnahmen. Wenn sie links von einem Zuweisungsoperator oder in sizeof stehen, dann passiert das nicht.
-
Thread
Frame Check Sequence
Ich komme nicht weiter. Den FCS habe ich mittlerweise Extrahiert [c] packet laenge: 115 sizeof(myData): 115 Received FCS: 211f0289 Calculated CRC32/ISO-HDLC: 0aca0378 ----------------------------new packet----------------------------------- 00 00 38 00 2f 40 40 a0 20 08 00 a0 20 08 00
fe 34 04 01 0f 27 00 00 1f 85 45 41 01 00 00 00 a8 c6 b1 41 [/c] [c] packet laenge: 115 sizeof(myData): 115 Received FCS: ee7b3daf CRC32/ISO-HDLC: ee7b3daf ----------------------------new packet----------------------------------- 00 00 38 00 2f 40 40 a0 20 08 00 a0 20 08 00 00 51 b7
-
Thread
125 KHz Signal
while(1) { ESP_ERROR_CHECK(rmt_transmit(tx_chan, encoder, bytes_to_send, sizeof(bytes_to_send), &tx_config)); } vTaskDelete(NULL); } void app_main() { xTaskCreatePinnedToCore(*loop,"loop",4096,NULL,1,NULL,1); } [/c] Carrier hatte rauskommentiert
-
Thread
Struktur Byteweise in EEPROM speichern bzw. von dort laden
nicht um die einzelnen Variablen kümmern muss? Also im wesentlich so etwas: for (n = 0; n < sizeof (struct FunctionVar); n++) { pZieladresse = EEPROM_Read_CHAR(EEPROMAdresse); pZieladresse++; EEPROMAdresse++; } Anbei mein Lösungsansatz etwas ausführlicher im Anhang
eine Union deiner Struktur mit einem Byte Array, was genau so groß ist, wie die Struktur selbst. (sizeof (struct FunctionVar)) Du kannst dann auf einzelne Bytes auf Byte Array in einem Loop zugreifen, so wie es vor hattest.
-
Thread
ESP32 und die "String" Funktion: Finger weg!
eben. Ich muss mich da nicht anpassen, ich drehe mich um und gehe. [c] memset(msg, 0, sizeof(msg)); /* Wichtig, msg wieder löschen! */ /* Document Header */ strcat(msg, "<!DOCTYPE html>\ <html lang=\"de\">\ <head>\ <title>ESP Solar Debug</title>\ <style>\
Thorsten M. schrieb im Beitrag #7815876: > memset(msg, 0, sizeof(msg)); /* Wichtig, msg wieder löschen! */ Es reicht völlig aus, nur das 1. Byte zu leeren: [c] msg[0] = 0; [/c] Thorsten M. schrieb im Beitrag #7815876: prozent = (int)(((Data.UBatterie
-
Thread
Struct little endian
Gib doch mal ein sizeof(myData) aus. Debugger hilft auch…
len) { memcpy(&myData, data, len); printf("packet laenge: %d\n",len); printf("sizeof(myData): %ld\n",sizeof(myData)); printf("antenna signal:%d\n", myData.radio_tap_header[30]); printf("int:%d\n", myData.b); printf("float:%.3f\n", myData.c); printf("bool:%d\n",
-
Thread
Virtual RS232 am USB send DTR aber wie ?
gesendet werden. char usbDescriptorString0[] = //language descriptor { 4, //sizeof(usbDescriptorString0): length of descriptor in bytes 3, //descriptor type 0x09, 0x04, //language index (0x0409 = US-English) }; int usbDescriptorStringSerialNumber[] = {
-
Thread
ESPNOW Linux!
example_espnow_data_t *buf = (example_espnow_data_t *)send_param->buffer; assert(send_param->len >= sizeof(example_espnow_data_t)); buf->type = IS_BROADCAST_ADDR(send_param->dest_mac) ? EXAMPLE_ESPNOW_DATA_BROADCAST : EXAMPLE_ESPNOW_DATA_UNICAST; buf->state = send_param->state; buf->seq_num
-
Thread
Ansi C - UDP Case switch
2] = { {"tasklist_start", &task_monitor}, {"km", &callback_2}, }; for (int x = 0; x < (sizeof(myDummyStruct) / sizeof(*myDummyStruct)); x++) { if(strstr(rx_buffer, myDummyStruct[x].findString) != NULL) { char *d = strstr(rx_buffer, myDummyStruct[x].findString); if (myDummyStruct
-
Thread
Raisonance vergibt nun RIDE + RKIT-51 Lizenzen kostenlos
__ was eine Unterscheidung zwischen Keil und Raisonance komplizierter macht. 2. Verhalten von sizeof() bei fixen Arrays im Flash [c] const uint8_t CODE VendorDesc[170] = { 10,0, // wLength 0,0, // header 0,0,3,6, // OS #ifdef __RC51__ 170,0, #else sizeof (VendorDesc) & 0xFF, sizeof (VendorDesc) >> 8, #endif 8,0, 2,0, // MS_OS_20_SUBSET_HEADER_FUNCTION ..... [/c] Codegrößen bei meinem Testprogram:
-
Thread
Sammelbestellung AR488 kompatibler USB-GPIB Adapter. Interesse?
denke das liegt an der Art der Speicherung mit EEPROM.put(addr,cfgdata); das "put" bestimmt per "sizeof", wieviele Daten gespeichert werden. Da cfgdata jedoch nur ein Pointer ist, wird nur der Pointer gespeichert und nicht die cfgsize-Bytes, auf die er zeigt. Wenn ich nun das über eine Schleife mache
-
Thread
Microchip Studio 7 Data Breakpoint nicht unterstuetzt?
im Beitrag #7801071: > War ein nicht abgefangener Bufferüberlauf. Ich nehme vorzugsweise den sizeof Operator. Dann muß man keine magischen Nummern hinschreiben und kann die Größe nachträglich scnell ändern.
-
Thread
Welcher Controller für Unterrichtszwecke?
Informatiker) gehabt, der Linux-Entwicklung machen sollte. Der kannte Java und C++, aber was ein sizeof(char*) ergibt, dafür hatte er absolut kein Verständnis gehabt. Die Posix API war ein einziges Rätsel für ihn gewesen. Der gute Mann ist dann auch nach nur einen Jahr wieder gegangen. PIC18 ist auch
-
Thread
Windows-Programm erstellen (Anfänger)
"Fehler beim Öffnen des COM-Ports", "Error", MB_OK); } else { dcbSerialParams.DCBlength = sizeof(dcbSerialParams); GetCommState(hComm, &dcbSerialParams); dcbSerialParams.BaudRate = CBR_9600; // Beispiel-Baudrate dcbSerialParams.ByteSize = 8; dcbSerialParams.StopBits = ONESTOPBIT
schreiben. Beispiel: FILE *file; file = fopen("output.txt", "w"); if (file) { fwrite(buffer, sizeof(char), bytesRead, file); fclose(file); } --- 6. Tabelle aktualisieren Verwende eine ListView, um die Dateien anzuzeigen. Die Fortschrittsbalken können durch den Fortschritt der Übertragung
-
Thread
ESP32: Send udp frame over wifi
); int err = sendto(sock, payload, strlen(payload), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr)); if (err < 0) { ESP_LOGE(TAG, "Error occurred during sending: errno %d", errno); } else { ESP_LOGI(TAG, "Message sent"); }
-
Thread
Noch mal für C C++ Spezialisten
dem Code nicht. Schaut euch das mal an [c] gd_GIF gif_base; memset(&gif_base, 0, sizeof(gif_base)); bool res = f_gif_open(&gif_base, fname, true); LV_LOG_INFO("<***************** Gif Return fname %s- OK %d ********************************************************>", fname
gd_GIF; [/c] Sehe ich das richtig das [c] gd_GIF gif_base; memset(&gif_base, 0, sizeof(gif_base)); [/c] da was nicht stimmt.wARUM der Text nicht richtig dargestell habe das mitNodepad++ erstellt. Muste leider ein CRLF mdoppel machen sonst w#är der Code nicht lesbar
-
Thread
Grundlagen: CUDA
6, 0, -11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; char *ad; int *bd; const int csize = N*sizeof(char); const int isize = N*sizeof(int); printf("%s", a); cudaMalloc( (void**)&ad, csize ); cudaMalloc( (void**)&bd, isize ); cudaMemcpy( ad, a, csize, cudaMemcpyHostToDevice
-
Thread
Bytearray bitweise shiften
ClrLED(uint8_t *LEDs, uint8_t idx) { LEDs[idx/8] &= ~(1<<(idx%8)); } [/c] (wenn man sizeof übergibt, kann man auch die Grenzen abfragen. Oder man arbeitet auf festen Arrays)
-
Thread
Mit dem Pi Pico ein Adapter von Db9 auf USB bauen
TinyUSBDevice.begin(0); usb_hid.setPollInterval(2); usb_hid.setReportDescriptor(desc_hid_report, sizeof(desc_hid_report)); usb_hid.begin(); pinMode(up, INPUT_PULLUP); pinMode(down, INPUT_PULLUP); pinMode(left, INPUT_PULLUP); pinMode(right, INPUT_PULLUP); pinMode(button, INPUT_PULLUP
= 127; if(digitalRead(button) == LOW) gp.buttons = (1U << 0); usb_hid.sendReport(0, &gp, sizeof(gp)); delay(10); } [/c]
-
Thread
C > Struct > Pointer - Adresszuweisung
Applicaton > Binary Interface) festgelegt / beschrieben. Zudem gibt es auch in C static_assert, sizeof() und Direktiven zum Ausrichten und Packen von structs. Damit kann man sicherstellen dass (oder zumindest prüfen ob) Daten z.B. auf einem avr genauso abgebildet werden wie auf x64.
-
Thread
STM32WBA55 - BLE_p2pServer - Wie kann ich Daten an die UART weiterleiten?
M. G. schrieb im Beitrag #7748520: > if(HAL_UART_Transmit_DMA(&huart1, myBuffer, sizeof(myBuffer)) == > HAL_OK) Der hier übergebene Puffer ist eine automatische Variable, die nur zur Laufzeit Deiner Funktion P2P_SERVER_Notification auf dem Stack existiert, genauer, sogar nur zur
Adresse Deinem Funktionsaufruf übergeben: [c] if(HAL_UART_Transmit_DMA(&huart1, myBuffer, sizeof(myBuffer)) == HAL_OK) if(HAL_UART_Transmit_DMA(&huart1, &myByte, sizeof(myByte)) == HAL_OK) [/c] Was sagt die Dokumentation der Funktion HAL_UART_Transmit_DMA darüber aus, wie übergebene
-
Thread
Einzelne Bit in Bitfeld in for Schleife ansprechen
Ich hatte mal einen echt doofen Bug mit anonymen Bitfeldern. Bei "struct { int : 8; int y : sizeof(int)*CHAR_BIT-8; } x = {0}; ...", könnte man ja meinen, das wird alles genullt. Das anonyme Bitfeld aber nicht unbedingt...
Compilerhandbuch nach Reihenfolge, padding, etc. So wie Du auch zu Beginn wissen willst, was (-5%3) ergibt oder sizeof(int).
-
Thread
ESP32 IDFv3 Ethernet-Phy KSZ8863 funktioniert nicht
eth_config_t config = phy_lan8720_default_ethernet_config; memcpy(ð_config, &config, sizeof(eth_config_t)); } else if(type == ETH_PHY_TLK110){ eth_config_t config = phy_tlk110_default_ethernet_config; memcpy(ð_config, &config, sizeof(eth_config_t)); } else if
config.phy_power_enable = ksz_phy_power_enable; memcpy(ð_config, &config, sizeof(eth_config_t)); } else { Serial.printf("Bad ETH_PHY type: %u", (uint8_t)type); return false; } eth_config.phy_addr = (eth_phy_base_t)phy_addr; eth_config.clock_mode
-
Thread
GCC und static deklarierung von arrays
memory * @retval None */ void *USBD_static_malloc(uint32_t size) { static uint32_t mem[(sizeof(USBD_CDC_HandleTypeDef)/4)+1];/* On 32-bit boundary */ return mem; } [/c] [Mod: c-Tags eingefügt]
-
Thread
STM32L4 - DMA Puffer Leer
rxbuf[BLOCK_SAMPLES*4]; while(1) { stat = HAL_SAI_Receive(&hsai_BlockB1, (uint8_t*) txbuf, sizeof(txbuf) / 2,10); stat = HAL_SAI_Transmit(&hsai_BlockA1, (uint8_t*) txbuf, sizeof(txbuf) / 2,10); } Soweit so schön. Wenn ich dann aber auf DMA umbaue: if (HAL_OK != HAL_SAI_Receive_DMA(&hsai_BlockB1, (uint8_t*) rxbuf, sizeof(rxbuf) / 2)) { DebugLog("HAL_SAI_Receive_DMA fail 1\r\n"); Error_Handler(); } if (HAL_OK != HAL_SAI_Transmit_DMA(&hsai_BlockA1, (uint8_t*) txbuf, sizeof(txbuf) / 2)) { DebugLog("HAL_SAI_Transmit_DMA