-
Thread
Ringpuffer im Ram und keine Ahnung !! in Assembler
mir das ungefähr gedacht habe : ======================================================= .equ string1=0x0060 ;+12 Byte .equ string2=0x006c ;+12 Byte .equ string3=0x0078 ;+12 Byte .equ string4=0x0084 ;+12 Byte .def temp1,r16 .def str,r18 loop: ;(jetzt irgendwas an befehlen) rjmp loop dat1s: ;Byte in den ram legen ldi yh,high(string1) ldi yl,lowe(string1) st y+,temp1 ret dat1l: ;Byte aus den ram holen ldi yh,high(string1) ldi yl,lowe(string1) ld y+,temp1 tst t1mp1 breq out_end rjmp lcd_out
-
Thread
Arduino 433mhz Sender/Empfänger (Arduino Anfänger)
Hallo Dieter S. hab jetzt den Code so ergänzt: #include <String.h> String stringOne, stringTwo; stringOne = String((char)buf[i]); stringTwo = String("Hallo Welt"); ... if((strcmp(stringOne,stringTwo)) == 0) { ... das sind die Fehler ist die
(const char*, const char*)' > Fehler beim Kompilieren. Ich seh schon, du solltest dich mal mit c/c++ auseinandersetzen. Die Fehler sagen, du benötigst ein anderes Format (char). Deklaration: const char stringTwo[] = {"Hallo Welt"}; char StringReceived[15]; Nach dem holen der Nachricht
-
Thread
int to string
Ich habe z.B. ein char vorliegen, das den Wert 32 enthält. Wie kann ich daraus einen string erhalten, der '3' und '2' enthält?
Wenn C oder C++ dann: int i = 100; char* str = Printf("%d", i) //"%d" steht für die variable es ist auch "nummer: %d" und so weiter möglich
-
Thread
DS1631 I2C Ansteuerung - Interpretationsprobleme
(); //USART_Transmit_Strings("Die Temperatur betraegt\n"); USART_Transmit(temp_MSB); //USART_Transmit_Strings(" °C"); } [/CODE] Dann habe ich noch ein merkwürdiges Problem. Die Funktion lasse ich in einer While
zahl = zahl + (float) temp_MSB; sprintf(buffer, "%f", zahl); //USART_Transmit_Strings("Die Temperatur betraegt\n"); USART_Transmit_Strings(buffer); //USART_Transmit_Strings(" °C"); } [/CODE] Statt dem Temperaturwert bei buffer wird bei mir nur ?????? (Arduino Serieller Monitor
-
Thread
Denkbare Möglichkeiten: Prorgamm "spinnt"
max. und SRAM bleibt unverändert), bekomme ich auf dem LCD nur wirre > Zeichen angezeigt von den Strings Handelt es sich um einen µC mit mehr als 64kByte Flash? Dann ist das mit hoher Wahrscheinlichkeit die Ursache des Problems. Sobald eine Zeichenkette oder eine im flash abgelegte Tabelle oberhalb
c-hater schrieb im Beitrag #3571273: > Handelt es sich um einen µC mit mehr als 64kByte Flash? Daniel Mader schrieb im Beitrag #3571149: > Prozessor: Atmega8 In diesem Sinne... Oliver
-
Thread
UART wie String empfangen?
gefunden. Oder falsch gesucht... Im einfachsten Fall: Einfach 48 (oder besser '0') abziehen char c; c = UDR; c = c - '0'; // ist gleichbedeutend mit c = c - 48; // da 48 der ASCII Code von '0' ist. Wenn in c eines der Zeichen '0', '1', '2' ... '9' empfangen wurde, dann enthält c nach der Subtraktion die entsprechende Zahl von 0 bis 9. Wenn in c was anderes empfangen wurde, zb ein 'a', dann kannst du mit dem Ergebnis der Subtraktion natürlich nicht so viel anfangen. Studier
-
Thread
Auslesung von DS1307 RTC
systemtime.datum.day, &systemtime.time.hour, &systemtime.time.minute, &systemtime.time.second); } } [/c] Auf der Gegenseite spi_master_slave.c [c] // Senden von Daten über SPI // Beispiel: spi_data = spi_send ("TEST\n", PIN_SPI_CS3); // senden von einem String auf der SPI-Schnittstelle void spi_send_string
So dermassen lange printf sind in der Wartung sehr fehleranfällig. Und noch ein PS: Man kann in C einen sehr langen String in mehrere Teile aufteilen! Anstatt [c] "Hallo World" [/c] darf man auch den String in mehreren Teilen schreiben [c] "Hallo " "World" [/c] Beachte: Da
-
Thread
uart probleme oder?
0b00100000) {} UDR = 'M'; _delay_ms(5); while(UCSRA ^ 0b00100000) {} UDR = 'C'; _delay_ms(5); } [/c] hier noch mal die empfangsroutine [c] for(;;) { while(j<6) { while((UCSRA & 0b10000000)-128) {}
man so ein problem in der praxis? die einzige lösung die mir einfällt, ist die daten von diesem µC nochmals zu einem anderen µC zuschieben, aber in kürzerer zeit. gruß
-
Thread
Globale Variablen im ISR
main.c: volatile char uart_string[3] = ""; main.h extern volatile char uart_string[3];
einer Deklaration eine Definition macht. Nicht künsteln! Dann funktioniert das auch main.h [c] .... #include "global_vars.h" ... [/c] global_vars.h [c] .... extern volatile char uart_string[3]; .... [/c] uart.c [c] ... #include "global_vars.h" volatile char uart_string[
-
Thread
USART und Interrupt
) { sei(); init_usart(); DDRB = 0xFF; while(1) { send_string("test"); delay_ms(1000); } return 0; } [/c]
Bin jetzt soweit dass ich eigentlich ganze Strings empfangen sollte, leider klappt es wieder nicht... [c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define PUFFER_GROESSE 100 volatile char *schreibzeiger; volatile
-
Thread
[C] ATmega32 tut nicht was er soll. Tasterabfrage
Schleife bis PINA 7 gedrückt ist PORTA = 0x00; //Motor ausschalten _delay_ms(1000); lcd_string("1"); _delay_ms(1000); lcd_clear(); } //while(1) } //Main [/c]
PINA 7 gedrückt ist PORTA &= ~(1<<PA0); //Motor ausschalten _delay_ms(1000); lcd_string("1"); _delay_ms(1000); lcd_clear(); } //while(1) } //Main [/c] Wie ist der Motor angeschlossen? Direkt am Mikrocontroller?
-
Thread
Variable einer Schleife ersetzen
nullterminierten Strings kannst du auch so schreiben: [c] for (tpos=text1;pgm_read_byte(tpos);tpos++) ... [/c]
nullterminierten meinst du wohl Leerzeichen, oder? Nein. Nullterminiert: eine binäre 0 am Ende. So wie in C seit jeher Strings gebildet werden. http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F Danke für die Funktionsbeschreibung. Jetzt ist klarer was das Ziel ist
-
Thread
Zeichen ind String suchen und auslesen
C-Code: [c] #include <stdio.h> #include <string.h> void main(void) { unsigned char string[10]; //zB. A1006 printf("Programm gestartet.\n"); inputse(string,11); if(strchr
Versuchs mal mit [c] #include <strings.h> [/c] statt [c] #include <string.h> [/c]
-
Thread
Uart Zeichen auslesen
machen wenn man keine Ahnung hat, ich muss das fertig machen und habe keine Zeit mir noch mal alle c Grunglagen durch zulesen. [c] void initusart (); [/c]habe ich schon in: [c]initusart (); [/c]geändert und jetzt geht es. [c]void uart_gets( char* Buffer, uint8_t MaxLen );[/c] hir bin ich mir
[c] int main(void) { initusart (); uint8_t uart_getc(void); void uart_gets( char* Buffer, uint8_t MaxLen ); } //Zeichen sammeln und zum String zusammen setzen void uart_gets( char* Buffer
-
Thread
Übergabe von Arrayeinträgen
[3][92];[/c] Wobei der Compiler die Anzahl der Einträge auch selber zählen kann: [c]char slaveAdr_ausgabe[3][];[/c] Zahlen als Strings zu speichern ist aber ohnehin unnnötig, da Du diese Strings jederzeit (
erste Array streichen. Nur das Problem ist, dass meine Ausgabemethode am Display Char-Werte oder Strings erwartet. Der kann ich keine Hexwerte übergeben. Daher die beiden Arrays. Nochmal zusammengefasst: Meine Displayausgabemethode erwartet char oder String Die Initialisierung des I2C Intwerte
-
Thread
20 Variablen unterschiedlichen Typs seriell einlesen
brauchst empfangen koennen (jeweils in Textform mit einem geeignetem Ende-Zeichen) und diesen String dann in das gewuenschte Datenformat umsetzen. Wahrscheinlich wirst du eine zentrale 'Empfange als String' Funktion haben und dieser String wird dann in weitere Funktionen zur Umwandlung uebergeben
- C sondern modernes ANSI-C
-
Thread
C Programm
ich habe eine entzipte Datei,die binäre und ASCI Zeichen enthält. ich wolte gerne durch ein C Programm nur die ASCI Zeichen erhalten, ich würde sehr Dankbar,wenn sie mir helfen könnten
Hallo Hasnaa, Solltest du zu den glücklichen Linux/Unix Benutzern gehören kannst du das Programm strings verwenden. man strings: print the strings of printable characters in files. mfg werner PS: Das programm gibts sicherlich auch für Windows, mußt halt suchen.
-
Thread
C# String im Hex-Format senden
als die Größe der Argumentenliste.[/c] https://msdn.microsoft.com/de-de/library/system.string.format(v=vs.110).aspx#Format1_Example [c] // string str2 = string.Format("<{0:x},{1:x},{3:x},{4:x}>", mode, r, g, b); string str2 = "<0,0,0,ff>"; serialPort.Write(str2); [/c] Die auskommentierte Variante funktioniert nicht und führt den oben gelisteten Fehler zurück. Was ist hier genau falsch?
-
Thread
String direkt in Speicher sichtbar [C]
Hallo zusammen :) Habe leider bei der Suche nichts passendes gefunden. Ich möchte gerne eine S19-Datei in meinen Programmer laden und dann oben direkt im Speicher einen "Schriftzug" (z.B. Dateiversion vX.X) stehen haben, um sehen zu können, ob ich auch die richtige Datei erwischt habe ;) Gibt es da einen C-Befehl? Vielen Dank schonmal an die Programmierprofis! Maik
-
Thread
Char Array über USART Empfangen und vergleichen
Terminalprogramm if (!strcmp(ReceiveSerial,Lr99110101)) { stopbit = false; } } [/c] Das ist das uart_gets() [c] /*String empfangen*/ void uart_gets( char* Buffer, uint8_t MaxLen ) { uint8_t NextChar; uint8_t StringLen = 0; NextChar = uart_getc(); // Warte
', 'B', 'C'...) bzw. in Arrayform für Strings ("Hallo") zu benutzen. und dann schreibst du dir eine Funktion, die eine Zahl ausgeben kann. [C] void usart_write_uint8( uint8_t nr ) { char buffer[6];
-
Thread
LCD nach Ein/Ausschalten TOT?
globale Variablen machen. Entrümpeln: Der Compiler meldet etliche unbenutzte Variablen. 2/ Weniger Strings benutzen. Viele Strings kann man aufteilen und mehrfach benutzen, z.B. [C] void Disp_Messung(char i) { #if 1 char buffer[2]; if (i < 1 || i > 5) return; lcd_puts("Messung
neulich hier gepostet wurde. http://www.mikrocontroller.net/articles/Entprellung#Komfortroutine_.28C_f.C3.BCr_AVR.29 Die Repeatfunktion kann man drinlassen, auch wenn man sie nicht benutzt, sind ja nur 2 Bytes SRAM zusätzlich. Peter
-
Thread
Lookupstr - Bascom
Schönen Abend, danke für das Feedback - also mit reinen Bytes ist es mühsam. es sind Strings für RTTTL-Klingeltöne, die erste Sequenz ist dabei der Name des Liedes: z.B. [c] Musik: Data "Pac Man :d=4,o=5,b=112:32b,32p,32b6,32p,32f#6,32p,32d#6,32p,32b6,32f#6,16p,16d#6,16p,32c6,32p,32c7,32p
Code funktioniert (bis auf das fehlende EndIf ;-)) Hab jetzt eine Sub-daraus gebaut, die einen String beliebiger Länge ausliest. Kann man das auch als Funktion mit String-Rückgabe schreiben? Da scheitere ich noch [c] $regfile = "m32def.dat" $Crystal = 8000000 $hwstack = 40 $swstack = 40
-
Thread
Uart String empfangen
Hallo, ich möchte mit einem Mega8 Strings per Uart empfangen. Basis ist dabei die Lib von P. Fleury. Ich schicke Strings vom PC an den µC und wenn dort der String komplett angekommen ist soll er zurück zum PC geschickt werden. Leider kommt der String häufig unvollständig zurück. [c] void uart_gets(char *test) { char c; c = uart_getc(); if(!(c & UART_NO_DATA)) { *test = c; do { test++; *test = uart_getc(); }while
-
Thread
Befehlsinterpreter auf MC und diverser anderer Kram
soll immer auf einen String zeigen, der sicher existiert. D.h. man sollte der gleich folgenden Add Funktion immer einen konstanten String übergeben und kein char Array. Das ist jetzt natürlich eine Konvention, die ich hier akzeptieren
String zeigt, der das jeweilige Argument in Stringform enthält. Na das ist doch was! Das kann man kopieren.
-
Thread
C Kompiler Marco
kann ich das kompilierungs Datum nicht so einfach in einer > Variablen speichern? Doch: [c] char date[] = __DATE__; [/c] Wenn du einen Substring von _DATE_ extrahieren möchtest, geht das nur zur Laufzeit, also bspw. so: [c] #include <string.h> char year[5]; int main(void) { strcpy(year, __DATE__+7); } [/c]
-
Thread
Mehrdimensionale Felder mit verschiedenen Zeilenlängen?
), &GPGGA_Ptr ); } else { //wenn String nicht mit "$" beginnt, Fehlerkennung eintragen und tschüss strcpy( GPGGA->Name, "?" ); } } [/C] Jetzt schreibst du dir noch die Funktion ExtractString, die den nächsten Teilstring extrahiert
Array-Overflows mit ein. Dazu kriegt die Funktion ja die Arraygröße mitübergeben, damit sie das tun kann) [C] void ExtractString( char* Ziel, int LenZiel, char** Quelle) { ..... dein Code hier } [/C] Anstatt deine Zeit in Code-Duplikate zu stecken und darauf zu achten, dass du alle notwendigen Stellen
-
Thread
CRC-CAN Prüfsumme berechnen C Code
+ x7 + x4 + x3 + 1 dafür. Ich verwende einen LTC6804 der auf diese Weise seine packte prüft. [c] #include <stdio.h> #include <string.h> char *MakeCRC(char *BitString) { static char Res[16]; char CRC[15]; int i; char DoInvert; for
mich mein Gedächtnis nicht trügt, dann ist im Wikipedia Artikel zu CRC entsprechender Code für C angegeben. Aber erst mal musst du mit Bitoperationen klarkommen. Mit diesen 'Bit-Strings' (mir fällt kein besserer Name ein), verbaust du dir schon mal alles. Alles weitere folgt dann daraus.
-
Thread
T6963C-Display flackert
Muss ein Fehler sein, da der t6963c kein 320x240 unterstützt :>
Kleiner Tipp am Rande: Man kann sich viel Datenverkehr sparen, wenn man den String im RAM des µC vorbereitet. Ich schreibe eine ganze Zeile (1 Pixel breit) in den RAM (der ist so breit wie das Display, also 32 Bytes) und muss dann nur links und rechts die beiden End-Bytes verodern
-
Thread
String aus FLASH in den ROM
Hi, ich habe ein String alla [c]static char zeile1[4] PROGMEM = "huhu";[/c] im FLASH. Den will ich jetzt in dem ROM holen um ihn per UART auszugeben. Kann mir da mal jemand einen Tpp geben?! I Ich habs mit [c]char buf[
einen Tpp geben?! I Ja. Lass um Himmels Willen den Compiler arbeiten. Der weiß nämlich das der String "huhu" aus 5 Zeichen besteht und nicht aus 4! Der Compiler kann das wunderbar selber, du musst ihn nur lassen [C] static char zeile1[] PROGMEM = "huhu"; [/C] Jetzt zählt der Compiler für
-
Thread
STM32F4 USB CDC Änderung des Gerätenamen
#define USBD_CONFIGURATION_STRING_FS "CDC Config" #define USBD_INTERFACE_STRING_FS "CDC Interface" #define USB_SIZ_BOS_DESC 0x0C
'r', 0, 'o', 0, 'e', 0, 'l', 0, 'e', 0, 'c', 0, 't', 0, 'r', 0, 'o', 0, 'n', 0, 'i', 0, 'c', 0, 's', 0 }; const uint8_t Virtual_Com_Port_StringProduct[VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT] = { VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT
-
Thread
DS18b20 Reset geht nicht
{ PORTA |= (1<<ERRNEIN); // lcd_string("Reset okay"); }[/c] Funktioniert drotzem nicht.
c]void lcd_string(char *s) { char c; c=*s; while (c != '\0') { RS_S; DISPLAY_PORT = c; DISPLAY_EN(); DISPLAY_BUSY(); _delay_ms(10); *s++; c=*s; } }
-
Thread
Punkt wird als ASCII gesendet, lesbar nur als dezimal Zahl. Zahlen und Buchstaben funktionieren!
dann sendest oder direkt den Wert angibst. Abgesehen davon, ist es eher unwahrscheinlich, das ein uC auf eine Anfrage mit einen konstanten String antwortet. Die Antwort könnte sich dann der PC nämlich selbst geben ohne den uC zu bemühen, weil sie konstant ist. Vermutlich willst Du also etwas ganz anderes
wird, bekomme ich auch > erst eine 4 und dann eine 6 Nein, dir ist nichts klar!!! Schau dir C-Strings (Arrays, Pointer usw., also C-Grundlagen), was es mit ASCII auf sich hat und hier das AVR-GCC-Tutorial/Der UART an.
-
Thread
"Zeiger" auf struct-Element
_sensor_val, Buffer, 10); lcd_string(Buffer); [/c]
10); break; default: } lcd_setcursor(0,0); lcd_string(Buffer); [/c]
-
Thread
ESP - in der Schleife gefangen
im Beitrag #4640843: > use of enum 'move_state' without previous declaration Ups, ich hätte: [c] void setState( enum e_move_state state ){ [/c] statt [c] void setState( enum move_state state ){ [/c] Schreiben müssen.
Die einzigen fehler, die ich noch finde, sind 2 falsch gesetzte Semikolon: so: [c] case STATE_NO_MOVE: digitalWrite(LS_out_0, LOW); digitalWrite(LS_out_1, LOW); break; [/c] statt so: [c] case STATE_NO_MOVE; digitalWrite(LS_out_0, LOW);
-
Thread
Einzelne Zeichen in einem String überprüfen.
://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F
Simon wrote: > Bin halt noch Anfänger :-D Kein Problem. Strings sind die erste große Hürde, die es in C zu meistern gilt.
-
Thread
Strukturmember zuweisung falscher Datentyp
Guck dir mal an, was Strings in C eigentlich sind. Gruß Lasse
ok, .... Lars hatte recht. Ich muss nochmal lesen wie ich Strings in C behandeln muss :D das deklarieren von Strings über ein Array mit [c] char text[15]; [/c] birgt doch mehr verständniss das man haben muss. ich merke mir mal: Wenn das char Array bereits
-
Thread
Abfrage ob Buffer zu ende ist.
Ich habe hier eine Funktion die z.B. ein byte formatiert ausgibt: [c] void usart_write_P (const char *Buffer,...) { by = pgm_read_byte(Buffer++); if(by==0) break; // end of format string } [/c] Aufruf mit: [c] int u; u = 0x00; (oder irgend ein anderer
Argumente. Das heißt [C] usart_write_P("receive: %i \n", (int) u); [/C] übergibt in "buffer" den String "receive: %i \n", welcher mit dem impliziten Character 0x00 abgeschlossen ist. Die Bedingung [C] if(by==0)
-
Thread
WinAVR compile errors: 'PORTB' undeclared ...
-Wundef -Wa,-adhlns=obj/strings.lst -std=gnu99 -Wundef -MD -MP -MF .dep/strings.o.d strings.c -o obj/strings.o strings.c: In function `main': strings.c:41: error: `UCSRB' undeclared (first use in this function) strings.c:41
) strings.c: At top level: strings.c:60: warning: `SIG_UART_DATA' appears to be a misspelled signal handler strings.c: In function `SIG_UART_DATA': strings.c:67: error: `UDR' undeclared (first use in this
-
Thread
Frage zu Matrix3x4.c
Verwendung wie unsigned char. richtig? 2. Wie binde ich diese Datei in meinen C-Code ein? In "int main" oder gehört das noch davor? 3. Wie kann ich die eingegebene Zahl auf einem Display darstellen? mit lcd_string(col-row);? Vielen Dank für eure Mühe Gruß Micha
if( keyNr != 0 ) { lcd_setcursor( 0, 1 ); sprintf( buffer, "Code %02d, Zeichen %c", (int)keyNr, (char)MXKEY_TAB[keyNr - 1] ); lcd_string( buffer ); } } } [/C]
-
Thread
codeVisionAVR "ftoa"-Befehl
Das kann so nicht funktionieren: char *string; float abc=23.45; ftoa(abc,2,string); lcd_puts(string); string ist ein nicht initialisierter char-Pointer. ftoa erwartet als drittes Argument einen Pointer, der auf einen beschreibbaren Speicherbereich verweist. Versuch' mal: char string[10]; float abc=23.45; ftoa(abc,2,string); lcd_puts(string); oder meinetwegen char buffer[10]; char *string; float abc=23.45; string = buffer; ftoa(abc,2,string);
-
Thread
Variablenwert auf LCD ausgeben
Hallo Manfred, ich muss korrigieren: (c)lcd_putc(/c) Put C wie Char also Zeichen (c)lcd_puts(/c) Put String. Hier noch eine fertige Routine für 16 oder 32-Bit Zahlen. http://www.mikrocontroller.net/topic/121526 Ich verwende diese
den String danach ausgeben. verwendet [C] .... int8_t i = 5; int16_t j = 8; lcd_puti( 8 ); lcd_puti( i ); lcd_puti( j ); uint8_t k = 12; lcd_putu( k ); [/C] lcd_puti für
-
Thread
Uart Daten-Empfang
Korrekt ist dein Code deswegen trotzdem nicht. > Mir gehts um die verarbeitung > der daten mit, > [c] > int mess = atoi( &inLx[2] ); > TWert[sensNr ] = mess; > [/c] > > ich bekomme das Vorzeichen nicht angezeigt Nur mal angenommen, der empfangene String stimmt tatsächlich. Dann sieht
mit einem ';' abgeschlossen. Dazu schickt er ein '?' gefolgt von der Sensornummer. Will der eine µC also vom anderen die Daten des Sensors 15 haben, dann schickt er den String "?15;". Will er die Daten vom Sensor 9 haben, dann schickt er "?9;" Der andere µC antwortet auf eine Anfrage, indem er einen
-
Thread
Arrays im Flash beim Atmega
c] nun brauche ich noch ein Array aus einer Structur im Flash was immer schön einen 16 bit Wert hat und danach die Adresse zu den obrigen 'Strings'. etwa so: [c]static struct{ uint16_t Adresse
> [C] > static struct{ > uint16_t Adresse; > uint16_t* p_auf_ID_string; > } > [/C] main.c:58: warning: initialization from incompatible pointer type Na ja. Ein Pointer auf einen String ist
-
Thread
Woran erkenne ich das ein Projekt GPL-Code verwendet
, aber selbst dann kann es ein funktionsgleicher Nachbau sein. Für einen Beweis sollten schon Strings o.dgl. drinstecken, z.B. "libfoo error: ..." oder gar "libfoo v08.15, (c) 2023 ..."
Produkte welche keine Deklaration haben auch keine OSS Software verwenden: https://www.philips.de/c-w/search.html#q=open%20source%20lizenz%20gpl&cq=%40ps_contenttype_key%3C%3Eproduct Michael
-
Thread
Pointer und Strings verketten
Testvariable + ")"); > funktioniert nicht. dafür wurde die Funktion "sprintf()" erfunden: [c] #define LENGTH 128 char str[LENGTH]; sprintf(str, "Testfunktion(%d)", Testvariable); [/c] Die kann man durchaus auch dazu verwenden, mehrere Strings in einem Aufwasch aneinanderzuhängen: [c] sprintf(str, "%s%s%s%s", "das ", "sind ", "mehrere", "Strings aneinander."); [/c]
-
Thread
in C möglichst elegant einen gemischten String anlegen
ich möchte in C einen Header für eine spezielle Datei erzeugen, der ein Gemisch aus Strings, Bytes, Longs enthält. Konkret um eine CSW2 Datei zu schreiben: http://ramsoft.bbk.org.omegahg.com/csw.html#CSW2FORMAT
Wird das PC-Software oder muss das auf einen uC mit ein paar Bytes RAM?
-
Thread
Bootloader Verstandniss Frage
Set frame format: 8data, 1stop bit }//end USART_Init() void USART_Putc(unsigned char c) { while (!(UCSRA & (1<<UDRE))); UDR = c; // Put data into Buffer, sends the data _delay_ms(10); }//end USART_Putc() void USART_Puts (char *string) { while( *
Set frame format: 8data, 1stop bit }//end USART_Init() void USART_Putc(unsigned char c) { while (!(UCSRA & (1<<UDRE))); UDR = c; // Put data into Buffer, sends the data _delay_ms(10); }//end USART_Putc() void USART_Puts (char *string) { while( *
-
Thread
3-stellige Zahl in einzelnen Stellen ausgeben
halte. Sehr gute Formulierung ;-) Wie wäre es denn mit ner Schleife? (pseudo-bascom, da ich c bevorzuge): zahl = 123; // umzuwandelnde zahl string[3] = ''; // ausgabe string als array i = 3; // anzahl gewollter stellen do { i = i - 1; string[i] = 0x30 + zahl MOD 10; zahl = zahl / 10; } while ( i <> 0 ) // in string steht jetzt '123' Sowas (nur in C) verwende ich immer...
-
Thread
Hex ASCII -> Int
); ^^ Hiermit wird schön: "Test: 63" (also ascii hex von c) ausgegeben. Nun will ich c als char in das ascii hex umwandeln und ausgeben. Beispiel 2: uint8_t stringLength = 0; uint8_t StrBuf[50]; char test[] = "c"; stringLength
dann musst du schreiben: teststring = "c"; test = *teststring; stringLength = sprintf((char *)StrBuf, "Test: %2X \n\r", test); Grüße Walter
-
Thread
Wickenhäuser: Error: integer expression must be constant
debugging. Superior code quality due to powerful optimizer. [/c] Also ANSI C? Aber Wickenhäuser ist verdammt komisch. In der string.h steht nur folgendes: [c] /******************************************* * string.h for uC/51 (C) 2002 Wickenhaeuser ******
Bastian N. schrieb im Beitrag #5019265: > Achso read_char gibt es in C nicht. Bin sicher es ist getchar() > gemeint... Im Original wird der String mit inputse() gelesen, was auch nicht in der C-Bibliothek vorhanden ist. Da ich nicht wusste, von welcher Datenquelle