-
Thread
Atmel SAM25W I2C und WIFI
nm_bsp_init(); /* Initialize Wi-Fi parameters structure. */ memset((uint8_t *)¶m, 0, sizeof(tstrWifiInitParam)); /* Initialize Wi-Fi driver with data and status callbacks. */ param.pfAppWifiCb = wifi_cb; ret = m2m_wifi_init(¶m); if (M2M_SUCCESS != ret) { printf("main
parameters structure with SSID, channel and OPEN security type. */ memset(&strM2MAPConfig, 0x00, sizeof(tstrM2MAPConfig)); strcpy((char *)&strM2MAPConfig.au8SSID, MAIN_WLAN_SSID); strM2MAPConfig.u8ListenChannel = MAIN_WLAN_CHANNEL; strM2MAPConfig.u8SecType = MAIN_WLAN_AUTH; strM2MAPConfig.au8DHCPServerIP
-
Thread
Endianess beim Kopieren automatisieren
ist außer Frage? Achim S. schrieb im Beitrag #4969948: > Wir senden quasi per (47, &Status47, sizeof(Status47)) problemlos, da > Typ, struct, Padding, Endian gleich sind. Diese Herangehensweise rächt sich hier, deswegen macht man das direkt richtig...
raw, uint16_t v ) { raw[ 0 ] = v & 0xff; raw[ 1 ] = ( v & 0xff00 ) >> 8; return raw + sizeof( v ); } [/c]
-
Thread
I2C, Programm "crashed" beim Sende Versuch
char output[7][4]; while (1) { getSeconds(); for (uint8_t n=0; n<sizeof(time); n++) { itoa(time[n], output[n], 10); } send_string(output[2]); send_string(output[1]); send_string(output[0]); send_string(" ");
-
Thread
Zugriffsverletzung C-Programm
Albert schrieb im Beitrag #4967951: > if( (realloc(data, sizeof(weatherdata) * 10))!=NULL); Das geht ganz gewaltig in die Hose, denn Du schmeißt den Rückgabewert von realloc weg ...
Albert schrieb im Beitrag #4968084: > data = realloc(data, sizeof(weatherdata) * (sizeOfDataSpace+10)); Das ist zwar besser, aber immer noch ungeschickt. Stell' Dir folgende Situation vor: Vor dem Aufruf von /realloc/ zeigt /data/ auf Speicher, den Du mühsam
-
Thread
C Array auf Inhalt prüfen?
erste Element 0 ist und jedes Element gleich dem Nachfolger ist: [c] (a[0]==0) && (memcmp(a,a+1,sizeof(*a)*(a_len-1))==0) // a_len: Anzahl der Elemente in a. Der Typ von *a muss bitvergleichbar sein. [/c] ;)
-
Thread
Native C Code in C#
) void Send(void) { GenerateData Data; GenerateFrame(&Data); UPort->Send((char*)&Data, sizeof(data_t)); }
u8MacAddress, 6); solltes du lieber so schreiben memcpy(tTelegram.u8MacAddress, u8MacAddress, sizeof(u8MacAddress));
-
Thread
ser, viele daten zum µc senden
{ String filename = line.substring(line.lastIndexOf("=") + 1); char c_filename[sizeof(filename)]; filename.toCharArray(c_filename,sizeof(filename)); wFile = SD.open(c_filename, FILE_WRITE); while(COM.available() > 0) { wFile.write(COM.read());
-
Thread
Serial1.write() - pointer
setup() { Serial.begin(9600); Serial1.begin(9600); delay(500); Serial1.write(queryA, sizeof(queryA)); Serial1.flush(); } void loop() { if (Serial1.available() > 0){ char c = Serial1.read(); Serial.print(c, HEX); } else { Serial.println("-------------"); Serial1.write(queryB, sizeof(queryB)); Serial1.flush(); Serial.println("-------------"); delay(50); } }; [/c] Führe ich die commands jedoch über meine Klasse aus, erhalte ich vom receiver nur Müll.
-
Thread
Rechnen mit Datum (localtime,ctime etc) bei Mikros
localtime(&value); /* Zeit in eigenen Struct holen */ memcpy((void*)&mytime,ptr,sizeof(struct tm)); // mytime <- localtime Buffer /* Prüfe auf Sommerzeit */ if (IsSummertime()) { /* Zeit nochmal umrechnen SZ = +1H */ value = value
:mm:ss umwandeln */ ptr = localtime(&value); memcpy((void*)&mytime,ptr,sizeof(struct tm)); // mytime <- localtime Buffer mytime.tm_isdst = true; } /* Jahr richtig schreiben */ mytime.tm_year += 1900; /* Zeitflags setzen,
-
Thread
failed to open stream: Resource temporarily unavailable
Was ist an meinem Code falsch?? [code] function makeicon($weapon_info) { $lenght = sizeof(array_keys($weapon_info)); for($i = 0; $i < 8; $i++) { $url = $weapon_info[$i][1]; $savepath = "images/itemicons/" . $weapon_info[$i][5] . ".png"; $img = file_get_contents
-
Thread
enum mit genau 1 Byte Datenverbrauch
zugehörigen Makefile festgelegt). Erzwingen kann man das auch mit einem compile-time assert auf ein sizeof() [c] _Static_assert (sizeof(enum foo) == 1, "this code must be compiled with -fshort-enums"); [/c] und ein paar Worten Dokumentation gleich daneben so daß wenn irgendwer in 12 Jahren den
-
Thread
STM32F103 Blue Pill Board: Verwendung der RTC mit 32khz
true; } /* In eigene Struktur kopieren */ memcpy((void*)&mytime,ptr,sizeof(struct tm)); // mytime <- localtime Buffer /* Jahr richtig schreiben */ mytime.tm_year += 1900; /* Berechne Sonnenzeiten */ CalcSonnenAufgang((struct tm*)&
-
Thread
ATMega168, mySmart USB light und EEPROM Variable initialisieren
usart_puti(&eeSet); usart_puts("\n\r"); eeprom_read_block((void*)&set_ram, (void*)&eeSet, sizeof(mcSettings)); //eeprom_busy_wait(); attentuation = set_ram.attentuations[set_ram.channelIndex]; sei(); while(1){ _delay_ms(300); PORTC ^= _BV(LED1); //OCR0B = 0x100F
-
Thread
Feststellen der Größe einer Variablen bei Übergabe eines void pointers
...... } template <typename T> void test (T& par1) { test (static_cast<void*> (&par1), sizeof (T)); } int main() { test(g_val1); }[/c] Das template bestimmt automatisch die korrekte Größe.
Du kannst ja ein Makro schreiben. Etwa [c] #define TEST(g_val1) test((void*)&g_val1, sizeof (g_val1)) [/c]
-
Thread
Pointer nach Rückkehr aus Funktion null?
Standardwert für Zeiger die auf nichts zeigen (nicht 0!= void function (int * b) { b = malloc (sizeof(int)); } ... function (a); [/c] Auch wenn die Funktion gleich aussieht, tritt hier das selbe Problem auf, das wie folgt formuliert werden kann: Alle Werte innerhalb einer Funktion haben
möchte. Also so etwas wie int * a = NULL; void function (int * & b) { b = malloc(sizeof(int)); } function ( a); Das erspart 'Stern' und 'Und'. Statt gcc einfach g++ eintippen, und schon mag der Compiler das.
-
Thread
Vor und Nachteile von MicroPython auf dem ESP8266
bmpFile.position() != pos) { bmpFile.seek(pos,SeekSet); bmpFile.read(sdbuffer, sizeof(sdbuffer)); } uint16_t buffer_pos=0; for(i = 0; i < w; i++) { pixels.setPixelColor(i, gamma8[sdbuffer[buffer_pos+2]], gamma8[sdbuffer
-
Thread
Hex Wert wird nicht erkannt
[c] if(uart_string[8] == 0xDD){ uart_string[0] = uart_string[8]; rs485_puts(uart_string,sizeof(uart_string)); } [/c] gehe ich hin und sage != 0xDD dann springt der auch in meine Abfrage und sendet meinen uart_string zurück, dann sehe ich auch dass es 0xDD ist. [c] if(uart_string[8] != 0xDD){ uart_string[0] = uart_string[8]; rs485_puts(uart_string,sizeof(uart_string)); } [/c] Ausgabe: 0| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|15|16|17|18|19| DD| 0| 0| 0| 0| 0| 0| 0|DD| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| A|
-
Thread
Atmega644 EEPROM Initialisieren
übertragen soll weiß wo die Daten stehen. Siehe "moduleInit()": [c]e2SetConfig((uint8_t*) &gsEEConfig, sizeof(gsEEConfig));[/c] und über e2WriteConfig();(e.c) werden die Daten dann in den EEPROM übertragen.
-
Thread
invalid conversion from 'const char*' to 'char' [-fpermissive]
bmpFile.position() != pos) { // Need seek? bmpFile.seek(pos); buffidx = sizeof(sdbuffer); // Force buffer reload } for (col=0; col<w; col++) { // For each pixel... // Time to read more pixel data? if (buffidx >= sizeof(sdbuffer)) { // Indeed bmpFile.read(sdbuffer, sizeof(sdbuffer)); buffidx = 0; // Set index to beginning } // Convert pixel from BMP to TFT format, push to display b = sdbuffer[buffidx++];
-
Thread
UART empfängt nur 2 zeichen
ich sende mit einem mega328 über uart ein string [c] char* test = "TEST"; rs485_puts(test,sizeof(test)); void rs485_putc(unsigned char c){ while (!(UCSR0A & (1<<UDRE0))) /* warten bis Senden moeglich */ { } UDR0 = c; /* sende Zeichen */ //return 0; }
tue ich mit einem zweiten mega328 [c] if((UCSR0A & (1<<RXC0))){ uart_gets(uart_string, sizeof(uart_string)); //uart_readline(uart_string); } if(uart_str_complete == 1){ lcd_gotoxy(0,0); if(uart_string[0] == 0x42){ UCSR0A &= ~(1<<MPCM0);
-
Thread
Checksumme von Bin/Hex-Datei berechnen und integrieren.
systick; // 15 isr *interrupts[128-16]; } vector_struct; _Static_assert (sizeof(vector_struct) == 512, " Bad struct size");[/c] > eagle user schrieb: >> Aber wodurch könnten Lücken im Hexfile entstehen? Warum sollte der >> Linker Code und Daten nicht lückenlos packen?
-
Thread
r2r DAC an Box
legt sie alle //62 µS auf PORTA: PORTA = pgm_read_byte(&(data[i++])); if (i >=sizeof(data)) i =0; _delay_us (62); // 16 Hz } } Hier der Unterschied zwischen Original und abgespielten.. (leider schlechte Sound Qualität, da mit Latptop aufgenommen habe
-
Thread
C++: Interessanter Effekt bei constexpr Arrays
durchkompiliert arm-none-eabi-gcc GNU Tools ARM Embedded 4.9 2015q3 für cortex m-3 mit offset = 0 ist sizeof(main) == 0x30 mit offset = 1 ist sizeof(main) == 0x3C In beiden Fällen ist sizeof(data) == 0
-
Thread
C-Funktion verstehen
aber eines besseren: [c] #include <stdio.h> #include <stdint.h> int main() { printf ("sizeof(int): %ld\n", sizeof(int)); printf ("sizeof(long): %ld\n", sizeof(long)); printf ("%x\n", ~1); printf ("%lx\n", ~1L); printf ("%lx\n", (unsigned long)(~1)); printf ("%lx\n", (unsigned long)(~1U)); return 0; } [/c] [code] $ cc a.c && ./a.out sizeof(int): 4 sizeof(long): 8 fffffffe fffffffffffffffe fffffffffffffffe fffffffe [/code] Es liegt an der Sign-Extension, dass "(unsigned long)(~1)" trotzdem funktioniert. Rufus hatte den richtigen
-
Thread
[Pollin] Grafik Display Anschluss Verständnisfragen
SystemClock_Config(); MX_GPIO_Init(); MX_USART2_UART_Init(); GLCD.init(); // memcpy(g_buf,logo1,sizeof(logo1)); memcpy(g_buf,font,sizeof(font)); GLCD.update(); HAL_Delay(3000); while (1) { } /* USER CODE END 3 */ }[/c] INCLUDE: [c] // defines ------ #define DISPLAY_ON
-
Thread
Sscanf Problem
was für ein System? %d erwartet ein int, wenn bei dir sizeof(int)!=sizeof(short) ist könnte das zu einen Problem werden.
-
Thread
DiscoRedTRX - Ein SDR Transceiver aus Baugruppen
calc_bandpass (BANDPASS a) { double* impulse; a->infilt = (double *)malloc0(2 * a->size * sizeof(complex)); a->product = (double *)malloc0(2 * a->size * sizeof(complex)); impulse = fir_bandpass(a->size + 1, a->f_low, a->f_high, a->samplerate, a->wintype, 1, 1.0 / (double)(2 * a->size)); .
-
Thread
Messwerteglätung
an und nutzen, } //Ausgabe for (int j = 0; j < sizeof(Data) / sizeof(double); j++) { printf("Summe: %.3f\n", Data[j]); } return 0; }
----------------------------------\\ for (int j = 0; j < sizeof(Data) / sizeof(float); j++) { //Ausgabe (kann weggespart werden) printf("Summe: %.3f\n", Data[j]); } return 0; }
-
Thread
Struct aus EEPROM lesen als Funktionsparameter
soll der Funktion übergeben werden? Ist Dir bewusst, daß Du so nur genau /ein/ Byte liest? sizeof(Lv->Level[3].default.allowed) ist nämlich sizeof uint8_t ...
. F. schrieb im Beitrag #4908448: > Ist Dir bewusst, daß Du so nur genau ein Byte liest? > > sizeof(Lv->Level[3].default.allowed) ist nämlich sizeof uint8_t ... Ja ist mir bewusst, aber die Struktur enthält auch andere Datentypen die größer uint8_t sind z.B. könnte allowed auch uint32_t sein..
-
Thread
STM32F030CC Bootloader Flash löschen
= firmwareFlashAddress; flashPtr < firmwareFlashEndAddress; flashPtr += (firmwareFlashPageSize / sizeof(*flashPtr))) { FLASH->CR = FLASH_CR_PER; FLASH->AR = (uint32_t)flashPtr; FLASH->CR = FLASH_CR_PER | FLASH_CR_STRT; __NOP(); while ((FLASH->SR & FLASH_SR_BSY
-
Thread
C/C++: Warum ist a[n] äquivalent zu n[a]?
Beispiel 4 Bytes. int a[]{1, 2, 3}; 1000 1 1004 2 1008 3 Bei a[2] also sinngemäß a + 2 * sizeof(int) = 1000 + 2 * 4 = 1008 a[2] -> *(a + 2 * sizeof(int)) -> 3 Aber warum funktioniert das umgekehrt? 2[a] 2 + a * sizeof(int) = 2 + 1000 * 4 = 4002 (?) a "degeneriert" hier doch zu einem int
August schrieb im Beitrag #4900418: > Aber warum funktioniert das umgekehrt? > 2[a] > 2 + a * sizeof(int) = 2 + 1000 * 4 = 4002 (?) Eben nicht. a ist ein Pointer und der wird nicht mit sizeof multipliziert. 2 ist ein integer und der wird mit dem sizeof vom Pointertyp multipliziert.
-
Thread
AVR führt Programm nach flashen und Reset aus, nicht aber nach Powercycle
Sowas gehört sich einfach nicht, da macht man einen Guard drumherum, d.h. Schreibzugriffe außerhalb sizeof(array) werden abgewiesen. Will man es gut machen, gibt man noch einen Errorlevel zurück, der dann ausgegeben wird.
gehört sich einfach nicht, da macht man einen Guard drumherum, > d.h. Schreibzugriffe außerhalb sizeof(array) werden abgewiesen. > Will man es gut machen, gibt man noch einen Errorlevel zurück, der dann > ausgegeben wird. ASM unterster Level - was willst Du da abfangen, wenn der Fehler dort drin
-
Thread
avr/gcc 'expected expression before 'ZoomSettings_t'
copyPayload(&ucRxBuffer[3], 0); eeprom_update_block( &RAMZoomSettings, &EEPROMZoomSettings, sizeof(ZoomSettings_t) ); [/c]
-
Thread
Verschachtelte Strukturen, Union und Bitfelder
g; } TypeID;[/c] Der so definierte Datentyp ist jedoch nicht 1 Byte, sondern 2 Byte groß (sizeof(TypeID))! :-O Begründet liegt das irgendwie an dem inneren Union. Definiere ich das ganze so: [c]typedef union { struct { uint8_t a : 1; uint8_t b
uint8_t e : 3 ; } ef ; } ; int main() { union U u ; u.g = 0x5d ; printf("%ld\n",sizeof(u)) ; printf("%x %x\n",u.ef.e,u.ef.f) ; printf("%x %x %x %x\n",u.abcd.a,u.abcd.b,u.abcd.c,u.abcd.d) ; return 0 ; } [/c] Ausgabe: [code] 1 7 1 0 1 0 1d [/code] Imho kann der Compiler
-
Thread
C: Dimensionen eines Arrays zur Laufzeit herausbekommen
Hi "Der Andere"! Das meine ich nicht ... Auch, wenn du mit deiner Ergänzung recht hast (sizeof(array)/sizeof(<datatype array>)). Ich rede von den Dimensionen. Wollte nämlich nicht n-1 Dimensionen angeben müssen.
übrigens mit den folgenden Ausdrücken, die alle zur Compilezeit ausgewertet werden: [c] sizeof a / sizeof *a // -> 3 sizeof *a / sizeof **a // -> 6 sizeof **a / sizeof ***a // -> 5 sizeof ***a / sizeof ****a // -> 7 [/c]
-
Thread
Fehler bei snprintf_P(.) Arduino ESP8266
zusätzliche Debug Meldungen generieren: [c] void setRelay(uint8_t power) { snprintf_P(log, sizeof(log), PSTR("Test")); addLog(LOG_LEVEL_INFO, log); snprintf_P(log, sizeof(log), PSTR("Power: %d"), power); addLog(LOG_LEVEL_INFO, log); . . . [/c] Obwohl die Syntax vielfach, auch unter
sonoff.ino: In function 'void setRelay(uint8_t)': sonoff:751: error: ISO C++ forbids applying 'sizeof' to an expression of function type [-fpermissive] snprintf_P(log, sizeof(log), PSTR("Test")); ^ sonoff:751: error: cannot convert 'double (*)(double)' to 'char
-
Thread
nRF51 TWI-Sensor auslesen
2]), 0), APP_TWI_WRITE(SENSOR_ALPHA_ADDRESS, REGISTER_SETUP[3], sizeof(REGISTER_SETUP[3]), 0), APP_TWI_WRITE(SENSOR_ALPHA_ADDRESS, REGISTER_SETUP[4], sizeof(REGISTER_SETUP[4]), 0), APP_TWI_WRITE(SENSOR_ALPHA_ADDRESS, REGISTER_SETUP[5], sizeof(REGISTER_SETUP[5]), 0), APP_TWI_WRITE(SENSOR_ALPHA_ADDRESS, REGISTER_SETUP[6], sizeof(REGISTER_SETUP[6]), 0), APP_TWI_WRITE(SENSOR_ALPHA_ADDRESS, REGISTER_SETUP[7], sizeof(REGISTER_SETUP[7]), 0), APP_TWI_WRITE(SENSOR_ALPHA_ADDRESS, REGISTER_SETUP[8], sizeof(REGISTER_SETUP[
-
Thread
Daten in Struct zuordnen und ins EEPROM speichern
eeprom_load(uint32_t addr, void *data, size_t len); aufrufen z.B. mit: eeprom_store(0, &my_struct, sizeof(my_struct)); eeprom_load(0, &my_struct, sizeof(my_struct)); VG Basti P.S. sizeof beachtet das padding des Kompilates!
Sorry: eeprom_write_block(&eep_datensatz.resetCounter,&counter,sizeof(counter));// schreiben Muss so: eeprom_write_block(&counter,&eep_datensatz.resetCounter,sizeof(counter));// schreiben