-
Thread
Verschiedene Sprachen in Benutzeroberfläche
. Ein "String-Array" ist in C ja nur ein Array von Pointern auf Strings (und die liegen an anderer Stelle und belegen eben nur so viel Platz wie nötig). georg schrieb im Beitrag #5448092: > Da gibt es nichts
Platz verschwendet. Ein "String-Array" ist in C ja nur ein > Array von Pointern auf Strings Für ein "String-Array" gibt es zwei Möglichkeiten: Man kann entweder ein Array aus char-Arrays machen, dann ist aber jedes Element so
-
Thread
RS232 unter C auf Atmega8 konfiguriren
("\n PB = PortB alle Bits ON"); uartPutString("\n pb = PortB alle Bits OFF"); uartPutString("\n PC = PortC alle Bits ON"); uartPutString("\n pc = PortC alle Bits OFF"); uartPutString("\n PD = PortD alle Bits ON"); uartPutString("\n
(b,c,d)"); uartPutString("\n GX = get Port(B,C,D)"); uartPutString("\n Gx = get DDR(b,c,d)"); uartPutString("\n Ox = config Port(B,C,D) = OUT"); uartPutChar('\n'); for (int i=0;i<42;i++) uartPutChar
-
Thread
Überprüfen ob String ein Zahl ist
Danke für die Tipps. @Karl heinz Buchegger: Deinen Code verstehe ich nicht ganz [c] if( *string == '+' || *string == '-' ) string++; [\c] OK. Wenn das erste Zeichen ein Vorzeichen ist, geht es weiter. [c] while( *string && ( isdigit( *string ) || *string == '.' )
&& ( isdigit( *string ) || *string == '.' ) ) [/C] ein wenig doppelt gemoppelt [C] while( isdigit( *string ) || *string == '.' ) [/C] würde es auch tun, denn '\0' ist weder ein Digit, noch ist es '.' und führt
-
Thread
MP3-Player Bauteile für wenig Geld
Section M/O Min Length Proactive SIM command Tag 12.2 M Y 1 Length (A+B+C) - M Y 1 or 2 Command details 11.6 M Y A Device identities 11.7 M Y B Text string 11.15 M Y C Section sind die
was einem Hexwert von 41 entspricht genau so als (65)dec im Puffer an. Dann folgt später: | 'C = Byte-String, der dann den ASCII-Wert enthält der Anzeige | 'D = Hex-Wert vom ASCII | 'Anzeige-Bit zu Byte zusammensetzen | C = C + A <-- warum wird das hier gemacht?
-
Thread
UARTS am Glühen?
ein Zeichen Platz denn Zeichen anfügen und hochzählen. Ansonsten letztes Zeichen NUL und String fertig melden und Zähler zurücksetzen. Malung der Schleife: Wenn ein String vollständig, dann Zähler nullen String senden von vorn. Falsch verstanden?
[C] while(1) { send_GSM ("at"); //sende an GSM-Modul "at" (gefolgt von <CR>) if(uart1_str_complete == 1) //wenn die ISR einen vollständigen String hat { uart2_puts (uart1_string); //ans
-
Thread
Fehler in der Float Funktion
@ Martin Schmid (paul-stanley) Ein Blick in ein C-Grundlagenbuch enthüllt. [c] char string[6]; for (double f=-15.0; f<15.0; f=f+1.111) { sprintf(string,"e % #5.1f",f); LCD_Print(string, 6, 113, 2, 1, 1, yellow, black); delay_ms
[c] int main(void){ char string[20]; for (double f=-15.0; f<15.0; f=f+1.111) { sprintf(string,"e % #5.1f",f); printf(string); //Testausgabe printf("\n"); //Nur damit Ausgabe untereinander
-
Thread
String und struct
nicht für jeden String einzeln mit String_Label.String_01 bis String_Label.String_04 Wie kann ich dieses machen? *.c Datei // hier wichtig ist die Adresse des FLASH [c]#pragma romdata flashconfig=0xC000 const
romdata [/c] *.h Datei [c]typedef struct { unsigned char String_01[32]; unsigned char String_02[32]; unsigned char String_03[32]; unsigned char String_04[32]; } typeString_Label; [/c] Vielen
-
Thread
Pointer String mit PROGMEM?!
nicht. Ich möchte gerne die Variablen mit im Programmspeicher einbetten (sind Konstante Pointer Strings), aktuell sind sie ja im SRAM. [c] AppStrings_t const Strings PROGMEM; // das bewirkt nichts... [/c]
Also in den meisten Quelltexten sehe ich nur Strings mit Arrays. [c] char Str[] = "Test_String"; [/c] Wie macht ihr das denn?
-
Thread
LCD DM19264A (KS0108B Controller)
Chip's nochmals einschalte, kommt auch der Text auf dem Display. Nur 1. Treiber kommt nichts... [c] GLCD_Initialize(); GLCD_ClearScreen(); GLCD_GoTo(32,0); GLCD_WriteString("+-------------------+"); GLCD_GoTo(64,1); GLCD_WriteString("| Universal |"); GLCD_GoTo(64,2); GLCD_WriteString
|"); GLCD_GoTo(64,7); GLCD_WriteString("+-------------------+"); GLCD_WriteCommand(0x3f, 0); // <--- Text erscheint nun! GLCD_WriteCommand(0x3f, 1); GLCD_WriteCommand(0x3f,2); [/c] Ich habe als Vorlage dies genommen: http
-
Thread
Define Makros in C
>" 2 # 1 "test.c" 1 [/c]
keine "Destringification". Aber hier der ultimative, absolut dreckige Trick, wie es doch geht: [c] #include <avr/io.h> #define IRMP_PORT_PIN C6 #define STRINGIFY(s) TO_STRING(s) #define TO_STRING(s) #s #define IRMP_PORT (*(&PORTB + 3 * (STRINGIFY
-
Thread
Ist das überhaupt ein String?
ein String am Ende mit irgendwas >bestätigt wird. Joa, in C wird ein String mit einer binären Null ('\0') abgeschlossen. Diese Terminierung geschieht automatisch beim einfassen des Strings in ' " '. Also z.B. [C] char test[] = "Ich bin ein String"; [/C] Im Speicher steht dann dieser String mit einer "\0" am ende. Daran kann bei der Ausgabe dann erkannt werden wo dieser zuende ist. Das gleiches würde auch
-
Thread
ESP8226 mit Bad Request
P. F. schrieb im Beitrag #5260180: > [c] > putString("GET > /esp8266/haawrite.php?b0=8&b1=50&b2=0&b3=0&b4=0&b5=17&b6=80&b7=0 > HTTP/1.1\r\nHost: 192.168.1.100\r\n\r\n"); > putString("Connection: close\r\n"); > [/c] "Connection: close
if (count >= sizeof(_uart_string) - 1) { count = 0; //Zähler zurücksetzten } } } [/c]
-
Thread
SIM800 GSM: Welche Library für Arduino?
String response = serialSIM800.read(); if(response == "OK\r\n") .... [/c]
ich hab dem einen char* Puffer übergeben und dann nach der eingelesenen Antwort einfach gesagt: [c]String response = String(buffer);[/c] Vorher muss man mit setTimeout() sagen wann readBytes() aufhören soll wenn keine Bytes mehr reinkommen
-
Thread
Oled mit I2C läuft nicht
ADME:X:DERP:DE:1123 ich verbinde das Display mit einem Atmega 328 und nutze Arduino mit einem i2C Scanner und auch der i2cOled ino-datei. Leider wird a das Display nicht als I2C erkannt und b die i2cOled läuft auch nicht. Das Display bleibt schwarz. Habe direkt 5V, GND und SDA,SCL angeschlossen.
void sendStrXY( char *string, int X, int Y) { setXY(X,Y); unsigned char i=0; while(*string) { for(i=0;i<8;i++) { SendChar(pgm_read_byte(myFont[*string-0x20]+i)); } *string++; } }
-
Thread
[C] enum Warnungen
g++: No such file or directory; Später gibt es tatsächlich nützliche neue Meldungen: [pre]version.c:3: warning: "_GNU_SOURCE" redefined 3 | #define _GNU_SOURCE | <command-line>: note: this is the location of the previous definition info_up.c:73:7: error: initializer-string for 'const
B. schrieb im Beitrag #8015775: > Au weia. Was macht der gcc daraus? Weiß der, dass das nie als String > benutzt wird optimiert die '\0' am Ende weg? Er "optimiert" nicht, sondern es ist in C so, dass in so einem Fall kein \0 angehängt wird, also: [c] char x[6] = "Hallo"; // hängt \0 an char
-
Thread
Windrichtungserkennung mit Hall Sensor
(a); Serial.println(" Grad"); [/c]
vect_imag, vect_real); > wind_dir=(int)(dir_rad/M_PI*180.0); Verstehe ich noch nicht ganz, was ist [c]*M_PI[/c] ?
-
Thread
Tastenabfrage in C++
Hallo, hat zwar nicht direkt was mit uC´s zu tun, aber vielleicht kennt sich hier jemand mit C++ aus. Folgendes Problem: Hab ein C++ Programm auf meinem PC am laufen, bei dem ich den Wert einer double-Variablen über die Tastatur ändern
Hallo marco, Ich weis ja nicht, was du für eine Software benutzt aber im MS Visual C++ V6.0 findest du in der Hilfe einen Punkt namens "Data Conversion" hier sind sehr viele Konvertierungs-Funktionen erläutert wire z.B. atoi() >> konv. string in integer, atof() >> konv. string in float
-
Thread
Arduino Uno R4: Besonderheiten und Abhilfen
M. schrieb im Beitrag #7943443: > Wenn ich mich recht erinnere ist Arduino so intelligent, alle Strings > ins RAM zu kopieren, Das ist keine spezielle Eigenschaft von Arduino, sondern von C/C++. Um dem entgegen zu wirken, benutzt man auf AVR PROGMEM, PSTR und was sonst noch daran hängt. Arduino
, wie C funktioniert. Der Zugriff auf Strings erfolgt immer mittels Zeiger. > puts(welcome) Kopiert den String nicht auf den Stack, sondern legt höchstens dessen Adresse auf den Stack. Bei so wenigen
-
Thread
MPLAB C18 Compiler Codeoptimierung??
das der String im Flash liegt. Eine Ausgabefunktion für Zeichenketten aus dem ROM auf ein LCD sieht dann z.B. so aus: [c] void lcd_write_string_rom(unsigned char x, unsigned char y, static const rom char *ldata
write_string(), wo dann 'rom char*' steht. Ich habe den Code mal durch den C18 gejagt und laut map-file ist es erwartungsgemäß der Flashspeicher der fast voll ist. Die Variablen belegen ja nur gut 30 Bytes.
-
Thread
C Code char Zahlenreihe zu Int Hexwerten
, b, c, d, e, f. Wenn der String "1234" wäre, liefert der code den richtigen Hex 0x12 Wenn der String "1A23" wäre, liefert der code den Hex Wert 0x21 Danke&Gruss
default : return 0 ; > } kürzer (und die Funktion richtig benannt. Die konvertiert keinen String sondern ein einzelnes Zeichen!) [c] uint8 hexDigit2int( char hexDigit ) { if( isdigit( hexDigit) ) return hexDigit - '0'; if( hexDigit >= 'a' && hexDigit <= 'f' ) return hexDigit
-
Thread
C++ if-Bedienung
müssen funktioniert dies perfekt [c]if((var_tast1 == 2) && (var_tast2 == 1))[/c] Sobal die if-Bedingung jedoch mehr als 2 Variabeln abfragen muss, wird die if-Bedienung nie ausgeführt. [c]if((var_tast1 == 3) && (var_tast2 == 2)
); // Initialize execution framework factory.build(); [/c]
-
Thread
Viele Fragen und ein kleiner Blog
zl,low(FString*2); ; Z Pointer laden ldi zh,high(FString*2); rcall serout_string ; Ausgabe des Strings RS232 Routine ldi Dummy1,0b01010101 out PortC,Dummy1 ; Musster raus OK. The_End: rjmp The_End ; Ausgabe eines Strings aus dem Flash serout_string
neu Warten ; Passwort: auf RS232 ausgeben. Da U gesendet wurde ldi zl,low(PasswortString*2) ; Z Pointer laden ldi zh,high(PasswortString*2) rcall serout_string ; Ausgabe des Strings RS232 Routine PasswortEingabe: lds Dummy1,UCSR0A sbrs Dummy1,7 ; warten
-
Thread
uC und Bluetooth HID Protokoll
vorhabe (etwas vereinfacht) Nehmen wir an BT-Modul ist als Keyboard konfiguriert... UC erzeugt strings und schickt die per UART an das Modul. Ich will dann irgendwie Vom Host dem UC andere Befehle geben, z.B. ändern des strings... dann soll er wieder die strings an den host senden!
schrieb im Beitrag #3430316: > Nehmen wir an BT-Modul ist als Keyboard konfiguriert... > UC erzeugt strings und schickt die per UART an das Modul. Ich will dann > irgendwie Vom Host dem UC andere Befehle geben, z.B. ändern des > strings... dann soll er wieder die strings an den host senden! Dafür musst
-
Thread
Handyansteuerung über uC
die Befehle die du benötigen wirst. AT-Befehle http://www.nobbi.com Da das S55 nur PDU-strings versenden kann würde ich mir an deine Stelle das Programm pdyspy herunterladen. Diese Software erstellt automatisch diesen String. 1.mit pduspy den pdu-string erstellen und in die zwischenablage
paar Monaten bin ich scho dahinter *g*...) und einiges ausprobiert! Leider scheiterts aba bei mir am C-Code, weil ich noch net wirklich weiss wie ich die Datenübertragung OHNE SMS realisieren kann! MfG, Max
-
Thread
Teilstring aus String auswählen und in neuen string kopieren, AVR
Hallo, Ich bin noch recht unerfahren was C-Programmierung angeht und habe hier in meiner Arbeit die Aufgabe, eine Funktion zu schreiben, die aus einem String einen Teilstring auswählt und ausgibt. Das ganze mache ich mit dem Atmel Studio 6.2.
{ static char repositoryStr[150] = "$HeadURL: https://xxx.xxx.xxx.xxx.xxx/svn/zu/kopierender/String/src/ControllerSolution/ControllerProject/src/sqVersion/version.c $"; static char branchStr[51]; uint16_t length; char *frontBorder = strstr(repositoryStr,"svn"); // vorderes ende des zu
-
Thread
Strings schreiben und entleeren
schreibe definiere ich ein > Array mit 6 Einträgen, also 0-5 oder? ja > Und das Ende des Strings schreib ich ja als XXX[Y] = '\0' > Ist das dann ein Zeichen? Eigentlich dann ja schon oder? ja, ist noch eines, es braucht auch seinen Platz. Es kennzeichnet in C das Ende eines Strings.
Für Zeichen nimmst du einfach char. Und um es nochmal deutlich zu sagen: Um einen String zu leeren ist die beste Lösung immernoch ein einzelnes [c] uart0_command_buffer[0] = 0; [/c]
-
Thread
Variables Feld für NMEA Protokoll
stringp != ',') > { > nmea_packet[count]= string[x][y]; > count ++; > } > x++; > count++; > } > [/c] Das wird nichts.
&Ritchie Programmieren in C Allerdings: Stringverarbeitung steht und fällt damit, dass man die C-Vereinbarung "Ein C-String ist: solange Zeichen bis ein '\0' Zeichen kommt" ernst nimmt. Alles andere ist reines Arbeiten mit
-
Thread
C-Problem mit Rapberry Pi
ein Variablennamen hinein, oder direkt ein Wert, aber keinen String (Zeichenkette). Das dort ist völliges Chaos -> C-Buch kaufen
C!
-
Thread
AVR64DD20 - USART stürzt bei großem Buffer ab
0x0C 0x94 0x51 0x00 - warum stoppt es nicht an dieser Stelle, ich dachte immer, in C seien Strings mit 0x00 terminiert?
wieder, also > ganz grob nach 6 s entsprechend 64 KiB bei 115200 kBd) und findet dort > 0x0C 0x94 0x51 0x00 - warum stoppt es nicht an dieser Stelle, ich dachte > immer, in C seien Strings mit 0x00 terminiert? Gute Frage.
-
Thread
Menü Programmierung ATMega32
Taste, Buffer, 2 ); lcd_string("Buffer"); } [/c] Was mache ich noch falsch??? Die Augabe im LCD ist "Buffer" Danke dir schon mal. René
Es muss heißen: [c]lcd_string(Buffer);[/c] Du willst ja nicht die Zeichenkette "Buffer" ausgeben sondern den Inhalt der Variable Buffer.
-
Thread
µC zu schnell bzw. USART zu langsam
> Warum zwei Bytes? Es sind ASCII-Strings in C, da kann man das alles > standardkonform machen, 0x00 = Stringende. Ich denke er will alle möglichen Geräte dranmachen. Da geht gar kein Endzeichen, weil die geräte könnten ja auch binäre
@ Uwe (Gast) >> Warum zwei Bytes? Es sind ASCII-Strings in C, da kann man das alles >> standardkonform machen, 0x00 = Stringende. >Ich denke er will alle möglichen Geräte dranmachen. Da geht gar kein >Endzeichen, weil die geräte könnten ja auch binäre
-
Thread
Problem mit String und Pointer
ein 721 Char breites Array (sms_buffer[721])geschrieben. An der letzten Stelle steht '\0' um den String abzuschließen - standard. [c] gsm_read_sms(); [/c] Die Daten stehen nun im Array. Ich habe ein Unterprogramm, welches die Daten verarbeitet, in dieses Unterprogramm wird ein String übergeben
(pString, "Hallo "); pString += sprintf(pString, "Welt"); printf(string); [/c] Anmerkung: Ev. die n-variante vom sprintf (snprintf) verwenden, auf die Gefahr eines Überlaufes hin. VG, /th.
-
Thread
String zerlegen
Eventuell auch so: [c] uint8_t i; char string[42]="IP=192.168.2.32:2000"; char *s=string; for(i=0;s[i]!=':';i++); s[i]='\0'; s+=3; [/c]
macht? > [c] > while( *source != '=' ) // Anfang suchen > source++; > [/c] und jetzt überleg mal, was wohl passiert, wenn ich deinem Code diesen String "abcdefghijkl" (also einen ohne '
-
Thread
AD- Wandler ATMEGA32 in C
5 mal > und teilst dann durch 4, > sehe ich das richtig. Nein, das siehst Du falsch! Da steht [c] for(i = 0; i < 4; i++) { ^^^^ //... } [/c] also wird i höchstens 3.
Beispiel: Ausgangswert 158. itoa macht daraus den String {'1', '5', '8', '\0'}. Du musst daraus jetzt den String {' ', '1', '5', '8', '\0'} machen, damit Du für die Ausgabe auf vier Stellen kommst. Das sollte in C recht simpel machbar sein.
-
Thread
LCD EA W204B-NLW
// Die Ausgabemarke in die 4te Zeile setzen lcd_setcursor( 0, 0 ); // Text als String ausgeben lcd_string("444 vierte zeile 444"); [/c] ergibt [code] zeile 1: 111 erste zeile 111 zeile 2: 222 zweite zeile 222 zeile 3: 333 dritte zeile 333 zeile 4: 444 vierte zeile 444 [/code] aber [c] // Die Ausgabemarke in die 1te Zeile setzen lcd_setcursor( 0, 0 ); // Text als String ausgeben lcd_string("111 erste zeile 111"); // Die Ausgabemarke in die 2te Zeile setzen lcd_setcursor
-
Thread
Arduino und die String Klasse
c = SoftSerial.readStringUntil('\n'); CheckValidFix(&c); [/c]
schrieb im Beitrag #6556996: > Und wie würde das für meine Routine ausschauen mit ::Reserve? [c] // global String buffer[10]; // in setup() for(String &s:buffer) s.reserve(100); [/c]
-
Thread
C++ Problem mit Threadsicherheit und std::queue<std::string>
Kernel 3.18.14/4.0.4 Compiler: GCC 4.9.2/5.1.0 Einschraenkungen: - *Kein* Boost - muss mit -std=c++98 compilieren [c] #include <queue> #include <string> #include <pthread.h> class FooBar { public: FooBar(); ~FooBar(); void Run(void); void* Bar(void); void
synchronisierten, nicht limitierten Queue: Nach ein bisschen diskussion konnte ich erreichen das ich C++11 nutzen darf, somit hab ich dein Beispiel mal ausprobiert. Es fuehrt zu einem SegFault wenn man die Queue mit std::string benutzt. Warum? ganz einfach: [c] T pop() { std::unique_lock
-
Thread
5 Zeiten mit ICP messen -> Problem mit den Timerwerten (ATmega8 und C)
TOIE1)); // Makro für Capture-Interrupt ausschalten char *Stopp = "#"; // Stoppzeichen für den String char string[20]; // Array 'string' mit 20 Zeichen festlegen volatile unsigned int Messung[5]; volatile unsigned int Ergebnis; volatile unsigned int Wcapture; volatile unsigned int Wcapturealt
TOIE1)); // Makro für Capture-Interrupt ausschalten char *Stop = "#"; // Stoppzeichen für den String char string[20]; // Array 'string' mit 20 Zeichen festlegen volatile uint8_t zeichen; // zeichen als unsigned integer volatile double Ergebnis = 0.0; // Ergebnis als global deklarieren
-
Thread
Atmega644 UART - Komische Ausgabe
[c] /* * Transmit string from program memory to UART */ uart_puts_P("String stored in FLASH\n"); [/c] Das ist verkehrt, genauso wie alle nachfolgenden Aufrufe von uart_puts_P
/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F
-
Thread
Pollin RFID Entwicklungsboard
As String * 5 '"Wert" als String mit 5 Hexwerten definieren[/c] ist falsch und muss heißen : [c] Dim Wert As String * 10'"Wert" als String mit 5 Hexwerten definieren[/c] denn wenn man 5 Byte als Hex darstellt braucht man 10 Zeichen durch das zu kurze String, für "Wert" werden evtl. weiter eingefügte Variablen nach „Wert“ Überschrieben 4. Im Programm fehlen Werte für: hwstack, swstack und framesize [c] $hwstack = 16 $
-
Thread
Große Datenmenge übertragen µC SD-Karte -> PC
Hi, ich würde gerne wissen wie man am geschicktesten ohne großen Ram/Puffer Daten einer SD-Karte (Fatfs) über eine UART an einen PC überträgt (UART in meinem Fall => Virtual-ComPort USB). Es geht um einen STM32 Temperatur und Feuchtigkeitslogger welcher die Daten in Tages-Dateien speichert YYmmdd.log Alle 24std gibts eine neue Datei. Ich habe viele einzelne Dateien welche aufgezeichnet werden, diese sind so ca. 30KB pro Stück groß. Wie macht man das nun ? Überträgt man immer Packetweise die Datei rüber? Oder gibts eine Methode wo ich nur die größe der Datei angebe und mein Transerfunktion
-
Thread
ESP32 Arduino String Funktion - wo liegt der Fehler?
("UBattAvg = " + String(AvgValues.UBattAvg) + "V") [/c]
0' Zeichen enthalten. [c] String s("test"); s +='\0'; String s2 = s.substring(2); Serial.println(s2.length()); [/c] liefert Länge = 3, die 0x00 ist im String s und Substring s2 enthalten.
-
Thread
Strings im Flash
der Breite der Zeichen also z.b. 8 und steht damit an stelle des Zeichens... z.b. für L: L = $4C ldi R16, $4C ;L in R16 sbci R16, $41 ;danach R16 = $0B = 11 ldi R17, 8 muls R16, R17 ;multipliziere. Ergebnis in R1 und R0 mov ZH, R1 mov ZL, R0 rcall Lcd_out So musste das, denk ich,
Ähhm, sorry, kann kein C programmieren... gibts so was auch in Assembler? Ansonstn muss ich's halt selber errechnen und programmieren...
-
Thread
Variable in einem String
kannst. Edit: Ich seh grad, du hast dir vom Original auch 2 Funktionen [C] void my_uitoa(uint32_t zahl, char* string) void my_round(char* string, uint8_t digit) [/C] mitkopiert. Mit denen geht das. my_uitoa ist als Ersatz für itoa gedacht. Die sind zum Zusammenspiel
Zusammenspiel mit deiner my_print_LCD gedacht. Aber Achtung [C] void my_uitoa(uint32_t zahl, char* string) { int8_t i; string[10]='\0'; for(i=9; i>=0; i--) { string[i]=(zahl % 10) +'0'; zahl /= 10; } } [/c] will ganz offensichtlich
-
Thread
C-Funktion- Übergabe char vers. constant char
string) { char *p = string; while(*p != (0x00)){p++;}; return p - string; } [/c] Problem = 2 Warnungen: Der compiler meckert natürlich an, das das 'constant char' von *string nicht dem Wert
schlimmer: Welchen Teil hast du nichtg verstanden, warum eine Modifikation der Funktion strlength auf [c] char strlength(const char *string) /* ***** */ { char *p = string; while(*p != (0x00)){p++;}; return p - string; } [/c] die 1. Warnung beseitigen würde?
-
Thread
C-Funktion call by reference: beliebiger Datentyp
>Natürlich enthält ein string nur einen Zeiger auf die Daten. Ein >normaler C-String ist nunmal ein char*, also ein normaler Zeiger. Ich rede nicht von C-Strings, sondern von der Klasse string (bzw. der Templateklasse basic_string
> Ich rede nicht von C-Strings, sondern von der Klasse string (bzw. der > Templateklasse basic_string) der C++ Library. Ich auch. Ok, meine Aussage war vielleicht etwas missverständlich. Einige string-Implementationen
-
Thread
Strings dauerhaft speichern
habe ich strings immer so deklariert unsigned char string[10];
folgendes Vorschlagen. Du verwendest normale Variablen (also im RAM). An die Stromversorgung des uC hängst du einen Elko hin und einen Portpin hängst du vor den Elko. Bricht die Spannung zusammen (Stromausfall) registriert dies der uC und schreibt mit Hilfe der Energie des Elkos die Strings in den
-
Thread
String aneinander reihen
, string); strcat(buf, " U/min "); strcat(buf, " Spannung: "); itoa(Zahl2, string, 10); strcat(buf, string); strcat(buf, "Volt "); [/c] (die Formatierung der Leerzeichen etc. solltest
(buf, string); strcat_P(buf, PSTR(" U/min ")); strcat_P(buf, PSTR(" Spannung: ")); itoa(Zahl2, string, 10); strcat(buf, string); strcat_P(buf, PSTR("Volt ")); [/c] Für Deine zur Laufzeit
-
Thread
GPS Empfänger an ATmega8
kmh,kmh_string,10); //kmh auf LCD ausgeben lcd_string(kmh_string); } } } [/c] Vielleicht fällt ja jemandem etwas auf, was ich noch verbessern kann. Wie man das GPS- Modul auf 9600 Baud einstellen kann,
; } Buffer[counter++] = c; } toLCD(Buffer); [/c] Danach kannst du den String in Ruhe zerlegen :)
-
Thread
Verwirrung beim C++ Variablen zusammenfügen
Und jetzt noch die einfache intuitive Methode: [c]float temperature1 = 3.14, temperature2 = 2.7; std::string query = std::string("INSERT INTO arduino.arduino_temperaturen (temp1, temp2) VALUES (") + std::to_string (temperature1) + "', '" + std::to_string (temperature2) + "')"; std::cout << query;[/c]