-
Thread
Struktinhalt ohne Komponentenname ansprechen
strtok_r Verison die einfachste Variante ist. Die Funktion ist so schwer nun auch wieder nicht [C] #include <stdio.h> char* split( char* string, char character, char** end ) { if( string != NULL ) *end = string; else string = *end; if( **end == '\0' ) return NULL;
heinz: Was ist das:\ Ein Pointer, der auf einen Pointer to char (also auf einen char*) zeigt?? [c] char* split( char* string, char character, char** end ) [/c] ^^^^^^^^^^^
-
Thread
signed int (16 bit) über CAN verschicken
caste es auf uint8* Das habe ich jetzt auch mal getestet und den zu sendenden wert festgelegt [c] tmp_16 = -200; debug_au16[0] = tmp_16; debug_au16[1] = 200; debug_au16[2] = 0xFF; debug_au16[3] = 0xFF; canSend(0x111, (uint8*)debug_au16[0], 8); [/c] jetzt sehe ich im CAN-Trace, dass byte
Adresse vom Array haben möchtest, nimmst du nur den Namen (oder den Adressoperator für Index 0) [c] canSend(0x111, (uint8*)debug_au16, 4 * sizeof(debug_au16[0])); [/c]
-
Thread
FixedPoint in C und C++
in C (bm00.c): [c] #include <stdfix.h> #include <stdint.h> #include <stdbool.h> volatile int16_t r1; volatile int16_t r2; typedef signed short _Accum fp_t; int main() { fp_t sum = 0;
Bit-Fix-Division [/c] durch [c] r2 = sum / 2hk; // 16-Bit-Fix-Divsion [/c] oder besser durch [c] r2 = sum * 0.5hk; // 16-Bit-Fix-Multiplikation [/c] oder noch besser durch [c] r2 = hkbits(bitshk
-
Thread
enc 28 j 60 bankwechsel geht nicht
is ready while(!(read_LAN(ENC28J60_REG_ESTAT) & 0x01)){}; sendStringRS232("nach while\r\n"); itoa((int)read_LAN(ENC28J60_REG_ESTAT),str,2); sendStringRS232("Statusregister: 0b"); sendStringRS232(str); sendStringRS232("\r\n"); sendStringRS232("vor
von sendStringRs232()) [c]LAN INIT vor while switch from bank 7 to bank 0 bankset ok bank 0 Statusregister: 0b1 nach while Statusregister: 0b1 vor for b0 ETXSTL: 0x0 sollte 0x00 heisen
-
Thread
I2C Beschleunigungssensor ADXL375
Hallo Leute, ich bin grade dabei den ADXL375 Beschleunigungssensor mit einem ATMega328PU über I2C auszulesen. Dazu hab ich mir die Dateien von Peter Fleurys Projekt I2CMaster in mein Atmel Solution eingebunden. Wenn ich die Verbindung mittels i2c_start(DEV, I2C_Write) teste, kommt eine 0 zurück
du die Adresse von der du lesen willst an den >Baustein geben. > >d.h. der Ablauf ist > > i2c_start( DEV_375 + I2C_READ ); > i2c_write( 0x00 ); // von Adresse 0 lesen > data = i2c_readNAK(); > i2c_stop(); Tut mir leid Karl Heinz, aber das ist falsch und das Programm im Bild sieht
-
Thread
Arduino Nano Led runterzählen
einer Prüfung ergibt immer, dass die Bedingung nicht erfüllt ist. Wenn Du einen Stringvergleich mit C-Strings machen möchtest, gibt es dafür die Library-Funktion "strcmp": http://www.nongnu.org/avr-libc/user-manual/group__avr__string.html#ga46f3cbd2de457c0fb340a1f379fc33ba Ein Stringvergleich auf "matching Strings" wäre also: [c]if (strcmp(message,"1105")==0)[/c] Dir fehlen die Basics der Programmierung mit C, eigne sie Dir an!
-
Thread
Encoder mit ATMEGA8
for(;;) { val += encode_read(); itoa(val, buffer, 10); // convert interger into string lcd_clrscr(); // clear display home cursor lcd_puts(buffer); // put converted string to display } } [/c]
string lcd_clrscr(); // clear display home cursor lcd_puts(buffer); // put converted string to display } } [/C]
-
Thread
stellen einer zahl isoliert weiterverarbeiten
Sprache: C Datentyp: im Moment kann ich die Zahl als string oder als float verarbeiten Das Ergebniss wird weiter"verrechnet" float wär also nicht schlecht. Ich habe noch garkeinen Code weil ich nicht weiss
Für c gibt es einige Funktionen in Libaries. Für deine Konvertierung von Zeichenkette -> Zahl kannst du in der STDLIB.h nachschauen. Für Strings gibt es die STRING.h Diese Zusatzfunktionen mit #
-
Thread
Boolscher Interpreter zur Laufzeit
= (A == B) AND (Y == X) OR ((D == F) AND (U == P)) if (value_1.active) { do_sth(); } [/c] Jetzt könnte ich den String von oben aufwändig auf dem µC parsen, oder eben bereits aufbereitet an den µC übertragen um das Ganze etwas performanter zu gestalten. Ich denke da an folgendes:
ausgewertet. Deshalb wollte ich eine fancy Lösung mit minimalem Rechenaufwand a la Lookup Table, wo der uC keine String Operationen durchführen muss . Das ist flott genug bei meinen Tests. Morgen werde ich meine komplette FW anpassen. Schönen Abend
-
Thread
strcmp() Leerzeichen Problem
Hi ich habe ein Problem und zwar will ich zwei Strings in C vergleichen diese beinhalten allerdings Leerzeichen und strcmp() kommt leider nicht mit Leerzeichen klar. Ich habe auch schon Google genutzt aber keine Lösung gefunden. Das einzige was mir
Hier eine Beispiel Konsolen Anwendung: [c] #include <stdio.h> #include <string.h> int main() { char answer[20]; scanf("%s", &answer); if(strcmp(answer, "OK OK") == 0) { printf("ready"); } else
-
Thread
HS USB MSC mit Stm32F4 und USB3300
4 ------ bLength : 0x16 (22 bytes) bDescriptorType : 0x03 (String Descriptor) Language 0x0409 : "MSC Config" ------ String Descriptor 5 ------ bLength : 0x1C (28 bytes) bDescriptorType : 0x03 (String Descriptor)
bNumInterfaces : 0x01 bConfigurationValue : 0x01 iConfiguration : 0x04 (String Descriptor 4) Language 0x0409 : "MSC Config" bmAttributes : 0xC0 D7: Reserved, set 1 : 0x01 D6: Self Powered : 0x01 (yes) D5: Remote Wakeup : 0x00 (no)
-
Thread
BCD Darstellung einer Dezimalzahl in C
klären in welcher Form die Zahlen vorliegen, bzw vorliegen sollen. Ich würde einfach sagen als String also z.B. "10010110" <-> "96" Sonst macht das eigentlich keinen Sinn oder wir reden aneinander vorbei.
printf( "hex: %s\n", buf ); } [/c] Peter
-
Thread
Qsort funktioniert nicht ordnungsgemäß
[c] har **store(char **storrage, long *length, char *item); int compare(const void*aa, const void*bb); int main() { char **mem_strings = NULL; long length = 0; mem_strings = store
compare getestet und ihr folgende Werte übergeben: [c] compare(mem_strings[0], mem_strings[1]) compare(mem_strings[2], mem_strings[3]) [/c] usw.. und erhalte nach konvertierung: [c] int compare(const void *aa, const void *bb){ char a = (char
-
Thread
atmega8, c, minicom und uart
> uint8_t c; > c = uart_getc(); > LCDWrite("emfangen: "); > LCDWrite(c); IIIIHHHHH - Da ist ein Bug! Du kannst mit einer C-Funktion nicht einmal einen String ausgeben und das nächste Mal
kommt überhaupt nicht mehr vor, oder ? Nein, aber das selbe Problem ist immer noch vorhanden: [c]LCDWrite("hello sent"); ... LCDWrite(buffer2[i]); [/c]Du rufst die selbe Funktion einmal mit einem Pointer auf einen String auf, und einmal mit einem einzelnen Zeichen. Und da wir hier in C und nicht
-
Thread
größere Daten-Dateien im C-Projekt
Dude es nicht schafft auf der Kommandozeile ein \0 an den Text anzuhängen um aus ihm einen gültigen C String zu machen [code] printf '\0' >> foo.txt [/code] Man sollte auch noch sagen dass sein Vorschlag eventuell "_binary_foo_txt_size" zu nehmen meines Wissens nicht mehr in allen Umgebungen funktioniert
Build-System > die generierte Datei aktuell hält ist's eigentlich egal. Ein Problem davon ist dass solche C-Dateien mit riesigen Arrays ziemlich lange zum Kompilieren brauchen, außer man definiert es als String-Literal statt als Array, da muss man aber höllisch mit Escape-Sequencen aufpassen (GIMP macht(e)
-
Thread
smartes printf
------------- Header: #ifndef __THPRINTF_H__ #define __THPRINTF_H__ int thprintf(char *string, ...); #endif C-File: // Th printf /* Author: Thorsten de Buhr mail: thorsten@lasertechnix.de Use: Use is free, could run or not ;-) U may change every printf in cour code
else fputc(*string, 0); } while(*(++string)); va_end(tag); return(0); } Vllt sind für den ein oder anderen ein paar anregungen drin. Greetz, Th. PS: Ich liebe solche spielchen mit C ;-)
-
Thread
Kommastelle
öffnet sich ein neuer Sack von Problemen. Die pragmatische Lösung lautet: Gar nicht. Die meisten µC unterstützen von Haus aus nur Ganzzahlen. Da es bei deinem µC so ist, wirst du mit den ganzen Zahlen alleine auskommen müssen. Die praktische Antwort lautet: Wieviele Nachkommastellen willst du
sowieso 2'er Potenzen. Wir müssen also für die Anzeige in beiden Fällen eine Umrechnung in einen String vornehmen. Ob diese Umrechnung nun einen String formatiert zur Basis 10 oder 2 oder 16 (HEX) erledigt ist dabei irrelevant. Die Berechnungen einer Fixpoint Zahl zur Basis 2 sind dagegen wesentlich
-
Thread
Messdaten in csv oder Textdatei schreiben
die funktioneren seit MS-DOS 3.x, sie funktionieren nur nicht in command.com bzw. cmd.exe. Dein String da oben bedeutet nämlich in C: [pre] C:<TAB>emp<TAB>est.txt [/pre] Noch zum eigentlichen Problem: wenn der PC sowieso die ganze Zeit verbunden ist, dann bringe den STM dazu, eine serielle Schnittstelle
Konvertierung geschrieben, unkomfortabel. Bei Anwendungen, die ich selbst in der Hand habe, schreibt der µC direkt einlesbare Formate.
-
Thread
TCP/IP Stack Micrchip/ WLAN-Modul
SNMP_MAX_COMMUNITY_SUPPORT (3u) #define NOTIFY_COMMUNITY_LEN (SNMP_COMMUNITY_MAX_LEN) // Default SNMPv2C community names. These can be overridden at run time if // alternate strings are present in external EEPROM or Flash (actual // strings are stored in AppConfig.readCommunity[] and // AppConfig.writeCommunity
arbeitet ebenso die for Schleife ab und bleibt dann meines Verständnisses in Zeile 316 von Helpers.c hängen. Nämlich dem folgenden Code: [c][/c]while(1) { ClrWdt(); #if defined(__C30__) while(!IFS0bits.AD1IF); <- hier!!! #else while(!IFS1bits.AD1IF); #endif
-
Thread
AVR String-Array
Moinsens allerseits, beim Aufräumen meines Programmcodes sollte auch ein String-Array (beinhaltet ein haufen an Strings) vom RAM in den Flash verbannt werden, was allerdings zu einigen Problemen führte. Im RAM hat dieses Array folgende Gestalt: [c] static const char * sentence_Array
"} }; [/c] im LSS-File wird jedoch deutlich, dass der Compiler für jedes Array-Element nur einen Zeiger speichert (wie erwartet), welcher auf einen "Nichtverwendeten Bereich" im Flashspeicher zielt. Die Strings
-
Thread
uart_getc von Peter Fleury
} [/c]
meine Probleme,Deshalb fragte ich ja hier. Wieso machst du es nicht einfach so? (Beispielcode) [c] int n, c; n = 0; for (;;) { c = uart_getc(); if (!(c & UART_NO_DATA)) { Linein[n++] = c; if ((c & 0xFF) == '\r') { break; } } } [/c] Sobald die Schleife
-
Thread
Strings im Flash ablegen, oder nicht?
AVRs und und dem avr-gcc. Soweit funktioniert auch alles, ich frage mich jedoch wann es Sinn macht Strings im Flash abzulegen (so wie im Tutorial beschrieben). Mal angenommen ich habe folgenden Code: [c] uart_output("Dies ist eine Test-Ausgabe aus dem RAM"); [/c] vs. [c] uart_output_P(PSTR("Dies ist eine Test-Ausgabe aus dem Flash")); [/c] Option #2 braucht letztendlich sogar mehr Flash, wenn man es kompiliert. Das macht vermutlich auch Sinn, weil der String ja in beiden Fällen im Flash steht, im letzteren aber noch etwas Overhead
-
Thread
fgets bzw gets richtig anwenden
der Funktion übergeben. Der Rückgabewert wird nur benötigt > um den Fehlerfall zu überprüfen. Der String ist nach dem Aufruf in dem > character Array. > > benutzt du auch brav fclose() um das Handle wieder zu schließen wenn du > es nicht mehr brauchst? > > Du brauchst ein C Buch! Hallo! Ja
cursor to the home position lcd_home(); // main program while(1) { fgets(myString, 100, kbin); // Hier sollte dann mit myString weitergearbeitet werden wenn fgets fertig ist. } } [/c] >Du kannst nicht fgets mehrmals aufrufen und hoffen, dass dir das
-
Thread
UART Baudrate runterrechnen
(FOGout); Serial.print(",A\r\n"); } [/C]
[/C] Moral von der Story: Kenne dein Handwerkszeug!
-
Thread
Zeiger auf 2D Char-Array - casten
ok :) Also meine Bildchen liegen als .xpm im PROGMEN: [c] static char xpm_folder_opened[17][17] PROGMEM = { "16 12 4 1", ". c #000000", " c None", "+ c #F0FF80", "@ c #5B5746", " .... ", " .++++. ", " .++++++. ", "...
+= symbol_zsize); [/c] Eine andere Alternative wäre, Deine Arrays etwas anders zu definieren: statt als zweidimensionales Array als Array aus Pointern auf Strings. Das würde Einiges an Speicher sparen, wenn die
-
Thread
Unterschied zwischen strcpy und memcpy ?
[c] memcpy (dest,src,strlen(src)); [/c] ist so ziemlich das Gleiche wie [c]strcpy (dest,src); [/c] kbuchegg hats schon richtig gesagt, bei Strings sollte man memcpy nicht benutzen.
) aufgebraucht ist, dann macht strncpy /kein/ abschliessendes 0-Byte an den Zielstring! Mit [C] char dst[4]; strncpy( dst, "123456", sizeof(dst) ); [/C] ist zwar die unmittelbare Gefahr beim strncpy gebannt, allerdings hat man dann in dst keinen gültigen String mehr und wird spätestens
-
Thread
Software-USB (obdev) als Massenspeicher
Configuration Deskriptors inkl. Interface- und Endpoint-Deskriptoren 22. Anforderung von 255 Bytes des String-Deskriptors 0 (Unterstützte Sprachen) 23. Übertragung des String-Deskriptors 0 (EN/US) 24. Anforderung von 255 Bytes des String-Deskriptors 2 (Device-Name) 25. Übertragung des String-Deskriptors 2 ('morsix3330') 26. Anforderung des String-Deskriptors 0 (...) 27. Übertragung des String-Deskriptors 0 (EN/US) 28. Anforderung des String-Deskriptors 2 (Device-Name) 29. Übertragung des String-Deskriptors 2 ('morsix3330') 30. Nüscht...
-
Thread
auf struct's in Funktion zugreifen
TX_Ringbuffer = {0,0, }; ... int main(void) { ... char Text[] = {"name"}; add_string_to_uart_tx_buffer(TX_Ringbuffer, Text); ... } [/c] uart.h [c] volatile extern struct T_Ringbuffer TX_Ringbuffer; void add_string_to_uart_tx_buffer(struct T_Ringbuffer* TX_Ringbuffer, char* stringarray); [/c] uart.c [c] #include "uart.h" #include "main.h" void add_string_to_uart_tx_buffer(struct T_Ringbuffer* TX_Ringbuffer, char* stringarray) { char zeiger = 0; do { TX_Ringbuffer
-
Thread
kann ein on/off Signal (keine daten) an rs232 an PC gesendet werden?
Nent sich Watchdog (Wachhund) und ist in µC enthalten. µCs haben oft auch noch ne RS232. Ein kleine Program in einen µC deiner Wahl und die Software auf dem PC der über die serielle mit dem µC kommuniziert.
Leitungslängen wohl auch eher unerheblich. Eine Suche nach MySQL und serielle Schnittstelle für MS Visual C liefert vermutlich schon den gesamten Code. Wenn Simon von PHP Ahnung hat, wird's wohl auch schnell mit C klappen. Und wenn nicht, kann er ja fragen. Aber µC und Arduino oder Monoflop ist mit Kanonen
-
Thread
Atmega16, Ds1621, Display
( Buffer ); lcd_string("Grad"); while(1) { } return 0; } [/c]
( Buffer ); } lcd_string(" Grad"); } } [/C]
-
Thread
Problem Strings über USART zu senden
Hallo, ich glaube ich habe ein kleines c-Problem. Ich versuche einen String über USART1 vom Mega128 auszugeben. Ich habe zwei Prozeduren. Eine, um Zeichen zu senden, eine Andere um Strings zu senden. Kurz gesagt: Die Prozedur usart1_sendByte
nicht richtig übertragen werden, dann habe ich es geschafft. Any ideas? (8 Bit-Modus ist an: UCSR1C = (3<<UCSZ10); ) Gruß, Klaus
-
Thread
char-String mit directive vergleichen
Mit Ein == Vergl vergleichst du nicht die Strings. Vielmehr werden die beiden Zeiger auf den jeweiligen Anfang der Strings verglichen. Um Strings zu vergleichen, kann man selbst eine Schleife bauen oder gleich strcmp() verwenden. -> C-Grundlagen
Du hast kein Wort mit einem anderen verglichen, sondern die Adresse eines Strings mit derselben Adresse desselben Strings. Da zweimal "dao" auftritt, hat der Compiler in seiner unendlichen Weisheit beschlossen, dass dafür beidesmal derselbe String ausreicht. Das ist nicht garantiert
-
Thread
Mega164 und GCC: strstr() funktioniert nicht in while schleife
korrekte Ergebnis. D.h. der Returnwert liefert 0, was bedeutet, dass der strstr() Aufruf den "GSM_ret" String im "uart_rx_buffer" gefunden hat. [c] temp0_16=GSM_wait(5000); // zweiter Aufruf nur zur Fehlersuche GSM_Wake_up(); [/c] usw. Wo liegt mein Fehler. Ich steh im Moment föllig hilflos da
grundsätzlich durch das Beschreiben mit \0, bevor ich diesen verwende. Somit ist auf jeden Fall ein String Terminator am Ende des Strings. Zusätzlich frage ich das vom GSM Modul immer am Ende gesendete \n ab, um danach ein \0 anzuhängen. [c] ISR(USART0_RX_vect) { uint8_t data; // Daten
-
Thread
Teil eines byte Arrays in Variable
ein C Buch. Ja, auch die mitgelieferten Funktionen der C Standard Library gehören zu C und man sollte sie (bzw. die meisten) kennen.
[i-MSGBEGIN] = myArray[i]; } distanceA[6] = '\0'; //Ende des String Arrays distance=(atoi(distanceA)); Serial.println(distance);[/c] Danke noch an die wenigen die mit was anderem als "ich bin so toll und du nicht" geantwortet haben.
-
Thread
C++ auf Mikrocontrollern
, also dem Einsatz auf uC ohne zugrundeliegendes OS recht wenig C++. > Man findet > massenweise Information und Unterlagen zur µC-C-Programmierung, aber > sehr wenig zu C++. Liegt das wirklich daran, dass C++ für die >
Compiler-Optimierung wird so viel Code generiert wie das C-Äquivalent auch bräuchte. > Gerade wenn man die STL nutzt. Warum denken eigentlich immer alle dass die stdlib/STL nur aus std::vector und std::string besteht? Da gibt es noch viel mehr nützliche Dinge
-
Thread
Smartmeter auslesen
Schaltung wird mit 3.3v versorgt und es hängt ein Arduino dran. Ganz simples Programm: [code] String inputString = ""; boolean stringComplete = false; // the setup routine runs once when you press reset: void setup() { Serial.begin(9600); inputString.reserve(200); Serial.println(
serialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); inputString += inChar; if (inChar == '\n') { stringComplete = true; } } } void loop() { if(stringComplete) { Serial.println(inputString); inputString =
-
Thread
Hilfe bei HTML-Code
besorg dir lesestoff zum thema "arduino c++ strings"
ist der HTML-Code gar kein Code. Für den Server ist der HTML-Code einfach nur ein ganz normales String Literal. Genau so, wie das erste C-Programm [c]printf("Hello World")[/c] schreibst du [c]send_wlan("<html><body><h1>ESP32-DevKitC LED ON/OFF</h1></body></html>")[/c]
-
Thread
Funktion in Variable speichern und Variable in andere Funktion aufrufen
unsigned int x; long int string() { char string[5] = "HALLO"; char i; for(i=0; i<6; i++) { if(i==0) { switch(string[i]) { case 'A': x = bitmuster_a(); //usw. } void test(unsigned int x) { x; } void main
= bitmuster_a(); break; }} switch(string[i]) { if (i==1) { case 'B': var2 = bitmuster_b(); break; }} switch(string[i]) { if (i==2) { case 'C': var3 = bitmuster_c(); break; }} switch(string[i]) { if (i==3) { case 'd
-
Thread
LCD funktioniert ab 4Mhz nicht mehr
damit meine Uhrzeit genau ist. Aber es Funktioniert ja noch nichtmal mit dem Internen 8 Mhz Takt. [c]#include <avr/io.h> #include <avr/interrupt.h> #include "lcd-routines.c" #include <util/delay.h> extern int sprintf(char *__s, const char *__fmt, ...); //Umwandeln einer Zahl in einen String
Stunde set_cursor (11, 2); if (std_of<10) lcd_string ("0"); lcd_string (std_of_string); //Zeige Ausschaltzeit Minute set_cursor (14, 2); if (min_of<10) lcd_string ("0"); lcd_string (min_of_string); if (y==1)
-
Thread
True =1 false =0 kann man damit rechnen?
dass man statt 1 : 0 auch > andere Werte einsetzen könnte? Klar. Du könntest auch schreiben: [C] x = (i == 4 ? 3: 2); [/C] Rudi D. schrieb im Beitrag #2620966: > Könnte das für eine formatierte Ausgabe eines Strings am Display > brauchen. Denkst du da evtl. an sowas? [C] printf("Das
(str); [/c] So kann ich die 16. Position auch verwenden und die Lesbarkeit wird besser, falls der letzte String ein - Vorzeichen hat und direkt an den 2. String anschließen würde. Danke für die schnelle und
-
Thread
c > struct > funktionszeiger casten
Ansonsten, wenn wirklich, dann den Umweg über void zeiger. [c] typedef struct{ char id; void *receive_function; }lora_cmd_t; [/c] Oder was mit union basteln.
den online debugger gehauen und der wirft mir da > fehler, siehe foto. Ja es muss so sein: [c]struct return_typ result = (lora_cmd[1].receive_function)();[/c]
-
Thread
UART String senden
String zurücksenden möchte bekomme ich eine Endlosschleife.. Kann mir wer sagen woran dass liegt? Hier der Code: [c]#define F_CPU 16000000UL #define BAUD 9600UL #define MYUBRR F_CPU/16/BAUD-1 #include
RXC0))); // Daten zurückgeben return UDR0; } ISR(USART_RX_vect) { UART_transmitString("Hallo Welt!"); } [/c]
-
Thread
AES 128 CBC FIPS 197 entschlüsseln
dass aesKey.getBytes(StandardCharsets.UTF_8) > korrekt sein kann: entweder ist der Key ein Hex-String, dann muß der > nach Binary konvertiert werden, oder er ist bereits Binary, dann ist das > UTF_8 verkehrt. Deine Aussage mit dem Chaining versüßt mir den Tag. U.a. habe ich auch in C++ die AES
0182086EB800C2086E340002FD170000 [/code] Du mußt in Deinem Java Code die richtige Repräsentation der Bytes beachten, z.B. der Hex-String "ABCD" ist etwas anderes als die beiden Bytes 0xAB 0xCD.
-
Thread
float in einem ascii speichern
Hallo, ich habe einen float Wert, den ich gerne in einem String übertragen möchte. Der Vorteil des Strings wäre, dass ich einfach eine Reihe an Werten aneinander schreiben könnte und immer mit dem String-Ende wüsste, wann Schluss ist. Ich könnt also die
den ganzen String von vorne an bis zum Ende lesen. Für embedded Software sind solche Strings i.A. wenig geeignet. Georg
-
Thread
Ökonomische Datenübertragung
Kurzes Beispiel ohne union. [c] Type v1; unsigned char *ptr = (unsigned char *)&v1; for (int i = 0; i < sizeof(Type); i++) { uart_send(ptr[i]); // oder uart_send(*ptr); ptr++; } [/c]
Zeigen wo die Zahl liegt. Zeiger=&Wert; //Zeigt auf das Erste Byte vom Wert (BFh); printf("%c", *Zeiger); //Gibt den ASCII Wert von BFh aus. printf("%c", *(Zeiger+1)); //Gibt den ASCII Wert von 9Dh aus. printf("%c", *(Zeiger+2)); //Gibt den ASCII Wert von F3h aus. printf("%c", *(Zeiger
-
Thread
Function-Pointer Problem nach Stromunterbrechung
; // submenu of this item char *data; // the raw data string to show void (*fn)(); // function to execute at startup } menuentry_t; [/C]
Beitrag #3102139: > Was mir auch gerade auffällt. Ich habe gar keine \0 Terminirung in > meinem Strings. Kann das auch zu diesem Problem führen? Doch hast du. "NO DATA" ist ein 0-terminierter String. Alle String-Literale sind automatisch 0-terminiert. Kann es sein, dass du ein C-Buch brauchst
-
Thread
Über Mikrocontroller Beschleunigungssensor auslesen
Update: Ich arbeit mit AVR Studio und C
// Convert z To String itoa(z, string, 10); // Print z on LCD LCDWrite(string); // Set CoursorPosition to [0,0] LCDSetCursorPos(0,0); } return 0; }[/c]
-
Thread
Speicherplatz abfragen
die Adressen der einzelnen Strings enthält, z.B. für 10 Strings. Wenn die Strings sich nur selten ändern, dann kannst Du sie auch im EEPROM oder Flash ablegen. Peter
das nichts, weil der Speicher problemlos in MMU-Blöcken herumgeschoben werden kann, aber auf einem µC sieht das schon anders aus.
-
Thread
Projekt: Digitale Steuerung der Gehäuseelektronik im PC
0x0) # put char function def lcd_putc(self, char): self.lcd_write_char(ord(char)) # put string function def lcd_puts(self, string, line): if line == 1: self.lcd_write(0x80) if line == 2: self.lcd_write(0xC0) if line == 3: self.lcd_write(0x94) if line == 4: self.lcd_write(0xD4) for
noch einen ganze Ecke andere Sachen zu tun hat. Und wenn das I2C Interface des RPI dann keinen Sendebuffer hat wirds halt lahm.
-
Thread
Funktionsaufruf mit Zeiger
dabei sind. Bei welchem Beispiel wird denn der Name > nicht in einen Zeiger konvertiert? char c[100]; sizeof(c);
welchem Beispiel wird denn der Name > nicht in einen Zeiger konvertiert? Versuch mal das: [C] char string[] = "foo"; string++; [/C] und anschließend das: [C] char * string = "foo"; string++; [/C] Du wirst einen Unterschied feststellen.