-
Thread
I2C Uhr zeigt I2c Error!
bei I2C ein Fehler auftritt: Meldung Error an LCD i2c_stop(); lcd_string("I2C Error!!"); } else habe einen DS1307 an 0x68 adressiert.. wo könnte
delay_ms(50); // sicherheitshalber warten if ( ret ) { //wenn bei I2C ein Fehler auftritt: Meldung Error an LCD i2c_stop(); lcd_string("I2C Error!!"); ich versuche gleich nochmal den ds 1307 auszutauschen. Ich habe den verdacht, dass ich den Baustein
-
Thread
ESP32 HTTP Client: Fehlercode -1 nach einiger Zeit?
api.openweathermap.org/data/2.5/forecast?q=Kassel,DE&APPID=<XXXXXXXXXXXXXXXXX>&mode=json&units=metric&cnt=1 [c] static JsonDocument doc; static HTTPClient http; static String payload; /* Anfragen an Server richten */ int RequestWeather() { String url = openweather; /* Starte die Anfrage und hole
normalen Esp32 Board am WE. Gibt aber auch noch andere Libraries und Möglichkeiten als die verwendete. [c] /* Anfragen an Server richten */ int RequestWeather() { JsonDocument doc; HTTPClient http; String payload; String url = openweather; debugln("GET Anfrage Openweathermap...")
-
Thread
Zeiger auf Element im String
der zweiten LED usw... Nun habe ich den UART Code aus dem Tutorial wie folgt verändert: [c] char stringbuffer[64]; if (uart_rx_flag==1 && buffer_full==0) { get_string(stringbuffer+2); r = atoi( &stringbuffer[2] ); // r für rote LED buffer_full=1; } [/c] Die Strings werden gesendet. Erfolgreich Nachgerpüft. Die ersten beiden Chars im Stringbuffer sind reserviert. Warum liest er nicht den Char?
-
Thread
strstr() gibt keinen NULL pointer zurück? (atmega 2560)
Hans L. schrieb im Beitrag #5914168: [c] while( (hier = strstr(uart_string, "G01 X")) != NULL) { strncpy(x_values[0],hier+5,6); strncpy(y_values[0],hier+5+11,6); number_of_coordinates++; USART_Transmit('p'); } [/c]
Es geht kürzer und klarer. Das Einfügen der Z-Koordinaten sind jetzt ein Kinderspiel. [c] #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> char uart_string[]="G01 X69.204775 Y23.337389 Z-0.100000 G01 X80.964849 Y21.666507 Z-0.100000 G00 Z0.100000"; int
-
Thread
Variable auf LCD anzeigen
Compiler wieder so einen Dondermodus, bei dem er const Dinge nicht ins RAM sondern ins Flash legt? [C] send_string(const char *str){ //Ausgabe eines String while(*str != '\0') //Ausgabe bis terminierende Null send_char(*str++); //zeichenweise Ausgabe } [/C] dann könnte das nämlich
hast, ist das nämlich im Grunde alles fehlerhaft: Der Default ist int und du returnierst nichts. [C] void send_string(const char *str){ //Ausgabe eines String while(*str != '\0') //Ausgabe bis terminierende Null send_char(*str++); //zeichenweise Ausgabe } [/C]
-
Thread
Operation "Caruso"
manchmal aber auch nicht. Du kannst z.B. sowas verwenden um immer einen Befehl zu bekommen. [c] bool auswerten = false; String befehl = ""; void loop() { if (Serial.available() > 0) { char empfangenesByte = Serial.read(); if(empfangenesByte == '\n'){ auswerten = true;
dann "\n" zu '\' und 'n' und somit zu 2 Bytes ? Nö, das '\' leitet ein Sonderzeichen in einem String in C/C++ ein.
-
Thread
STI100 kommt mit dem Schreiben nicht nach
Hmmm ich speichere die Daten als String, entweder stehe ich auf dem Schlauch oder verstehe Dich falsch - wenn ich zb die "15" speichern will, wären das 2 Stellen als String aber 4 Stellen als Binärzahl, die übertragen werden müssten ("1111
Hi >wenn ich zb die "15" speichern >will, wären das 2 Stellen als String aber 4 Stellen als Binärzahl, die >übertragen werden müssten ("1111") Nein. 15 als String: $31,$35, evtl. noch $00 15 binär : $0F MfG Spess
-
Thread
UART String empfangen
// Noch ein '\0' anhängen um einen Standard // C-String daraus zu machen *Buffer = '\0'; }[/c] Das liegt glaube ich daran, dass hier ein fehler ist. [c]NextChar = uart_getc(); // Warte auf und empfange das nächste Zeichen
inkrementiert wird.. Jetzt gibt es aber ein Problem dieser Code funktioniert auch nicht(mehr). [c] while( NextChar != '\n' && StringLen < MaxLen - 1 ) { *Buffer= NextChar; Buffer++; StringLen++; NextChar = uart_getc(); }[/c] Warum funktioniert das nichtmehr? Warum hat das Beispiel
-
Thread
c18 ltoa probleme
ltoa(long ichbineinwert,string) ändert mir in c18 auch ichbineinwert mach ich da was falsch?
[c] set_cursor(2, 1); stringptr = &string[0]; ltoa(freq,string); printf("freq: %s Hz ", stringptr); ad9833_sendfreq(freq); [/c] zb kurz vorher noch
-
Thread
Empfangen eines String
// Zeichen aus UDR zurueckgeben } int main (void) { uint8_t i; char c; char* s; char string[length+1]; uart_init(); while(1) { s=string; i=0; do { c=uart_getc(); if (c!='\r') { *s=c; uart_putc( c ); s++; i++; } } while( i!=length && c!='\r'); *s=0; uart_puts( "\r\n" ); uart_puts( "eingegebender Text: " ); uart_puts( string ); while (!(UCSRA
-
Thread
int Zahlen aus String ziehen
Oder falls der Text vor der Zahl nicht bekannt ist [C] int i, zahl; for(i=0;text[i]!='\0'&&!isdigit(text[i]);i++) ; zahl = atoi(text[i]); [/C]
). Dafür strukturiere ich Quelltext durch an bestimmten Stellen eingefügte Leerzeichen. [c] for (i = 0; text[i] && !isdigit(text[i]); i++); [/c] So sähe das bei mir aus. Um auf Deine eingängliche Kritik einzugehen: Die Variable "text" würde, wenn sie denn in einem vergleichbaren
-
Thread
Suche NMEA Parser für AVR
02.9876' >Ich denke es gibt keine führenden Nullen? Es steht doch auch keine Null am Anfang des Strings. Du musst z.B. 'dddmm.mmmm' wie eine Maske über den String legen so das der Punkt übereinstimmt. Ein String mit dem Field Type dddmm.mmmm fängt nicht mit einer Null an, außer dddmm ist Null. Der
rein, da steht eigentlich alles drin: http://git.savannah.gnu.org/cgit/gpsd.git/tree/driver_nmea0183.c
-
Thread
Problem: Float in String umwandeln mit memcpy
http://www.geeksforgeeks.org/convert-floating-point-number-string/
C lernen! https://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf
-
Thread
Überlauf?
> > Display string from program memory without auto linefeed. > Parameters: > s string from program memory be be displayed > Returns: > none Hmpf, wie sieht denn dein Funktionsaufruf auf? etwa [C]
Du hast vollkommen recht: [c] /** @brief macros for automatically storing string constant in program memory */ #define lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) [/c]
-
Thread
STM32 USART Strings verarbeiten
und so verarbeiten, dass das Motor PWM dann 75 oder 100% ist. Hierzu muss ich den empfangenen String spliten, vergleichen und und dann die Zahl in einen anderen Datentyp umwandeln. Das senden und empfangen klappt...aber mit der String verarbeitung scheitert es... hier mal mein Code: [c]
[c] //Nieuwe string ontvangen via USART1 if(printRx_2){ printf("Ontvangen %s",receiveRx_2);printRx_2=0; char delimiter[] = "=";//op deze tekens wordt de string gesplitst
-
Thread
BTM 222 paaren mit Androis app
grün. In der Textbox steht allerdings immernoch der Standardtext "Hier steht immer..." Mit dem µC sende ich einen string "TEST" mit der baudrate 19200.
Also ich habe mit dem µC HelloWorld Strings oder Namen oder auch nur Buchstaben senden und empfangen können mit der App. Ich nutze ein Nexus5 irgendwie wundert es mich das die App nicht auf anderen Geräten funktioniert...
-
Thread
Attiny412 - String über USART
\ ((float)(F_CPU * 64 / (16 * (float)BAUD_RATE)) + 0.5) #include <avr/io.h> #include <string.h> #include <util/delay.h> static void USART0_sendChar(char c) { while (!(USART0.STATUS & USART_DREIF_bm)) { __asm__("NOP"); } USART0.TXDATAL = c; } static void USART0_init(void
Hier das mit dem aktuellen 'Atmel Studio 7' kompilierte Programm des TOs. Der String "Hi\r\n" - der im obigen Hex-File fehlt - ist im Datensatz mit dem Sternchen. [pre] :1000000019C020C01FC01EC01DC01CC01BC01AC00C :1000100019C018C017C016C015C014C013C012C034 :1000200011C010C00FC00EC00DC00CC00BC00AC064
-
Thread
Array an funktion übergeben möglichkeiten
Ziellänge und gibt einen negativen Wert zurück, wenn die übergebene Stringlänge überschritten würde. Strings sind in C doch auch nichts anderes als "arrays". Die Länge des Feldes muss man bei der Definition entweder selber festlegen 'char Stringname["Länge"];', oder sie wird durch einen ersten Satz festgelegt
Mikro 7. schrieb im Beitrag #7207424: > Beispiel für Array ohne Zerfall in C: Gerade bei der Ausgabe einzelner char ist eine feste Array-Größe doch Quatsch, oder weißt du immer, wie lang dein längster String ist? Bei der Übergabe von Strings hat man sich bei C ein Endezeichen
-
Thread
C in String-array basteln, brauche Hilfe
Hallo, ich versuche in C ein String-array zu basteln. Da mache ich wohl Fehler, denn das will nicht funktionieren: int main( void ) { lcd_init(0); lcd_init(1); lcd_init(2); lcd_init(3); // LCD: 40*4 clearLCDline
mache ich wohl Fehler, denn das will nicht funktionieren: In der Tat. Du hast vergessen, in einem C-Buch nachzulesen, wie Strings in C funktionieren. >// ab hier funktioniert nichts, nur leere Zeilen > char line[50][4]; > line[50][0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn"; Das geht
-
Thread
Interruptroutine und Hauptprogramm wird nicht richtig ausgeführt
richtig ausgegeben (1) aber der Antwortstring wird nicht gesendet. Erst wenn ich 2 weitere male einen String sendet wird der Antwortstring gesendet, obwohl die Variable, an die die Bedingung geknüpft ist, schon beim ersten mal 1 war. Hier noch der Code damit ihr es besser versteht:; [c] #include <stdint.h
(); do { receiveflag = Telegrammauswertung(nutzdaten); }while(1); while(1); } [/c] Wenn ich jetzt folgenden String sende: 52610300000100B7 sollte ich von der Routine Telegrammauswertung eigentlich nur einmal ein Zeichen zurück bekommen wegen: [c] if(arrayplace == 2)
-
Thread
c++ iostream
Hallo avr-fans, Ich habe WinAVR installiert und möchte ein Projekt in C++ erstellen. Die C++-typischen include-files (iostream, string etc) werden vom Compiler nicht gefunden. Wo sind die geblieben? Für einen guten Tip wäre ich sehr dankbar. Hermann
Also die string.h ist in diesem Ordner : C:\Programme\WinAVR\avr\include(bei mir zumindest ;)) Die iostream.h gibt es glaube ich nicht mehr...ich habe jedenfalls auch keine bei mir auf dem Rechner(Im WinAVR Ordner
-
Thread
Ausgabe EDIP240 über I2C will nicht so
was du tun kannst, ist da jetzt irgendwelche Dinge anzunehmen. Also eine Funktion, die einen String verschickt und dabei die korrekte Prüfsumme für diesen String berechnet. Und dann baust du dir eine Funktion, die dir den zu sendenden String anhand der Zahl zusammenbaut. Hast du den String, dann
schicken. So wie du das jetzt machst, machst du dir eine Menge Arbeit für nichts. void lcdString( const char* txt ) { ... }
-
Thread
Programm zu gross/ Sparpotential?
ich könnte die floats auch durch Strings ersetzen, aber ich komme mit den Dingern einfach in C nicht klar. Zeichenweis kopieren bis eine ; kommt wäre nicht das Problem, aber dann komme ich mit dem zeug nicht mehr klar. Einfaches Beispiel: sprintf(sendstring,"DIS!%c", 0x0d); send_string_uart(sendstring); Das ist schon nicht so gut. Das müßtre doch auch direkt gehen, sowas wie send_string_uart("DIS!"); aber wie bekomme ich 0x13 ans Ende der Ausgabe?
-
Thread
Mehrere µC über 1-wire verbinden
Link wär nicht schlecht, aber leider arbeite ich BasCom. Ich bräuchte halt ne Lösung wie ich dem µC eine Adresse zuweißen kann um ihm dann die Daten die in einem String sind über denn befehl Print schick. by
Das wär ja Super. Jetzt bräucht ich nur noch Hilfe, wie ich den String über I2c senden kann. Könnt mir da vieleicht wer weiterhelfen? by
-
Thread
Fehler bei strlen() in mspgcc ?
((str[si] != 0) && (si<li)) si++; return si; } [/c]
abzufangen, als darauf zu blind zu vertrauen, dass alles gut geht ( egal, ob ich für den PC oder für den uC einen Programm schreibe). Sicher hast Du recht, dass das Programm ein Fehler hat, wenn sich der String mit bekannter Länge im Flash steht und plötzlich nicht mehr ins Array passt. Was machst du aber
-
Thread
AtMega8 CTC Timer läuft zu langsam
//Wochentag anzeigen lcd_setcursor(3,2); switch(tag){ case 0: lcd_string("Mo, "); break; case 1: lcd_string("Di, "); break; case 2: lcd_string("Mi, "); break; case 3: lcd_string("Do, "); break; case 4: lcd_string("Fr, "); break; case 5
sprintf( buffer, "%02d:%02d:%02d", stunde, minute, sekunde ); lcd_setcursor(3, 0); lcd_string( buffer ); } } } [/C] Und noch was: Mach deine Sekunden, Minten, Stunden und Tag Variable als uint8_t und nicht als unsigned int. Du musst deinem AVR keine 16 Bit Arithmetik aufzwingen
-
Thread
SD Karte/SPI Problem ab 200A -> Störungen?
} ErrorCode = ErrorCode | ERRORSDCARD; ErrorLog = true; ErrorString += "Reason: SD Card Write Error\nErrorCode: "; ErrorString += String(ErrorCode); ErrorString += "\nPowercycle: "; ErrorString += String(power_cycle); ErrorString += "\nLogCounter: "; ErrorString += String(log_counter); ErrorString += "\nSystime: "; ErrorString += String(systime); ErrorString += "\nMessage: File could not be written correctly\n\r"; } [/c]
-
Thread
Pollin Grafik LCD-Modul OPTREX F-51320AE
Wie kann ich mit dem Quelltext String ausgeben? Also nicht so ein String -> lcd_string_P("hallo welt") sondern so eins: char MyString[10] = "Hallo"; lcd_String( MyString ); wie kann man das realisieren? Danke! :)
eine C Datei in eine C Datei zu includen? #include <avr/pgmspace.h> #include "font6x8s.c"
-
Thread
MPLAP Snap halb im Nirvana
63 00 6F 00 72 00 70 00 6F 00 72 00 61 00 74 00 c.o.r.p.o.r.a.t. 65 00 64 00 e.d. ------ String Descriptor 2 ------ bLength : 0x32 (50 bytes) bDescriptorType : 0x03 (String Descriptor) Language 0x0409 : "MPLAB Snap ICD CMSIS-DAP" Data (HexDump) : 32 03 4D 00 50 00 4C 00 41 00 42 00 20 00 53 00 2.M.P.L.A.B. .S. 6E 00 61
-
Thread
_delay_us macht eine ms
und low zusetzten. Hier scheitert es schon: Folgendes Programm habe ich dazu geschrieben: [c] #include <avr/io.h> #include <stdint.h> #include <avr/interrupt.h> #include <util/delay.h> #include "var.h" #include "lcd.h" ... ... lcd_init(); lcd_loeschen(); lcd_string("Test
Schritt. Ich kann nämlich dieses Elend nicht mehr sehen. Die Zahlenausgaben ersetzt du durch [C] void lcd_char(char c) { RS_S; DISPLAY_PORT = c; DISPLAY_EN(); DISPLAY_BUSY(); } void lcd_string( const char* str ) { while( *str ) lcd_char( *str++ ); } void lcd_uint8
-
Thread
Config Parser für embedded
Dafür benutze ich gerne cJSON. Ist nur eine C-Datei und sehr simpel zu nutzen. pitschu
Bei einer String basierten Config wird man um Dynamik nicht drumherum kommen wenn man die Config auf dem µC auch ändern möchte. Wenn du z.B. einen vorhandenen String Wert änderst und der neue ist ein paar Zeichen länger
-
Thread
Code Optimiereung AVR C
auch: [c] enum { meine_konstante = 5, }; [/c]
NixChecker wrote: > Na ja "#define c a+b" geht aber "#define a 7" ist doch bescheuert. Gerade das erste fällt eher unter die Kategorie "bescheuert". Wenn du es nämlich in einem Ausdruck benutzt wie: [c]result = 5 * c;[/c] ...
-
Thread
Datentyp uint8_t
main.c" ../main.c: In function 'main': ../main.c:133: warning: large integer implicitly truncated to unsigned type Finished building: ../main.c [/pre] mit dem AVR-GCC v 4.3.0 (WinAVR 20080512)
0xFFFF). uint32_t = 0 .. 4294967295 (0xFFFFFFFF) Ich glaube mit Änderung der Deklaration nach [c] uint16_t message[4]; [/c] bist du besser dran. Glaubsch du mir.
-
Thread
String Ausgabe löst Reset aus
, ob du jetzt im Programm alles in einem String zusammengepfercht hast oder ob der Text den es anzeigen soll aus meherern Ausgaben stammt [C] char a [8]= " Stop1 "; uart_puts(a); [/C] Du brauchst hier kein Zwischenarray. Es ist absolut kein Problem, den String einfach direkt an uart_puts zu übergeben [C] uart_puts( " Stop1 " ); [/C] Aber wenn du solche Arrays hast, dann ist es am besten den Compiler die Zeichen zählen zu lassen. Die Arraygröße
-
Thread
String Hilfe gesucht
" [/c] - Möglicherweise braucht man gar nicht kopieren, sondern lässt den String einfach stehen und verwendet halt nur den hinteren Teil. Beispiel: [c] #define GENUG 50 char langerString
printf( "jetzt nur noch %s", restlicherString ); // "portb" [/c]
-
Thread
[Atmega32]UART sendet nicht
ja legales C. Nur nicht sinnvoll bzgl. UART. Sinnvoll wäre: while(!(USR & (1 << UDRE))) ; UDR = *string;
) { uint16_t i=0; while (*string) { //solange bis ´\0´ das Ende markiert uart_putc( *string ); string++; i++; if( i == 10000 ) fault(); } } [/C]
-
Thread
AVRGCC C++ undefined reference to Max7456::Max7456()
* @param y : the vertical position of character in memory. * @code * charact c={0x44,....} //Whatever charact here * max.sendCharacter(c,4,5); //put c at 4th line 5th column ie. address 54. * max.sendCharacter(c,0x43); //put c in mem at address 43. * @endcode
directory that has spaces, enclose it in quotes. EXTRAINCDIRS = # Compiler flag to set the C Standard level. # c89 = "ANSI" C # gnu89 = c89 plus GCC extensions # c99 = ISO C99 standard (not yet fully implemented) # gnu99 = c99 plus GCC extensions CSTANDARD = -std=gnu99
-
Thread
Int to String
Mit C
den " " steht //und schieb diesen Wert in die char buffer[] lcd_string(buffer); //gibt das Array auf dem LCD aus [/c] deine LCD #includes müssen angepast werden; mit dem Bereich %d kannst du die Texte Formatieren, unteranderm auch Floats %f oder auch
-
Thread
Problem mit UART-Interrupt
nicht immer zurückgesendet. Hier der UART-Handler der Gegenseite, ein Atmega128 mit I2C-Display: [c] void UartRxHandler (unsigned char c) { static unsigned char tmpBuffer [50]=""; static short i=0; if (c!='\r') tmpBuffer[i++]=c; else { tmpBuffer[i]='\0'; lcdPrintString(tmpBuffer); i=0; tmpBuffer[0]=0; } } [/c] Kann jemand eine Fehlerquelle entdecken oder liegt es an der physikalischen Verbindung?
-
Thread
itoa im Bezug auf LCD
vom Tutorial. Wenn ich den folgenden Code einfüge erscheint am LCD wie gewünscht die Zahl 95. [c] char a[10]; char i = 95; itoa(i,a,10); lcd_string(a); [/c] Es erscheint nach dem Befehl BULD jedoch diese Fehlermeldung: >../LCD.c:188: warning: implicit declaration of function 'itoa'
schrieb: > Wenn ich den folgenden Code einfüge erscheint am LCD wie gewünscht die > Zahl 95. > > [c] > char a[10]; > char i = 95; > > itoa(i,a,10); > lcd_string(a); > [/c] > > Es erscheint nach dem Befehl BULD jedoch diese Fehlermeldung: >>../LCD.c:188: warning: implicit declaration of
-
Thread
UART Übertragungsfehler
über String-Verarbeitung hier durch: http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F
// ist das dann ein String zeichen[0] = uartGetChar(); while (zeichen[0] != '\r') { strcat(standby_text_Z1,zeichen); print (standby_text_Z1); zeichen[0] = uartGetChar(); } } [/C]
-
Thread
FRAGE zu C-Proggen
Hi, Also meine Situation is folgende: Ich habe ein funktionierendes LCD Programm das einwandfrei läuft, nun möchte ich aber nicht nur statischen Text anzeigen sondern auch durch Tastendruck eine Ziffer erhöhen bzw. senken. Dazu hab ich einen Variable angelegt die eben per tastendruck größer und kleiner wird nun hab ich aber das Problem, das ich nicht weiß wie ich einen Variable in den LCD-string einbinden kann ^^. Derzeit wird ein Unterprogram aufgerufen und in die Klammer der gewünschte Text geschrieben, nur wie kann ich da einen Variable einbauen Codeauschnitt: lcd_string("PATNR:
-
Thread
I2C mit Sensirion Sensor
if ((TWSR == 0x28)) { lcd_setcursor(4,2); lcd_string("C"); } //Senden erneuten Startbedingung TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); //Warten bis diese verschickt wurde while (!(TWCR & (1<<TWINT))); //Senden der
TWEN); status=TWDR; sprintf(Buffer, "%i", status); lcd_setcursor(0,1); lcd_string(Buffer);
-
Thread
Hilfe bei String-Array benötigt
[c] const char * const status_module_txtarr[] = { "String 1", "String 2", "String 3", "String 4" }; [/c] Edit: Oder möchtest du dein "STATUS_MODULE_TXT_MAXLEN" explizit verwenden?
man da c-strings drinn speichern kann. Und die länge des c-strings ist halt nicht definiert durch dessen Anzahl Elemente, sondern durch das 0 byte. Und damit hat man effektiv und wahrlich ein Array aus c-strings
-
Thread
Commandos mit µC verarbeiten
Nämlich "und hinten nach noch ein Return" Dieses Return ist wichtig. Denn es ist das Signal für den µC: jetzt ist eine Eingabezeile fertig, und du kannst anfangen den String auseinander zu nehmen, auf Fehler zu überprüfen und das Kommando auszuführen. > Die RS232 funktioniert und ich kann auch Zeichen
* Solange Zeichen empfangen und in einem String sammeln, bis der \n daher kommt. * Dann den String an den Leerzeichen in die 3 Teile aufsplitten. * Anhand des ersten Teils (Commando) in die entpsrpechenden Funktionen verzweigen, die die restlichen
-
Thread
sprintf Anzahl der Stellen über define festlegen
>Das funktioniert leider nicht. Was mache ich falsch? Normale Define funktionieren nicht in Strings. Da gibt es aber eine Lösung, die mir aber im Moment nicht einfällt, stand in einem C-Buch. http://stackoverflow.com/questions/1079020/can-you-expand-defines-into-string-literals Das ist aber
Antworten. Leider funktioniert das aber bei mir immer noch nicht ganz. Folgendes funktioniert: [c] ... uint8_t puffer[20]; uint8_t value = 123; ... sprintf( puffer, "Zählerstand: %3u",value); USART1_String_senden(puffer); ... [/c] Dieses funktioniert aber nicht: [c] #define ANZAHL 3
-
Thread
string tutorial für STM32 ?
, strncat usw. http://www.tutorialspoint.com/c_standard_library/string_h.htm
den string "12345678" hineinschreiben, oder überläuft das element ? [c] strcpy(parameter[150],"1234"); [/c]
-
Thread
C++ auf einem MC, wie geht das?
; int main(int argc, char* argv[]) { Templateklasse<int> a(1, 2); Templateklasse<string> b("Hallo", "Welt"); Templateklasse<1> b(1, 1); a.ausgabe(); b.ausgabe(); return 0; } [/c] Die Klasse "Templateklasse" kann ich jetzt mit verschiedenen Datentypen verwenden, beispielsweise mit einem "int" und einem "string". Daraus erzeugt der Compiler dann eine Klasse "Templateklasse" für Integers, und eine Klasse "Templateklasse" für Strings. Die Wikipedia hat eine ganz gute Erklärung zu Templates in C++: http:/
-
Thread
C, Dezimal -> Ternärzahl
In itoa/utoa kann man doch die Bases (radix) angeben. Damit ist die Umwandling ins 3er-System eine C-Zeile.
)); ternVal = atoi(charArInt); return ternVal; } [/C]
-
Thread
DOGM162 Display funktioniert nur sporadisch
Transferfunktion. Danke für den Hinweis, ich hab's in der Init auskommentiert. Meine Transferfunktion (String-senden) schaut aktuell so aus: void Disp_String(char *cData) { _delay_us(50); // warte auf Display // Data Mode vorbeireiten; setze RS high PORT_RS |= (1 << PIN_RS); while (*cData
> Wie sieht denn die Funktion füt Disp_Data aus dem Beispiel aus? Hier die Funktion für den String_Übertrag: void Disp_String(char *cData) { _delay_us(50); // warte auf Display // Data Mode vorbeireiten; setze RS high PORT_RS |= (1 << PIN_RS); while (*cData) { /* Starte