-
Thread
if abfragen von 2 Zeichen sorgt für Verwirrung.
Hallo Ich Möchte einen String mit if auf Zeichen untersuchen. Soll heißen im String steht zb A0 oder B1 C2 bla bla Jetzt habe ich versucht dies so auszulesen: Si = A0; ---------------------------- if (Si == 'A0') { --mache
Wenn die Arduino-Umgebung verwendet wird, kann natürlich die String-Klasse verwendet werden, und die wiederum hat den == -Operator entsprechend überladen. [c] String text; text = "blabla"; if (text == "blabla") { // etc.pp. } [/c] Der Code des Threadstarters
-
Thread
attiny85 EEPROM schreiben/lesen
Du musst doch wissen, wie lang der String ist - falls Du nicht immer mit derselben Länge arbeiten willst. Also entweder die Länge am Anfang mit abspeichern (Pascal Strings) oder ein Terminator Zeichen an das Ende (C Strings).
uint8_t i=0; while (getByte = EEPROM.read(eeAddr+i) && i!=sizeof(eeData)) { string[i++] = getByte; } string[i] = getByte; String(string); }
-
Thread
PIC18 & XC8: strcpy
[c]#include <string.h> void main(void) { char buf[100]; strcpy(buf, "hello"); while (1) { } }[/c] Bitteschön. Auskommentieren der besagten zwei Zeilen lässt
> schön und gut - aber eine string oder stdio bibliothek sollte halt dann > auch noch funktionieren. Die funktionieren auch schön und gut. Lösen aber dein Problem nicht, weil du den Hinweis vom Compiler auf strcpy.c nicht verstehen
-
Thread
atxmega TWI string übergabe
Patrick Schmelzer schrieb im Beitrag #4045448: > meine Strings in Bytes teilen wo ist genau das Problem? dein String ist doch ein Array von bytes( char) und die kann man einfach mit einer schleife abrufen.
Patrick Schmelzer schrieb im Beitrag #4045491: > uint8_t = atoi(VERSION); was ja auch Unsinn ist. [c] char* text = "test"; for( uint8_t i = 0; i < strlen( text ); ++i ) { uint8_t x = (uint8_t)text[0]; // sende x } [/c]
-
Thread
Konstante in C verändern möglich? (mit Tricks oder so)
Du einen cast nicht erkennst ... Lies Dir das mal durch: http://www.imb-jena.de/~gmueller/kurse/c_c++/c_const.html
exakt einen der Unterschiede gefunden. In C++ /ist/ const vergleichbare mit einer lexikalische Konstante. In C nicht. In C geht beispielsweise dies nicht: const int N = 10; static int a[N]; In C++ hingegen schon.
-
Thread
Atmega8 Uart & ADC
Du musst den Wert noch in einen "String" umwandeln. utoa müsste dir helfen [c] send_string(utoa(wert)); [/c] Gruß Skriptkiddy
Sorry, falsche Zeile: [c] send_string(utoa(wert)); [/c] ist die fragliche Zeile.
-
Thread
Argumentenübergabe main Funktion
Kommandozeilenparameter sind strings. Darum bekommst du strings. Denn: Woher sollte das Betriebssystem wissen, ob da ein Name, oder ob da eine Zahl kommt. C Anfänger schrieb im Beitrag #5334617: > Gefrickel atoi()
C Anfänger schrieb im Beitrag #5334617: > argv sind doch Pointer auf Strings. > Muss ich die Strings zu Zahlen zusammensetzen? Das ist doch ein > Gefrickel ohne Ende. Bei langen Parameterlisten
-
Thread
Problem mit Funktion: Pointer falsche Arraygröße
#1809063: > erklärst du mir wie das Nullbyte dazu beiträgt die Länge zu berechnen? steht in jedem C-Buch im Kapitel über Strings.
Der Einfachheit halber hab ich die transmit-Funktionen zu einer zusammengefasst. [code]$ cat main.c #include <stdio.h> #include <string.h> void transmit(char x) { printf("%c", x); } void SIMKNX_wert_setzen(char objectnumber, char* value) { char kommando[] = "ovs( )";
-
Thread
Wie herausfinden ob an der EEPROM ein String ist?
Hallo zusammen, ich möchte gerne wissen ob ein bestimmter Bereich im EEPROM einen String enthält. Dazu habe ich mir eine Unterfunktion geschrieben die auch auf den ersten Blick funktioniert aber der Compiler meckert mich nun mit: "test.c:2841: warning: pointer targets in passing argument
.. [c] if ( chk_eep_str(eep_buf[p+i].name) ) { lcd_eep_string(eep_buf[p+i].name); } else { lcd_string("leer"); } [/c] Danke falls sich das einer ansieht... ;-) Gruß AVRli...
-
Thread
eingelesenen Analogwert über UART ausgeben
} [/c] Definiere ich den String da nicht??? Oder muss ich ihn nochmals in main() definieren??? Gruß Thomas
= UBRR_VAL & 0xFF; puts ( string ); return 0; } [/c]
-
Thread
ESP32 - SPI funktioniert nicht
datenbytes (HEX)"); char a = Array[0].charAt(1); char b = Array[0].charAt(2); String str = (String) a + (String) b; switch(str){} { case 00 } Serial.println(str) } [/c] > Eventuell auch sagen was du mit der SPI machen willst? Mit
SPI.setClockDivider(SPI_CLOCK_DIV8); //divide the clock by 8=2 MHz @ESP32 } void loop (void) { char c; digitalWrite(SS, LOW); // enable Slave Select // send test string for (const char *p = "Hello, world! We are online over SPI\n\r" ; c = *p; p++) { retchr=SPI.transfer (c);
-
Thread
receive und Transmit via dem UART (ATmega16)
dem "String-Endezeichen" */ uart_putc(*s); s++; } } unsigned int uart_getc(void) { unsigned char tmptail; unsigned char c; //unsigned char data; if ( UART_RxHead
uart_putc(0xAA); // 'AA' vesenden als Char uart_puts("Hello World!"); //ein String verschicken usw [/c] ps: parlez vous francais?
-
Thread
strtoul vs. atoi führende Null im String ein Problem?!
von 1-12 sein soll. Keine Sanitychecks oder so. Webserver.arg() retourniert einen String (WString.h). Nun will ich diesen String in ein uint8_t konvertieren und habe das bisher folgendermaßen gemacht: [c]uint8_t mo = strtoul(Webserver.arg("mo").c_str(), NULL, 0);[/c] Solange man
mehr Daten zu verarbeiten, als in > den Speicher passen. Das gilt ganz besonders für sämtliche String > operationen. Die C-Library enthält einige Funktionen, die String mit > beliebiger länge zurück liefern, die würde ich meiden. > > Ganz besonders kritisch sehe ich hier die String Klasse im
-
Thread
Float to String ATMega 16
interessieren, wieso der Autor > einfach sprintf für Displayausgaben benutzen kann, anstatt den String in > das IO-Register zu schreiben an dem das Display hängt. > > Danke. Weil er noch keinen String hat. Er hat nur eine Zahl. Und irgendwie muss er die Zahl in einen String formatieren. Man
Welcher Compiler lässt denn zB das Wandeln von Float zu String zu? Also mit der sprintf () Funktion ? Gruß Timo
-
Thread
Problem mit Struct und Strings
Du musst den String kopieren (memcpy, memcpy_P). Genau Syntax ist abhängig vom C-Compiler, Ziel-Mikrocontroller
Hallo LightCo, Strings lassen sich in C nicht so einfach mit = kopieren. So kannst Du höchstens den Zeiger auf den String kopieren. Oder möchtest Du das? Habe ich das missverstanden? Ulrich
-
Thread
Atmega32 LCD Kommastelle
( 6, 2); lcd_string(" "); } } [/c] Aber aus irgendeinen Grund läuft das Programm zwar unter Windows am PC richtig, wenn ich in der Konsole starte, aber am Atmega32 nicht. Vorzeichen stimmt immer.
Nachkommastellen ist. Wobei eine glatte 0 in der Ausgabe sowieso noch Probleme macht, denn hier [c] for (i=i;z>0;i++) { [/c] wird das überhaupt nicht berücksichtigt und du erhälst aus der Ziffern-Zerlegung einen leeren String.
-
Thread
Atmega 16 PWM über Komparator unterbrechen
break; } } while(1) { OCR2 = 0; lcd_init(); lcd_clear(); lcd_string("Akku"); lcd_setcursor( 0, 2); lcd_string("leer!"); _delay_ms(1000); PORTC &= ~(1 << PC0); } return 0; } [/c]
} } } while(1) { OCR2 = 0; lcd_init(); lcd_clear(); lcd_string("Akku"); lcd_setcursor( 0, 2); lcd_string("leer!"); _delay_ms(1000); PORTC &= ~(1 << PC0); } return 0; }[/c]
-
Thread
ascii to int
Alt: [c] uint8_t StringLen = 0; [/c] Neu: [c] uint8_t StringLen = 1; // minimal len is 1: '\0' as terminator [/c] Zweiter Bock: [c] volatile char empfangen; // das ist
ersetzen können, findest du hier: http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F
-
Thread
Probleme win WinAVR 20081205
das so stimmt. Allein schon aus dem Grund, dass es *NUR* so funktioniert. Der Inhalt von "i" in [c] i=PIND << 4; // liest die ersten 4 BIT ein [/c] spielt keine Rolle, da es nur um das Lesen an sich geht. Hier findet auch das von Dir erwähnte 1. Lesen statt. Die wichtige Zeile ist [c] i=(PIND
GCC-Version funktionieren die Stringfunktionen nicht mehr. Z.B. uint16_t uword = 12345; char foo_string[10]; sprintf(foo_string, "%05u", uword); ausgabe(foo_string); Die sprintf führt zum Neustart (Reset) des ATmega128. char foo_string[10]; strcpy(foo_string, "12345"); ausgabe(foo_string
-
Thread
Probleme mit Pointern und Strings
Der Ansatz sieht gut aus. Erste Zeile, die mir komisch vorkommt: [c] Haus_Tuer.Menus[0] = &Switch; [/c] Hier würd ich nochmal drüber nachdenken...
Also, jetzt habe ich verstanden, was du damit anstellen wolltest: [c] // Allgemeine Untermenüs (mehrfach verwendet) [/c] und genau das mit dem Mehrfachverwenden geht nicht, außer (a) du kopierst an der entsprechenden Stelle die Sachen um, oder (b) du verwendest
-
Thread
Pollin MOTOROLA VIP1710
bit (Modul) rsa key signiert. Der Kernel Public RSA-Key lautet: Modul: 0xffffffff65b0e4da4f5bc26c97677ddde52f71c7a2f8a38d58011384ff319811d1022965ebecfbefbf205e7d15c1c08318f0dda0670ba4ddda360d8785cfc2160402dcbd02732b9f51b59df46576089700b61573838561fc2c2a857bbf7247995d44a4ed534080dc6af1f582f8d8267e54fb0ee5b982e014c4d855a8c734a9df
multiply defined Unable to handle kernel paging request at virtual address 00000000, epc == 8011f28c, ra == 8011f268 Oops in fault.c::do_page_fault, line 206: $0 : 00000000 10007800 00000000 84c2d000 00000084 00000001 84c2d0a0 84c2d0a0 $8 : 84c2d000 84c2d0a0 00000000 00004c2d 802969f0 00000000 10007800
-
Thread
Komisches Arduino-Phänomen mit PROGMEM und DCF77-Empfang
strcpy (Ereignis_Name, Ereignis_SRAM.Name); // String2 = String1 geht nicht, daher strcpy nutzen ! } } }[/c] [c] if (Flag_Tagesereignis == true) { // Infos abwechselnd darstellen
Serial.begin(9600); for(const Event_type &e:ereignis) { Serial.println((const __FlashStringHelper*)e.Name); } } void loop() { }[/c] Ausgabe: [c] Heiligabend 1. Weihnachtstag 2. Weihnachtstag Sylvester [/c] Für die anderen Felder könntest du pgm_read_byte() und seine
-
Thread
Arduino: serial.read() Zahl als integer
http://www.imb-jena.de/~gmueller/kurse/c_c++/c_str2n.html
reinpasst ) hänge ein \0 Zeichen an den Text hinten drann, damit aus dem Zeichenhaufen ein C-String wird atoi anwenden [/code] und wie Läubi völlig richtig schon angemerkt hat: Lass dir die Zwischenergebnisse ausgeben. Du willst wissen: * kommt jedes Zeichen auch so an, wie ich
-
Thread
RS485 nach 2,5 Paketen ist schluss
= data; } [/c] Bernhard Schröcker schrieb im Beitrag #3527027: > Ist PH7 bei Dir das gleiche wie PORTH7? PH7 ist nichts anderes als ein [c] # define PH7 7 [/c]
//___warten bis Sendung // abgeschlossen } [/c]
-
Thread
C oder Assembler
r18 17bc: 8a 95 dec r24 17be: e1 f7 brne .-8 ; 0x17b8 17c0: 80 e4 ldi r24, 0x40 ; 64 17c2: 93 e0 ldi r25, 0x03 ; 3 17c4: 28 9f mul r18, r24 17c6: f0 01 movw r30, r0 17c8: 29 9f mul r18,
gibt es vielleicht gar keine Standard-C Sprache? Wenn ich MC's mit C Programmieren kann, hab ich dann genug C gelernt um nachher auch, zumindest im Ansatz Windows damit zu programmieren ? Oder ist das C wie Visual C oder Borland C wieder
-
Thread
Ausgabe aller IP-Adressen
dann kann ich ihn anschauen und dir vielleicht Tipps geben. also ich habe so etwas gemacht: [c] #include <regex> #include <iostream> #include <string> #include <array> using namespace std; int main() { auto re_ipv4 = std::regex(R"""((?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{
hier geht mit Domains, IPv4 & IPv6, auf unixoiden Systemen. Inklusive Namensauflösung, und reines C. [c] #define _DEFAULT_SOURCE #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #include <stdbool.h
-
Thread
Soft UART und Hardware UART gleichzeitiges empfangen
Hallo zusammen, ich habe eine wie ich finde besondere Herausforderung an meinen µC. Ich habe ein Gerät1, dass alle 20 Sekunden einen String über COM (8N1) ausgibt und welcher dann von meinem µC eingelesen und gespeichert wird. Auf der anderen Seite meines µC steht ebenfalls
Mein Programm funktioniert tadellos. Die Ausnahme ist, wenn beide Geräte gleichzeitig einen String an den µC senden. Habt ihr irgendwelche Tipps wie ich nen optimales Timing machen könnte, damit mein µC gleichzeitig zwei Strings empfangen kann? Merci beaucoup :-) Grüße Marcel
-
Thread
Mit sed string einfügen
schreiben: [code] OBJECTS := main.o... OBJECTS := $(addprefix $(TEMPDIR)/, $(OBJECTS)) %.o : %.c src1.h [/code] Allerdings musste ich irgendwann einsehen, dass es am einfachsten ist, das Makefile aus dem Objektverzeichnis aufzurufen. Etwas umständlicher (und möglicherweise eleganter) ist es,
einhalten (siehe Ursprungsthread). Es geht einzig darum in die von gcc generierten .d Files diesen String voranzustellen.
-
Thread
Atmega16 + DS18B20 + Timer = LCD Zeichenwirrwarr?
Dg = Decigrades(sc(9)) If Min1 > Dg Then Min1 = Dg If Max1 < Dg Then Max1 = Dg Temp_string1 = Str(dg) Temp_string1 = Format(temp_string1 , "0.0") End If If Auto = 1 Then If Dg => Hightemp Then Papst = 1 If Dg <= Lowtemp Then Papst = 0 End If 1wverify Dsid2(1) 1wwrite
Then Dg = Decigrades(sc(9)) If Min2 > Dg Then Min2 = Dg If Max2 < Dg Then Max2 = Dg Temp_string2 = Str(dg) Temp_string2 = Format(temp_string2 , "0.0") End If If Auto = 1 Then If Dg => Hightemp Then Papst = 1 If Dg <= Lowtemp Then Papst = 0 End If Return Viele Grüsse und DANKE
-
Thread
RGB-LED Ansteuerung mittels PWM in AVR Studio 4 (C-Programmieren)
/** * @brief Send a char by UART * @par uint8_t char to be sent */ void UartPutc(uint8_t c) { UDR0 = c; } /** * @brief Send a string by UART * @par uint8_t* char to start of string to be sent */ void UartPutString(uint8_t* s) { while(*s) { if (UartTxAvailable
interrupt.h> #include "key.h" #include "pwm.h" #include "tick.h" #include "uart.h" #include "string.h" int main (void) { uint8_t keystate = 0; uint8_t str[50]; uint8_t str2[50]; uint8_t instr[16]; uint8_t dutyled = 50; uint8_t c; TickInit(); PwmInit(); UartInit();
-
Thread
Zweidimensional Array zu eindimensionalen Array
Aber meine Glaskugel hat mir einen Tipp gegeben (damit mal was witer geht in diesem Thread) [C] #include <string.h> int main() { char texte[][8] = { "Wort1", "Wort2", "Wort985" }; char komplett[512]; int i; komplett[0] = '\0'; // fange mit einem Leerstring an for( i =
// das nächste Wort hinten anhängen strcat( komplett, " " ); // und dann noch einen String bestehend // aus einem Leerstring anhängen } printf( "%s", komplett ); } [/C]
-
Thread
DS1621 ueber I2C ansteuern
delay_ms(10); while(1) { i2c_start(); i2c_transmit_byte(0x91); temp1=i2c_receive_byte(); temp2=i2c_receive_byte(); i2c_stop(); USART_String_Transmit(itoa(temp1,s,10)); USART_String_Transmit(itoa(temp2
, Master sendet NACK i2c_stop; USART_String_Transmit(itoa(temp1,s,10)); USART_String_Transmit(itoa(temp2,s,10)); _delay_ms(100); // Dem Datenblatt nach muesste das funktionieren. Wenn das NACK nicht // gesendet
-
Thread
Taschen rechner mit ATMega32.Nachkommazahlen. C-Programmierung
dir selbst eine schreiben? http://www.mikrocontroller.net/articles/FAQ#itoa.28.29_.28utoa.28.29.2C_ltoa.28.29.2C_ultoa.28.29.2C_ftoa.28.29_.29 sollte dir aber weiterhelfen
.28.29.2C_ltoa.28.29.2C_ultoa.28.29.2C_ftoa.28.29_.29
-
Thread
Frage zu Bascom Programierstil
streiten. > Grundsätzlich halte ich das aber für Murks. Ich weiß nicht wie es in > Bascom ist, in C oder ASM stehen meine Strings nicht unbedingt direkt da > wo die Ausgabe erfolgt (dort steht nur ein Pointer bzw. ein Label). Es war C. Außerdem würde ich die Ausgabe in eine Routine schreiben und
holger schrieb im Beitrag #2247348: >>Auch führen die Leerzeichen in C zu falschen Ergebnissen bei strlen(). > > Aber sonst gehts dir gut? Danke, ja. Ich meine folgendes: [c] char string[]="Eintrag 1 "; int i=strlen(string); [/c] i enthält jetzt 16 obwohl
-
Thread
Hilfe, komme nicht weiter. Temperatur von 0 bis -1 Grad kein negatives Vorzeichen.
einen Sonderfall konstruiert. Alleine der würde ja schon rechtfertigen, dass es eine Funktion [c] void lcd_string_temperatur( int16_t temp ) { .... } [/c] gibt, die man im Hauptprogramm benutzt und die um dieses Detail Bescheid weiß. [C] ... temp_val.i=(int16_t)(temp_val.f*10); lcd_instr(0x0C); // Cursor eliminieren lcd_string( "T: " ); lcd_string_temperatur( temp_val.i ); lcd_string( " C" ); ... [/C] und in diese Funktion kommt dann diese Sonderbehandlung
-
Thread
Bootloader .text Probleme (Strings)
Hallo, ich befolge gerade das Tutorial zu Bootloadern in C. http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung Dazu habe ich auch (bei mir in eclipse) einen Linker Parameter gesetzt (-Ttext=0x1800), um den bootloader
die 0x1800 µC-spezifisch sind? Wenn du einen anderen µC als den im Tutorial verwendeten Mega88 benutzt, dann musst du für deinen µC diesen Wert neu berechnen.
-
Thread
Verständnis problem bei Pointer auf ein Pointer
müsste ich wahrscheinlich so machen > [c]strcpy (&x, "defg");[/c] oder? es sieht nicht so aus, als ob das schon sitzt. Zumindest der Transfer zu Strings, die durch einen Zeiger auf ihr erstes Zeichen repräsentiert werden (sowie ein '\0
Pointern hat. Die Daten wohin der Pointer zeigt lassen sich auch so verändern. Bezogen auf dein String Beispiel würde man den Code so schreiben: [c]void test (char * x){ strcpy (x, "defg"); } int main(){ char buf [] = "abcd" test(buf); }[/c]
-
Thread
string Konstanten mit fprintf ausgeben
Zeichen ausgibt. Ich nenn sie mal lcd_char. Daraus lässt sich leicht eine Funktion bauen, die einen String aus dem SRAM ausgibt: [C] void lcd_string( const char* s ) { while( *s ) lcd_char( *s++ ); } [/C] Soweit so gut. Jetzt soll der String aber nicht aus dem SRAM kommen, sondern aus
pgm_read_byte ersetzen, ein bischen umstrukturieren, so dass der Code einfacher wird und es kommt raus [C] void lcd_string_P( const char* s ) { char c; while( ( c = pgm_read_byte(s++) ) != '\0' ) lcd_char( c ); } [/C] (Das hinten angestellte _P kennzeichnet die Funktion als eine, die
-
Thread
Problem UART kommunikation
; [/c] ist der Aufruf einer Funktion Wurde ja schon angesprochen [C] > string1[0] = 'H'; > string1[1] = 'A'; > string1[2] = 'L'; > string1[3] = 'L'; > string1[4] = 'O'; > string1[5] = '\0'; [/C] zähl doch mal. Das sind 6 Zuweisungen. Dein Array [C] char string1[5] = {0}; [/C] ist aber nur 5 Elemente groß! > Hast du den TXD denn auf Ausgang gesetzt? Nö. Muss
-
Thread
Definieren von Stings in Assembler
Hallo, zu sehen ist natürlich nur ein Codeausschnitt und nicht die vollen 200 Zeilen. Da wird der i2c Bus gelesen, BCD Wandlung und so weiter. Das Problem liegt in der Definition der Strings. Soweit habe ich das ganze im Griff. Mir fehlt nur noch die Ausgabe von "Grad Celsius". Zur Schaltung kann
Für die Entwicklung von AVR- Systemen gibt es eben nur die AVR- GNU Werkzeuge und ich bin nicht mit C/C++ aufgewachsen sondern mit Assembler. Damals habe ich für den Z80 Programme geschrieben und so ist mir der Assembler lieber als die C/C++ Toolchain. MfG HUE
-
Thread
UART to USB HID Keyboard
Schnittstelle. Das Design vom OP ist nicht besonders toll. Besser man nimmmt einen beliebigen USB-fähigen µC und hackt da das - oft vom Hersteller bereitgestellte - Tastaturbeispiel rein. Übrigens kann eine Tastatur nur Keycodes aber keine Zeichen senden. Daher wird aus dem String "querty" ein "qwertz"
benutzen, daran dann das Device mit UART anschließen und dann ein bisschen Programmieren, damit sich der µC als Tastatur ausgibt und die Strings, die per UART gesendet wurden an den PC per HID Interface/Keyboard Interface weitergibt? Habe ich das jetzt so richtig verstanden? Es wäre halt schade für mich
-
Thread
Nicht alle Datensätze werden per UART gesendet
4. Buchstaben im Buffer auszugeben, also so: [c] while(1) { if(string_received == 1) { uart_putc(buffer[3]); string_received = 0; } } [/c] Mit diesem Code sehe ich das hier im Terminal: [code]GGRVGGRV[/code] Also werden
main(void) { while(1) { if(string_received == 1) { string_received = 0; uart_puts(buffer_evaluate); } } return 0; } [/C]
-
Thread
split bei Bascom oder andere Sprache?
trennzeichen teilen kann so wie dies auch unter VB geht. Ich will einen über RS232 übertragenen String am = trennen und dann jeweils den teil vor und nach diesem Zeichen in meine µC weiter verarbeiten gibt es da eine Möglichkeit evtl. auch in C (davon habe ich aber noch keinen plan :-( ) Mit freundlichen
In C würde man den String von vorne nach hinten durchsuchen (kann sein, dass da sogar was fertiges gibt) und die Adresse des Zeichens nach dem "=" zurückliefern. Dann hätte man zumindest Speicher gespart.
-
Thread
String-Anzeige in Dog-Display
machen? Cursor EINMALIG auf den ANfang der 2. Zeile setzen und dann einzelne ZEICHEN ausgeben, nicht Strings! Un keine for() Schleifen mit while nachbilden, das ist sinnfrei. Wenn man ein abzählbar endliche Schleife machen will, dann mit for(). [c] Disp_Command(0x80 + 0x40); // Cursor auf 2. Zeile,
} for (; i<16 ; i++) { Disp_Data(' '); } } [/c]
-
Thread
Atmega8 UART ext. Quarz
) // war uint8_t { while ( !( UCSRA & (1<<UDRE)) ); UDR = data; } void USART_Transmit_STRING (char *s) { while(*s) { USART_Transmit (*s); s++; } } //-------------------Hauptprogramm------------------- int main(void) { DDRC=0x0F; // alle Pins an PortC als
Auswahl=3; } else { USART_Transmit_STRING(Eingabe); Auswahl=0; } //*/ } [/c]
-
Thread
Wann und wozu Pointer?
du ein Objekt übergeben, manchmal eine Kopie des Objektes. Vielleicht liegt der Knoten hier: In C kannst du kein Objekt übergeben. In C kannst du nur Pointer oder Kopien übergeben. War vielleicht ein Fehler in der C-Denkweise. Hat sich aber so eingebürgert und wird sich nicht mehr ändern. Wenn
Noch einer schrieb im Beitrag #4509818: > Vielleicht liegt der Knoten hier: In C kannst du kein Objekt übergeben. > In C kannst du nur Pointer oder Kopien übergeben. > > War vielleicht ein Fehler in der C-Denkweise Ich sehe das genau umgekehrt: Was ein Objekt ausmacht sind
-
Thread
Datenstrom auf Zeichenkette untersuchen
ich quasi permanent empfangen (aktuell ist mein Buffer 100 Byte groß) und dann in dem Buffer den String ZHE suchen. So stelle ich sicher das ich den Start-Punkt kenne und kann dann die Bytes 4-10 auswerten. Wie suche ich einen String in einem größerem String?
> Wie suche ich einen String in einem größerem String? Garnicht. Mach in deiner Empfangsroutine eine Statemachine: Wenn State=Anfang: If Zeichen=Z State=State2 Wenn State=State: If Zeichen=H State=State3 else State=Anfang
-
Thread
Prüfen ob Zahl
[c] char newnum[16] = {0}; newnum="123453"; [/c] In der zweiten Zeile muss doch eine Fehlermeldung kommen. Denn Du versuchst, newnum die Adresse eines Strings zuzuweisen, newnum ist aber kein Pointer
maximale Stringlänge ist durch eine Systemkonstante (nämlich die sizeof eines Pointers) festgelegt. [C] char* pCharacter = newnum; while( *pCharacter != '\0' ) { // mach was mit *pCharacter pCharacter++; } [/C] Voraussetzung ist natürlich, dass der String von Anfang an schon richtig
-
Thread
MEGA32 & Bootloader
Guten Tag, habe mir vor kurzem hier den Bootloader angeschaut [c] #include <string.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <avr/boot.h> #include "uart.h" #include "hard_def.h" #ifndef F_CPU #define F_CPU
uint8_t num) { uint8_t i; uint16_t val = 0; for (i=0; i<num; i++) { uint8_t c = ascii[i]; /* Hex-Ziffer auf ihren Wert abbilden */ if (c >= '0' && c <= '9') c -= '0'; else if (c >= 'A' && c <= 'F') c -= 'A' - 10; else if (c >= 'a' &&
-
Thread
Hilfe bei GPS auslesen mittels Atmega 16
valid f8 Data bits <StopBits> 0,1 <Parity> 0=None, 1=Odd, 2=Even */ [/c] [c] /*String senden*/ void uart_puts (char *s) { { /* so lange *s != '\0' also ungleich dem "String-Endezeichen(Terminator)" */ uart_putc(*s); lcd_string
blinkt) wie kann ich den jetzt die Daten aus dem gerät bekommen? Eigtnlich doch, in dem ich einen String schicke, der sagt, welches Daten ich haben möchte. z.B.: UTC Time [c] uart_puts ("$GPGGA,161229.487*18" CR );[/c]