-
Thread
Elegantes Interrupten
Stephan R. schrieb im Beitrag #1848594: > 1.: wie bringe ich der Routine ELEGANT bei, dass Sie den String erst bei > > GPRMC anfangen soll ich würd's ungefähr so machen (code nicht getestet, einfach so hingetippt): [c] static const unsigned char prefix[]="GPRMC"; static const unsigned int
meisten Stringoperationen ja soweiso mittels str... Funktionen erfolgen werden. wegcasten: [C] volatile char uart_string [uart_maxstrlen]; .... char localCopy[80]; strcpy( localCopy, (char*)uart_string ); [/C] du weißt ja, das es sicher ist, an dieser stelle uart_string so
-
Thread
Initialisierung eines ST7036 in einem EA DOGM 163S-A
frequency 00 0001XXXX 00 BS|F2|F1|F0|XXXX wait Time > 26,3µs 7) Contrast Set 00 0111XXXX 00 C3|C2|C1|C0|XXXX wait Time > 26,3µs 8) Power/ICON/Contrast Control 00 0101XXXX 00 Ion|Bon|C5|C4|XXXX wait Time > 26,3µs 9) Follower Control 00 0110XXXX 00 Fon|Rab2|Rab1|Rab0|XXXX wait
string) { write_data(*string); *string++; } [/c] übersieht der Compiler hier die Klammer? Mfg Pat711
-
Thread
Serielle Schnittstelle zwischen 2 Atmega644
habe jetzt ein \n angehängt und es geht immer noch nicht wenn ich einen string vom pc zum µC sende geht es, das dieser den string ausgibt. also weis ich nicht was ich noch ändern kann
[c] uint16_t NextChar; uint16_t StringLen =0 ; NextChar = uart_getc(); while( 1) { *Buffer++ = NextChar; uputc(NextChar); StringLen
-
Thread
Messung niedriger Frequenzen schlägt fehl
vernünftige Ausgabefunktionen! Nur mit einem UART_SendByte wirst du auf Dauer nicht weit kommen. [C] void UART_SendString( char * str ) { while( *str ) UART_SendByte( *str++ ); } [/C] und schon kannst du einen String ausgeben [C] .... UART_SendString( "Fehler: Ueberlauf\
UART_Dump( char *Label, uint16_t value ) { UART_SendString( Label ); UART_SendUI16( value ); UART_SendString( "\n" ); } [/C] und schon ist es kein Thema mehr die Werte von TCNT1, ICR1 und meinetwegen auch noch PIND auszugeben [C] ....
-
Thread
von C++ nach C
kann mir jemand bitte das in C übersetzen?? bin nicht so gut in C vielen dank im voraus void FileAR(string filename,bool x) { fstream file(filename.c_str(),ios::in | ios::out | ios::binary); if(!file) { cout
http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/016_c_ein_ausgabe_funktionen_014.htm
-
Thread
kurze gcc Verständnisfrage
Hallo, hätte eine kurze Frage zur Arbeitsweise des gcc, bzw auch anderen C Compilern. Folgendes kurzes Codesegment: [c] char string[6]; printf("%i", sizeof(string)); [/c] liefert natürlich Ausgabe 6. Aber woher weis die Software die Länge des Strings (oder eines Arrays)? Reiche ich den String an eine Funktion weiter [c] doSomething(string); [/c] mit dem Prototyp [c] void doSomething(char *); [/c] und lass mir dort die sizeof ausgeben, kommt irgendwas raus. Anhand des '/0'
-
Thread
Datenpaket in Programmspeicher - C
Μαtthias W. schrieb im Beitrag #1832213: > Hi > > In ein C-Array umwandeln (z.B. mit einem Hexeditor wie > http://mh-nexus.de/en/hxd/) und dann einfach mitcompilieren. > > Matthias Meinst du damit sowas, wie Wayne geschrieben hat (Array aus Strings im
fshort-enums -MD -MP -MT dffa.o -MF dep/dffa.o.d -c ../dffa.c aufgerufen. Also alles korrekt.
-
Thread
String funken, die Tausendste.
sei. Siehe https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/getbytes/ Interessant ist auch String::begin() und due identische c_str() Methode, aber diese sind auf arduino.cc nicht dokumentiert, warum auch immer. Aktiviere in den Einstellungen
Habe die Doku von c_str() doch gefunden. https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/c_str/
-
Thread
printf ()- Probleme
unsigned char page_buffer[64]; Ist für einen I2C-EEPROM, der seitenweise geschrieben/gelesen wird. So, nach dem Lesen steht in page_buffer [0] "T" [1] "e" [2] "s" [3] "t" [4] 0x00 Im Rest irgendwas Und ich möchte den String über die serielle
zweitens ist das ERSTE Zeichen eine 0x00! Was soll > printf() da ausgeben? Nichts (einen leeren String), wenn es so arbeitet, wie es der C-Standard festlegt.
-
Thread
Bootloader mit UART-Lib startet nicht.
muss also -Ttext=0x3F800 eintragen... Habe ich getestet, und siehe da. Er sendet mir brav den String per uart_puts. Allerdings tut er das dauernd in Schleife. Obwohl am Ende des Bootloaders ein [c]while(1);[/c] steht.
Moment mal, wann genau sendet er den String? Meinst du diesen: [c] uart_puts("start\r\n"); [/c] Was soll denn das Konstrukt [c] while (1) { return 0; } [/c] bewirken? Wozu soll "return 0;" gut sein? Wohin soll er denn zurückkehren
-
Thread
fscanf() ändert Pointer? Wo liegt der Fehler?
NULL; free (Target2); Target2 = NULL; return (-1); } } [/c]
: [c] ret = fscanf (TMP2, "%"SCNi8, &val); [/c] Die SCN*-Makros gibt es für alle Integer-Typen und sind in inttypes.h definiert. Entsprechend gibt es für printf die PRI*-Makros.
-
Thread
Festkommawert auf LCD Display ausgeben
[c] for (i=0;i<strlen(string);i++) [/c] Das ist VIEL zu langsam, das sollte man nicht machen! Es wird bei jeden Schleifendurchlauf die länge vom STring neu ermittelt. besser ist es so: [c] while ( *string ) { string++; ... [/c] [c] if((string[i] == '0') && (flag == 0)) nop(); if((string[i] != '0') && (flag == 0)) { string_p[k] = string[i]; flag = 1; k++; } [/
-
Thread
ATmega8: ADC-Wert auf Display ausgeben klappt nicht
@ Steffen O. (derelektroniker) >lcd_data(adcwert); Das geht so einfach nicht in C. Du musst deinen ADC-Wert in einen ASCII-String umwandeln. Z.B. mit der Funktion itoa, siehe [[Festkommaarithmetik]]. Den kannst du dann ausgeben. MfG Falk
Ich habe es nun mal so gemacht: [c] adcwert=542; itoa(adcwert,buf,10); lcd_string(buf); [/c] Und dann erscheint auf dem Display 542, also stimmt warsch. was mit der ADC-Routine nicht. Aber ich hab doch alles so konfiguriert,
-
Thread
Unterschied char* x und char *x
Ok. Danke. Noch ne wichtige Frage: char string2[20]="red dwarf"; char string1[20]=""; strcpy(string1, string2); Das hier kopiert string 2 in string 1. aber laut anleitung ist der Syntax der Funktion: strncpy(char *s1, const
> char string2[20]="red dwarf"; > char string1[20]=""; string ist damit ein char[], das in c/c++ (fast) gleich einem char* ist. > strcpy(string1, string2); > > Das hier kopiert string 2 in
-
Thread
Double Wert in einzelne Ziffern aufteilen
H. C. schrieb im Beitrag #3788521: > Übersehe ich hier gerade eine leichte Lösung? char c = string[i]; if (c == '0') then.. else if (c == '1') then.. else...
radiostar schrieb im Beitrag #3788526: > H. C. schrieb: >> Übersehe ich hier gerade eine leichte Lösung? > > char c = string[i]; > > if (c == '0') then.. > else if (c == '1') then.. > else... Da ist switch/case aber eleganter: [C]
-
Thread
Probleme mit malloc()
Problem, wie gesagt auslesen klappt, aneinander hängen allerdings nicht. Mein Code sieht so aus: [c] if(HTTPRxBuffer!=NULL&&sizeof(HTTPRxBuffer>0)){ //does HTTPRxBuffer exist? Is there some data in it? -->first cycle is through sendString("cycle größer 1"); buf0 = (unsigned char
code goes here } [/C]
-
Thread
Probleme bei Ansteuerung über UART
nicht ausgelesen werden, obwohl er das eigentlich machen sollte. Hier der Code aus meiner main.c: [c] #include "header.h" #define UART_MAXSTRLEN 30 volatile uint8_t uart_str_complete = 0; // 1 .. String komplett empfangen volatile uint8_t uart_str_count = 0; volatile char uart_string
anderen Programm aus macht sondern von einem Terminal aus,dann ist das auch überhaupt kein Problem [C] while(1) { input_lesen(); if(uart_str_complete==1) { send_string( uart_string ); for(int i=0;i<6;i++) [/C] und schon schreibt einem der µC nach dem Drücken
-
Thread
Spannungsmessung mit PIC16F877A -->LCD-Anzeige
} } } [/c]
[c] void Interrupt(){ if (TMR0IF){ // <-- vielleicht INTCON.TMR0IF ?? INTCON.TMR0IF=0; TMR0=61; needUpdate--; } } [/c]
-
Thread
Probleme mit Strings
Mal vielen Dank für die Antworten. Aber den String auszugeben ist nicht das Problem. Ich weiss nicht, wie ich einen String dem Array zuordnen kann wenn es nicht gleich bei der Initialisierung geschieht. Also das funktioniert: char TextL1[] = "Testbild
fest definierten Texte ausgeben, sondern z.B. eingelesene Werte (die müssten dann natürlich noch in Strings umgewandelt werden) etc. Axel
-
Thread
PROGMEM auslesen
Verstehe ich nicht. > > #define MenuPoint0 "Einstellungen" > > ist doch keine Variable. Der String sollte doch dann im Flash liegen, > oder nicht? Warum sollte der im Flash liegen? Solange du nichts anderes anordnest, kommt der String ins SRAM Und hier [C] typedef struct def_MenuStruktur
Prototypen. Oder du verwendest __flash mitd er aktuellen Compiler-Version: [c] if (BtnEnS) //Button Enter Short { Menu[MenuItemCount].funktion(); } [/c]
-
Thread
Infinite Loop STM32 Zeichen ersetzen
bekomme bei folgendem Code ein infinite Loop. Zwei Moeglichkeiten: a) Worauf pStr zeigt, ist kein C-String, i.e. nicht durch NUL terminiert b) Du kaputtest diesen String irgendwo spaeter HTH leo
folgendem Code ein infinite Loop. > > Zwei Moeglichkeiten: > > a) Worauf pStr zeigt, ist kein C-String, i.e. nicht durch NUL terminiert > b) Du kaputtest diesen String irgendwo spaeter c) "replace" ist NUL, i.e. du vernichtest dein Stringende. > > HTH > leo
-
Thread
string /strcpy / strcmp
strcmp gibt bei Gleichheit der verglichenen Strings eine "0" zurück und keine "1"! Wenn bei Gleichheit in den if-Zweig gesprungen werden soll, dann muss die Abfrage lauten [C] if(!strcmp(buf1,buf2)) { //Code } else { //Code } [/C
Dann schreib doch: [C] ... if(!strcmp(buf1,buf2)) ... [/C]
-
Thread
LUA, C, PIC32, dynamischer Quelltext
Laufzeit klar, welche individuellen > Funktionen benötigt werden. Dann können das schon mal keine C-Funktionen sein - denn die erfordern in jedem Fall einen Compilerlauf. Aber natürlich kannst du Lua- Funktionen zur Laufzeit hinzufügen. Aus Sicht des C-Programms ist ein Lua-Programm ein simpler String. Bzw. ein File - wofür du aber zumindest einen Teil der POSIX API implementieren mußt. Aus dem C-Programm heraus kannst du dann einen oder auch mehrere Lua- Interpreter starten, denen du ihr Programm als String (oder File) vorgibst. Und dann kannst du Funktionen aus dem Programm eines laufenden
-
Thread
Pollin LCD Zeilen einstellen, aber wie?
eine printf() Funktion an zu passen und mit ihr die Ausgabe auf den Port zu machen?! Ich proge in C unter µVision3 von Keil auf eine AT89C51CC03 im 8-Bit Modus. mfg Taz
String zu formatieren.
-
Thread
Nochmals bitte um Hilfe bei ADC
Diese Schreibweise [C] if(wert>963){ lcd_string("wird geladen"); }else if(wert>928 && wert<963){ lcd_string("Batterie voll"); }else if(wert>785){ lcd_string("Ladung gring!"); }else if(wert<=737 && wert>717){ lcd_string("Ladung kritisch!"); }else if(wert==917){ lcd_string("abgeschaltet!!"); }else if(wert==0){ lcd_string("Schalter aus!"); } [/C] ist sehr unübersichtlich. Ist dir zb aufgefallen
-
Thread
Wie Arbeitstakte des Prozessors zählen?
Was bedeutet eigentlich das [c]const char* guiText1;[/c] im struct für die einzelnen Zustände? Warum definiert man das nicht einfach als string? [c]char guiText1[];[/c] welche Vorteile bring das? Wie kann ich den String ausgeben
in der lcd.c ist die Ausgabe der Strings so definiert: [c] void lcd_puts(const char *s) /* print string on lcd (no auto linefeed) */ { register char c; while ( (c = *s++) ) { lcd_putc(c)
-
Thread
GNU AS UTF-8 Software-Unschärfe
elf3| 00000020 32 2d 6c 69 74 74 6c 65 61 72 6d 0a 0a 53 59 4d |2-littlearm..SYM| 00000030 42 4f 4c 20 54 41 42 4c 45 3a 0a 30 30 30 30 30 |BOL TABLE:.00000| 00000040 30 30 30 20 6c 20 20 20 20 64 20 20 2e 74 65 78
C3A4C3B6 7 C3BC20C3 7 84C396C3 7 9C20C39F 8 003d E29480E2 .string "â â â â â â â â â â â â â " 8 9480E294 8 80E29480 8
-
Thread
Labor Aufgabe LED-Lauflicht
wozu einen bildspeicher?? wenn man einen bildspeicher nutzen wollte muesste man immer den gesamten string darin speichern (bei einem text "hallo" muesste dieser 5 x 5 byte gross sein) Ich wuerde erst einmal anfanngen den µC mit der Matrix zu verbinden sprich: PORTA : A0 .. A7 PORTB: B0 .. B7 PORTC: C0 .. C7 nu gehts los: Speicher den String in einer Variablen zB. "Hallo" nun gehst hin und gibst erst einmal den linken balken von dem H aus dann schreibst den kompletten Buchtaben H aus und
-
Thread
Atmega8 mehrere ADC verwenden
ADPS0); adc_y = ADCW; itoa(adc_y,Buffer,10); lcd_setcursor(3,2); lcd_string(Buffer); lcd_data(' '); } if (ADIF == 1) { ad_con += 1; if (ad_con == 4) { ad_con = 2; } } } [/c] ad_con
) ; adc_y = ADCW; itoa(adc_y,Buffer,10); lcd_setcursor(3,2); lcd_string(Buffer); lcd_data(' '); } ADCSRA = ( 1 << ADIF ); if (++ad_con == 4) ad_con = 2; } [/c] Ansonsten wirf mal einen Blick in das Atmega-Manual zum Thema ADC. Gruss, Rainer
-
Thread
Problem mit RC5
if( ... && bitnummer <= 14 && ... ) { gesamt[bitnummer] = 0; [/c] Du schreibst hinter das Ende des Array. [c] for(i=1;i<=14;i++) { itoa(ergebnis[i],test,10); send_string(test); } [/c] Wieso "ergebnis", die eingelesenen Bits stehen doch in
[3]; char wert[10] = "RC5:"; for(;;) { if(rdy==1) { send_string(wert); for(i=4;i<=8;i++) { itoa(gesamt[i],test,10); send_string(test); } rdy = 0; } }; } [/c]
-
Thread
malloc mit "for Schleife"
[i],"String"); } free(ptrString[0]); free(ptrString[1]); free(ptrString[2]); free(ptrString[3]); free(ptrString[4]); while(1) { } return 0; [/c] Noch ein paar Anregungen: 1. Wenn du
Im übrigen ist es in C /gebräuchlicher/, anstelle von [c] #define MaxSatz 4 char *ptrString[5]; for (i=0;i <= MaxSatz ;i++) ... [/c] so vorzugehen: [c] #define MaxSatz 5 char *ptrString[MaxSatz]; for
-
Thread
Frage zu Initialisieren?
als Anfänger eine Uhr auf dem lcd Display erstellen. Dazu habe ich mir erstellt.. Hauptprogramm.c // incl. int main(void) lcd-routunes.c lcd-routines.h Timer1.c Timer2.h kann mir auch soweit alles am lcd anzeigen lassen. Jetzt wollt ich mir eine einfache Tastenfunktion ein bauen.[c]///////
stundenzaehler(); Reset_All(); itoa(stunden,outpt,10); lcd_setcursor(4,2); lcd_string(outpt); itoa( minuten, outpt, 10); lcd_setcursor(6,2); lcd_string(":"); lcd_string(outpt); lcd_string(":"); itoa(sekunden,outpt,10); lcd_string(outpt); lcd_setcursor(4,1);
-
Thread
C Code für die Ausgabe diverser Fonts auf einem GLCD
c < f->first || c > f->last) return 0; c -= f->first; height = f->height; width = f->descriptors[c].width; p = f->bitmap + f->desciptors[c].offset; bits = 0; // avoid warning
arbeiten Ich denke, Georg meinte, dass es schneller wäre, gleich mehrere Pixel in einem Rutsch (I2C-Kommando) zu bearbeiten. > Wichtig dabe ist, daß diese Funktion die tatsächliche Zeichenbreite > zurückliefert, Ach so, ja, draw_string fehlte oben noch: [c] void draw_string(FONT_INFO *f,
-
Thread
Zeilenadressen LCD 4x20 blau
PS: Du weißt aber schon, daß bei deinem Link gar keine C-Funktion lcd_string() zu sehen ist, es sei denn ich blind?
In dem verlinkten Dokument ist ein C-Beispiel drin, wo die Position etwas krude berechnet wird: [c]if (Position > 59) //also ab 60=0x3C Position += 0x18; //also plus 24, 4. Zeile ab 0x54 else if (Position > 39)//also ab 40=
-
Thread
PIC C18 I2C weiß nicht weiter
wirklich kaum Informationen zu dem Thema. Es geht darum, einen PIC18F4550 und einen 18F2620 mit I2C zu verbinden. Ich arbeite mit dem PICKIT3 und MPLAB und C18 Compiler. Nun gibt es ja die i2c.h vom Microchip. Ich habe herausgefunden: Die kann Strings senden, die kann einzelne Bytes senden
zuerst mit einer sicher funktionierenden Gegenstelle testet, z.b. EEprom. Allerdings stehe ich mit I2C auch irgendwie auf Kriegsfuß. Holger
-
Thread
Wer macht bei Arduino eigentlich die Qualitätssicherung?
weiss ich das ich 15 Byte brauche die von txt[0]-txt[14] geht mit terminierender 0 wenn ich String Ausgabe_pfad_String=""; Ausgabe_pfad_String.reserve(c_count2+2); mache weiss ich nicht ob der Speicherplatz wieder freigegeben wird. Ist mir noch unheimlich. ausserdem was bietet mir cpp was
Joachim B. schrieb im Beitrag #6311706: > String Ausgabe_pfad_String=""; Da muss man nachsehen wie String implementiert ist bzw. ist es idealerweise dokumentiert (in diesem Fall ist es ja von Arduino geliefert). Und über C vs. C++ wurde hier
-
Thread
strncpy und globaler String: Verständnisfragen
malloc aufm Heap? Habe ich da einen Denkfehler? Compileroptimierungen? Hilft mir bitte mal ;) [c] #include <stdio.h> #include <string.h> char gStr[] = ""; int i = 123; void kopieren(unsigned char ZuVergleichen[],int size){ strncpy(gStr,ZuVergleichen,size); } int main() { unsigned char myString[] = "Burny"; kopieren(myString,sizeof(myString)); printf("%s\n",gStr); printf("%d\n",i); getchar(); return 0; } [/c] Gruß Bernhard
-
Thread
Teilstrings suchen
Ja das hatten wir bemerkt > Die AUfgabe dürfte bewusst so gestellt sein, dass man sein Wissen über C > Strings unter Beweis stellt und man mit den Standard-C str... Funktionen > nicht sehr weit kommt. wir dachten jedoch daran von hinten anzufangen zu zählen und den suchstring zu drehen ...
hat GCC neuerdings auch ein Perl-Frontend? :-) Ups. das GCC-Forum hatte ich übersehen. also: [c] #include <iostream> #include <string> int main() { std::string eingabe="Warum ist so ein schlechtes Wetter heute puhh!"; std::string such="te"; std::string::size_type p=eingabe.rfind(such
-
Thread
Arduino Wire
[/c] Wenn man muss, geht vieles. Dieses allerdings nicht: [c] Wire.beginTransmission(slaveAdr); Wire.write('10'); byte error = Wire.endTransmission(); [/c] Etwas besser, aber nur weil es funktioniert. [c] Wire.beginTransmission(slaveAdr); Wire.print(10); byte error = Wire.endTransmission(); [/c] Dann muss man den String allerdings wieder zusammen klöppeln und sicherlich wieder zu einer Zahl wandeln
-
Thread
Atmega8 scheint UART zu empfangen
zusammen, ich habe mir das nun noch mal in Ruhe angesehen. Ich habe meine Main() wie folgt geändert: [c] int main(void) { /* Replace with your application code */ USART_Init(MYUBRR); unsigned char zeichen; printString("Welcome AVR!\r\n"); DDRC = 0xFF; PORTC = 0xFF;
{ zeichen = receiveByte(); PORTC = PORTC << 1; //PORTC= zeichen; //printString("Test\r\n") _delay_ms(200); } return 1; } [/c] Die Funktion zum Empfangen ist: [c] unsigned char receiveByte(void) { while ( !(UCSRA & (1<<RXC)) ) /* Wait for incoming
-
Thread
char[x]-Wert in Switch Anweisung nicht möglich?
du übertragen kannst, auf 1-buchstabige (dann kannst du switch nehmen) oder du überträgst ganze Strings, dann ist eine if - elseif Kette mit lauter strcmp oder strncmp angebracht. [C] ... if( !strncmp( Data, "Run", 3 ) ) // Bearbeite Run-Kommando else if( !strncmp( Data, "Stop"
Data, "Aus", 3 ) ) // Bearbeite Aus Kommando else // Bearbeite ungültiges Kommando [/C] (und immer schön auf den Unterschied 'einzelner char' und 'String' achten. Strings werden mit " geschrieben!)
-
Thread
T6963
out(0xC0, 0, string[i]-0x20); } out(0xB2, 0, 0); } //Hautprogramm lcd_printf("HALLO",10,10);
out(0xC0, 0, string[i]-0x20); } out(0xB2, 0, 0); } //Hautprogramm lcd_printf("HALLO",10,10); Ok, mit dieser Funktion kann ich jetzt einen Text Ausgeben. Ja wie müsste die Funktion aussehen wenn
-
Thread
Daten>32Bit auf AVR
einfach 100 abziehen und einen > Übertrag bilden. Sehr guter Vorschlag! Gegenüber meinem "String" Vorschlag bekommt man damit doppelt so viele Ziffern im Array untergebracht. Plus zwei Ziffern extra, die man sonst wegen des Nullzeichens \0 am Ende des Strings nicht nutzen könnte. Allerdings
Zeit. Das ist hier heute morgen über meinen seriellen Monitor in der Arduino-IDE gelaufen: [c] Start calculating 128 hex digits of PI first digit is digit #:8000 last digit is digit #:8127 calculating... 5 6E16369788D273CCDE96629281B949D04C50901B71C65614E6C6C7BD327A140A 45E1D006C3F27B9AC9AA53FD62A80F00BB25BFE235BDD2F671126905B204022
-
Thread
Datenpakete mit ATmega88 verarbeiten
struct{ uint8_t u8OpCode; //enthält Zahl zur Identifikation des structs uint16_t u16MyData1; char[5] cMyWord; } tdsMY_DATA_2 typedef union{ tdsMY_DATA_1 tdsMyData1; tdsMY_DATA_2 tdsMyData2; } tduMY_RECEIVE_DATA; [/c] Nach füllen des Zwischenspeichers könnte man nun wie folgt vorgehen: [c]
); } } } [/c]
-
Thread
sprintf mit mehreren parametern
> Null-Terminierung von sprintf auszuschalten? Nein. Wozu willst du das? sprintf erzeugt einen C-String. Und ein C-String ist *immer* mit '\0' terminiert. Ansonsten wäre es kein C-String.
Null-Terminierung von sprintf auszuschalten? > Nein. Wozu willst du das? > sprintf erzeugt einen C-String. Und ein C-String ist *immer* > mit '\0' terminiert. Ansonsten wäre es kein C-String. Ich habe eine funktion, die mir, aus mehreren parametern einen frame zum übertragen über den uart zusammenstöpselt
-
Thread
EA-DOGM - LCD an SPI - Schnittstelle
noch ein wenig rumprobiert. Nun habe ich ein Warning, welches mir bisher nicht aufgefallen ist: [c]main.c:9: warning: pointer targets in passing argument 1 of 'LCD_print_string' differ in signedness[/c] Ich bin mir ziemlich sicher dass diese Warnung bisher noch nicht da war. Aber sie kommt nun
*buffer)[/c] dies machte: [c]void LCD_print_string (char *buffer)[/c] MfG Pat711
-
Thread
uart-atmega8-falsche zeichen
(1<<UCSZ0); UBRRL = (unsigned char) USART_BAUD_SELECT; //USART_Init(UBRR_VAL); _writeString ("Hallo, Welt!\n"); } [/C]
); return 0; } [/c]
-
Thread
ATMega8 ADC Interrupt - lesen mehrerer Eingänge liefert Schrott
{ utoa(Oszi[i], spuffer, 10); uart_string(spuffer); uart_string(CR); } uart_string("=== Ende ==="); uart_string(CR); sei(); } } /******************************************************//** * ADC Interrupt
3 und 4. Kanal 4 > liegt gerade über der Schwelle. Das kostet dich genau ein "+1" in der Zeile[c] ADMUX = (ADMUX & 0xF0) + muxValue; [/c]
-
Thread
Binärwert einer Variable per UART senden
Code als 31byte irgendwo aus dem Speicher, das kann so nicht gehen. Vermutlich geht es so: [c] transmit_string_USART0(msg.id & 0xff ); transmit_string_USART0(msg.id>>8 & 0xff ); transmit_string_USART0(msg.id>>16 & 0xff ); transmit_string_USART0(msg.id>>24 & 0xff ); [/c] jetzt müsste
) { transmit_uint16_string_USART0( value >> 16 ); transmit_uint16_string_USART0( value ); } [/c] Wenn ich jetzt richtig liege, dann 'vereinfacht' sich damit die ursprüngliche Aufgabenstellung zu einem simplen [c]
-
Thread
unerklärliche Code-Optimierung
[c] while (BefehlPos == (uint8_t)~0) [/c] müsste dann sozusagen funktionieren?
tust du das nicht? Zumal man eine Find Funktion sicherlich auch anderswo gut gebrauchen kann. [C] ////////////////////// // uint8_t Steuerung( const char* String ) { // Sicherung if( String == NULL ) return 0xFF; // wenn es den Befehl noch nicht gab, dann lege ihn an uint8