-
Thread
RFM12 Modul Probleme Komunikation mit Modul
set_cursor(0,3); char str[10]; itoa(rf12_trans(0x0000), str, 2); // Binär anzeigen lcd_string("Status: 0b"); // Ausgabe auf LCD lcd_string(str); _delay_ms(1000); rf12_trans(0xC0E0); // AVR CLK: 10MHz rf12_trans(0x80D7); // Enable FIFO rf12_trans(0xC2AB);
// Ausgabe UART lcd_string("Funktest Senden: ESC=exit"); // Ausgabe LCD set_cursor(0,3); char str[10]; itoa(rf12_trans(0x0000), str, 2); // Binär anzeigen lcd_string("Status: 0b"); lcd_string(str
-
Thread
## Operator bei Strings
Art baust du dir eine Menge langer String Literale zusammen. Was spricht gegen eine Funktion, die einfach einen String ausgibt und davor und dahinter den Prafix bzw. Postfix drann hängt? [C] void SendCommand( const char* cmd ) { sendString( PREFIX ); sendString( cmd ); sendString( POSTFIX ); } [/C]
-
Thread
Daten in Buffer Speichern
sei(); while( 1 ) { if( stringReady == 1 ) { // von der ISR wurde ein String komplett // empfangen cli(); strcpy( receivedString, string ); printf("value:%s\n",receivedString)
Ich hätte noch den hier: [c]&Buffer[0][0][/c]
-
Thread
seltsames Phänomen Ausgabe auf LCD HD44780
das Debounce-Makro von Peter Dannegger auf der Artikelseite. Hier der Code: [c] #include <avr/io.h> #include <stdlib.h> #include <stdio.h> #include <stdint.h> #include <string.h> #include <debounce.h> #include <util/delay.h> #include <avr/interrupt.h> #include <lcd.c>
noch die Ausgabe "18/28" oder so. Die vielen Leerzeichen brauchst du als String doch garnicht. Der String "Anweisung " wäre dann nur einmal da und nicht über 40 mal. Und schon würde auch dein SRAM reichen. z.B.: [c] static char sAnweisung[] = "Anweisung"; // Text "Anweisung
-
Thread
wortbreite void*
Andreas Kaiser wrote: > Und was wird aus: > [c]char hex[] PROGMEM = "0123456789ABCDEF"; > pgm_read_byte(&hex[i]);[/c] pgm_read_byte() kann es logischerweise nicht geben, wenn die zu Grunde liegende Maschine das nicht kann. > [c]strcpy_p(buf, "unsinn"+(sinn ? 2 : 0));[/c] Verboten. ;-) strcpy_p() ist keine Standard-Funktion, es wäre der Implementierung also einfach möglich gewesen zu erklären, dass das Ergebnis nur definiert ist, solange der Parameter ein string
-
Thread
ZX-Spectrum Basic : error handling aber wie?
gegebenenfalls auf eine Fehleingabe reagieren. https://zxbasic.readthedocs.io/en/docs/val/ [code] VAL(<string value>) Description: Converts the given numeric string value into its numeric value. It's the opposite of STR. If the string can be converted into a number, PEEK 23610 (ROM ERR_NR variable) will
VAL soll in der Lage sein das abzufangen: >https://zxbasic.readthedocs.io/en/docs/val/ >VAL(<string value>) >Description: >Converts the given numeric string value into its numeric value. It's the >opposite of STR. If the string can be converted into a number, >PEEK 23610 (ROM ERR_NR variable)
-
Thread
Senden einer SMS
Mikrocontroller die AT Kommandos bis einschließlich des Textes absenden. Atmel-Beispielvideo sei Dank:-) [c] char String_CPIN[]="AT+CPIN=6674\r"; char String_CMGF[]="AT+CMGF=1\r"; char String_CSCS[]="AT+CSCS=\"GSM\"\r"; char String_CMGS[]="AT+CMGS=01234567890\r"; char String_TEXT[]="Test77\r"; [/c]
_putstring(String_CMGS); _delay_ms(200); USART0_putstring(String_TEXT); _delay_ms(200); USART0_putstring(String_TEXT_ENDE); _delay_ms(200); n++; } [/c] [c] void USART0_putstring(char* String)
-
Thread
Double Variable liefert über Sprintf->Uart keine Dezimalzahl
logisch > sein wurde mir immer gesagt. Die Funktion sprintf dient zur Umwandlung > von Werten in ein String/Char Format. Dass diese Funktion die Länge > zurückgibt ist für mich unlogisch. Naja, die Logik ergibt sich doch aus deiner Benutzung und eine Funktion wie [c] size_t uebertrage_mittels_xy(uint8
String machen außer ihn irgendwohin zu schreiben? Selbst wenn du den einfach nur mit memcpy in einen anderen Buffer kopieren willst musst du die Länge angeben: [c] void *memcpy(void *dest, const void
-
Thread
Modem mit PIC steuern
Änderungen müssen aber trotzdem sein. Ich weiß ja nicht, aus welcher Programmierecke du kommst, aber in C kann man Strings nicht durch "==" vergleichen. Dafür gibt es in der "strings.h" extra Funktionen...
. Der PIC muß also irgendwie mehrere Zeichen verarbeiten können. Dazu braucht er einen String, der aus mehreren char besteht. Zum Vergleichen zweier Strings gibt es eine Funktion, deren Namen mir nicht geläufig ist, da ich sowas im µC zufuß programmiere. >>wie is das mit den sprintf??
-
Thread
Quode abgeschrieben zum testen und Kompelirungsfehler
putChar (buffer [i]); } main () { initUART (); while (true) { print ("hallo welt.!") ; } } [/c] folgende fehler bekomme ich Kompiliere die Datei ucart.cc. ucart.cc: In function 'int main()': ucart.cc:35: warning: deprecated conversion from string constant to 'char*' Ende. was habe
Wenn es sich um C-Code handelt, solltest du es auch als C übersetzen und nicht als C++.
-
Thread
LCD Befehl zu langsam in BASCOM
Byte Dim I As Byte Dim Z As Byte Dim L As Byte Dim X As Byte Dim Taste As Byte Dim Text As String * 40 'Dim Rs232buffer(41) As Byte At Text Overlay Dim Oben As String * 17 Dim Unten As String * 17 R = 0 I = 0 Z = 0 L = 2 X = 0 Config Timer1 = Timer , Prescale = 1
>Bei der ersten Routine empfange ich ja Strings, bei der zweiten Routine >kommen die Werte in ein Array. >Was findet ihr, wäre besser? Aus C-Sicht betachtet: Egal. in C sind Strings auch nichts anderes als Arrays, die noch ein Endezeichen
-
Thread
Ein kleines Schleifendurchlaufproblem und ich raffs ned
Checksumme = Checksumme + NextInt; USART_Transmit(Checksumme); } } } [/c] also die Schleife soll chars empfangen und in ein array speichern, leider läuft die Schleife gleich nach dem ersten String durch und wird beendet obwohl nach dem ersten Durchgang NextInt != Checksumme
typ char, also brauch ich da irgendwie einen pointer oder wie > sieht das aus? atoi will einen String haben! Du hast keinen String. Du hast ein einzelnes Zeichen! Ergo: atoi ist das falsche Werkzeug. http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F (Und
-
Thread
Wie serielle Kommunikation zwischen µC und PC aufbauen???
mich mit VB nicht aus. Aber VB hat doch bestimmt auch irgendeine INPUT oder READ funktion die eine String-Zeile mit Zahlen parst und Varaiblen zuweist. Also so ähnlich wie sscanf() in C. Nichts ist doch einfacher als: [C] int sensor, wert1, wert2, pruefsumme; sscanf(zeile, "%d %d %d %d", &sensor, &wert1, &wert2, &pruefsumme); [/C] Wenn Du da keine Leerzeichen dazwischen hast, musst Du erst den String in Substrings zerlegen, dann die Substrings selbst parsen etc. Ist doch alles ein Haufen Arbeit für nichts und wieder nichts
-
Thread
Atmega8 vergleicht keine Variablen
/LED 2 rot aus > PORTB &=~_BV(PB1);} //LED 1 gruen an > [/c] > Was sagt denn dein LCD, wie gross die Werte sind? PS: Das hier > sprintf(messwertstring, "%d", P_diff_soll); //Umwandlung > if (P_diff_soll<10) lcd_string (" "); //10ner-stelle
mit Leerzeichen auf [C] sprintf(messwertstring, "%3d", P_diff_soll); //Umwandlung lcd_string (messwertstring); //LCD-Display Ausgabe [/C]
-
Thread
CAN-Bus mit Arduino auswerten
genommen. Das sollte mir ja eig alle Werte ausgeben, da keine Maske oder Filter eingestellt werden. [c] // CAN Receive Example // #include <mcp_can.h> #include <SPI.h> long unsigned int rxId; unsigned char len = 0; unsigned char rxBuf[8]; char msgString[128]; // Array
0x40000000) == 0x40000000){ // Determine if message is a remote request frame. sprintf(msgString, " REMOTE REQUEST FRAME"); Serial.print(msgString); } else { for(byte i = 0; i<len; i++){ sprintf(msgString, " 0x%.2X", rxBuf[i]); Serial.print(msgString);
-
Thread
ESP8266 - Arduino - HTTP Get, ESP stürzt ab.
: 3ffeee0c 3ffe8a80 3ffef2f8 402069be 3fff0310: 3ffeee0c 3ffe8a80 3ffef2f8 40202bf4 3fff0320: 3fff10ec 3fff172c 3fff1c64 0000001f 3fff0330: 00000017 3f000050 00001388 3fff1efc 3fff0340: 0000004f
addr_start + 1, addr_end); Serial.print("Request: "); Serial.println(req); client.flush(); String s; if (req == "/") { IPAddress ip = WiFi.localIP(); String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]); s = "HTTP/1.1 200 OK\r\nContent-Type
-
Thread
Erkennung Programiersprache
incocknito schrieb im Beitrag #3029945: > zuerst schaut man ob strings vorkommen. (enden diese mit 0x00 würde ich > sofort auf c als sprache tippen.) ??? Wenn ich Assembler programmiere enden meine Strings auch mit 0 und das mache nicht nur ich so...
genannte) Kriterien, die entsprechende Hinweise geben: Startup- und Exit-Code: Bspw. wird in einem C++-Programm eine aufwendigere Initialisierung statischer Variablen durchgeführt (wegen der Konstruktoren) als in einem C-Programm. Formate bestimmter Datentypen: Bspw. sehen Strings in C anders als
-
Thread
Tacho und Kilometer
und ein [c] delay_ms(1000); [/c] in einer Interrupt Routine wuerde ich auch nicht unbedingt haben wollen... hosentraeger
bist, ist es ein bischen von hinten durch die Brust ins Auge, wenn du vorher mittels ftoa dir einen String erzeugen lässt und dann den String mittels sprintf in ein Feld einpassen lässt [C] ftoa(speed, 0, tempstr); lcd_gotoxy(0,0); sprintf((g_temp)," %3s", tempstr);
-
Thread
String auswerten
Wie durchsuch ich am einfachsten einen String nach einem Zeichen? in meinen uC bekommen ich von einem Sensor einen String mit führeneden 0x55´s, dennen folget ein definiertes Startzeichen. Da ich nicht weiß wie viele 0x55´s es sind muss ich
Du solltest Dir ein Buch ueber C kaufen und lesen. zb. gibt es da die Funktion strrchr(); char* pLast = strrchr( String, 0x55 ); Und du hast einen Zeiger auf das letzte 0x55 in String. > der code in einer For-schleife 10mal
-
Thread
Zeichen aus char Array in neuem char Array speichern
Dann muss eben nach dem "\r\n" die 0 an den String. Ohne den Stringterminator kannst du die C-Standardfunktionen für Strings *nicht* benutzen.
schrieb im Beitrag #4852361: >> Ups, dieser Fehler ist peinlich. > > sind aber noch mehr drin, String sollte am ende eine 0 haben. Seit wann muss man in C die \0 selber anhängen? Abgesehen davon, dass es ja \0 und nicht 0 (und auch nicht '0') ist.
-
Thread
16Bit Zahl zu String
ASCII code ? und nicht die Zahl > welche ich will ? Hä? Oben wolltest Du doch die Zahl in einen String wandeln. Und ein String besteht im kontextuellen Sprachgebrauch nunmal aus ASCII-Zeichen. Was meinst Du denn, was sprintf ausspuckt?
), während die dritte nur auf ausgewählten C-Systemen funktioniert (itoa bzw. utoa), wobei praktisch alle C-Systeme eine derartige Funktion anbietet. Ich kenn zwar die von dir erwähnte newlib nicht, aber ich würde fast darauf wetten, dass es
-
Thread
Arduino ToInt() - kommt int oder long raus?
öffentlichen Sourcecode hilft sofort: https://github.com/arduino/ArduinoCore-API/blob/master/api/String.h Da steht [c]long toInt(void) const;[/c]
öffentlichen Sourcecode hilft sofort: > > https://github.com/arduino/ArduinoCore-API/blob/master/api/String.h > > Da steht > [c]long toInt(void) const;[/c] Ich frage mich auch immer wieder, warum man sich bei solchen Fragen so schwer tut, wo doch ein Blick in den Quellcode jeden Zweifel entfernt.
-
Thread
SPI Kommunikation mit Target über USBasp
mit »__attribute__((progmem))« in Nur-Lese-Abschnitt gelegt zu werden usbdrv/usbdrv.c:70:14: Fehler: Variable »usbDescriptorString0« muss konstant sein, um mit »__attribute__((progmem))« in Nur-Lese-Abschnitt gelegt zu werden usbdrv/usbdrv.c:80:14: Fehler: Variable »usbDescriptorStringVendor
konstant sein, um mit »__attribute__((progmem))« in Nur-Lese-Abschnitt gelegt zu werden usbdrv/usbdrv.c:89:14: Fehler: Variable »usbDescriptorStringDevice« muss konstant sein, um mit »__attribute__((progmem))« in Nur-Lese-Abschnitt gelegt zu werden usbdrv/usbdrv.c:111:14: Fehler: Variable »usbDescriptorDevice
-
Thread
Atmega8 und LCD Display
lcd_setcursor( 0, 2 ); lcd_string("Hello World!"); DDRB = 0x01; while(1) { PORTB = 1; _delay_loop_2(100000); PORTB = 0; _delay_loop_2(100000); } return 0; } [/c] das ist mein Code. Im Makefile
lcd_setcursor( 0, 2 ); lcd_string("Hello World!"); DDRB=0x01; while(1) { PORTB = 0x01; _delay_loop_2(100000); PORTB = 0x00; _delay_loop_2(100000); } return 0; } [/c] habe die LED an PB0
-
Thread
Pointer auf die nächsten 8 Bit?
daran rumpfusche hab ich das meiste auch schon wieder vergessen. So sieht mein lezter ansatz aus: [c] uint16_t string; uint8_t zeichen; zeichen = (*(uint8_t *) &string) //erste 8bit zeichen = (*(uint8_t *) &string+1) //letzte 8bit [/c]
[c] zeichen = (*(uint8_t *)&string) + 1 [/c] oder, ohne überflüssige Klammern, aber auch ohne falsche Zusammenhänge suggerierende Leerzeichen, [c] zeichen = *(uint8_t *)&string + 1 [/c] Ich denke
-
Thread
Erklärung ADC Code
); set_cursor (14, 2); if (nachkomma<10) lcd_string ("0"); lcd_string (messwertstring); _delay_ms(255); } return(0); } [/c] Danke, Gruß Matthias
Im übrigen: Wenn du hier [C] set_cursor (12, 2); lcd_string (" . "); sprintf(messwertstring, "%d", vorkomma); set_cursor (12, 2); lcd_string (messwertstring);
-
Thread
kommunikation zwischen uc und pc
C-String void uart_puts( const char* str ) { while( *str ) { uart_putc( *str ); str++; } } [/C] Damit kannst du schon mal solche Dinge machen: [C] int main() { while( 1 )
, damit // der Benutzer auch was sieht while( c != '\n' ) { *Input = c; Input++; c = USART_RX(); uart_putc( c ); } *Input = '\0'; } [/C] Damit kann man dann schon so was machen: [C] #include <string.h> .... //
-
Thread
Ansteuern eines LCD über ATmega16
Das Problem ist das ich den Controller in C programmiere und mit den Codebeispielen nicht anfangen kann.. =/
Ohjemine [C] void putchar( char c ) { PORTD |= (1<<PD5); PORTA = c; lcd_enable(); } int main(void) { lcd_init(); putchar( 'H' ); putchar( 'a' ); putchar( 'l' ); putchar( 'l' )
-
Thread
Fragen zu MISRA
hier sollte man sich der folgenden Punkte bewusst sein: - Es gibt mehrere Versionen von MISRA-C: von 1998 (C90), 2004 (C90) und 2012 (C99/C11) und zusätzlich eine Version von MISRA-C++ von 2008. Einige Widersprüche und Unklarheiten der früherensten Version sind in späteren Versionen behoben
int usw. Typedefs verwendet werden sollen, ist advisory und bezieht und bezieht sich seit MISRA-C:2004 ausdrücklich auf /numerische/ Datentypen. Der Typ char darf für Zeichen verwendet werden, jedoch ausschließlich für diese. Damit ist die Verwendung der Funktionen aus string.h legal. Es wird allerdings
-
Thread
Stringtabelle mit Funktionspointer sortieren
Habe hier eine Stringtabelle erstellt: [c] #include <stdio.h> #include <stdlib.h> void printStringTable(char **store){ int i; for(i = 0; i < 4; i++) printf("String[%d] = %s\n", i, *(store+i)); } int main() {
eher das wasbeim Aufruf ist. Ich kriege 1 Warnung, die ich nicht wirklich für verständlich halte [c] #include <stdio.h> #include <stdlib.h> void printStringTable(char **store); int compare(char *string1, char *string2); int main() { char **stringtabelle = malloc(4*sizeof(char*));
-
Thread
Teil-String Suche in Byte FIFO
Schreibzeiger meines FIFO in Bereichen die schon mal verwendet wurden. Einzelne Antworten sehen so aus: [c] CR LF value CR LF [/c] Dabei braucht man nichts machen, da der Lese/Schreibzeiger genau diesen String umschliesst. Es können aber auch Listen eintreffen: [c] CR LF list entry 1 CR LF list entry 2 CR LF … list entry n CR LF CR LF [/c] Wenn nun eine Antwort eintrifft und im FIFO landet, möchte ich diese herausfiltern: 1) das erste CR LF suchen 2) dann das CR LF danach suchen 3) dazwischen herausfiltern Nun die Frage: String
-
Thread
Klammerausdruck switch, welche Typen sind erlaubt?
In C gibt es keine Strings (als Datentyp), es gibt nur char-Arrays. Du könntest höchstens ein Zeichen deines Strings mit switch auswerten. Wenn ich den Rest deines Codes anschaue: Besorg dir ein C-Buch
@ TO > Was daran liegen dürfte, daß switch mit Strings schlicht nicht geht. > Da bleibt dir nichts anderes übrig, als mit if /if else /else zu > arbeiten. Sollte aber in deinem C-Buch stehen. Was jetzt nicht heissen soll, dass der Ansatz mit den
-
Thread
Stringlänge von Zeichen und Buchstaben bestimmen
... wobei man sich am sinnvollsten gleich eine Funktion [C] void com74hc595_lcd_int( int wert ) { char str[7]; itoa( wert, str, 10 ); com74hc595_lcd_string( str ); } [/C] baut, anstatt erst in main da groß rumzupfriemeln. So eine int Ausgabe braucht man immer wieder. Wie hast du (Thorsten), das hier [C] com74hc595_lcd_string(TelefonnummerLaenge); [/C] eigentlich durch den Compiler gebracht? Da muss es doch an allen Ecken und Enden Alarm geklingelt haben!
-
Thread
Konstante in Stringkonstante einfügen?
Wie bekomme ich denn dieses übersetzt: [c] #define HERE "Entering " __PRETTY_FUNCTION__ "()" printf(HERE); [/c] printf() soll durch jede andere Funktion die einen String ausgibt ersetzt werden können.
__ kein string literal mehr sondern expandiert zu einer Variable, darum geht das mit der string Konkatenation nicht. Du brauchst so etwas wie das hier: [c] const char *my_here(const char *h) { static char
-
Thread
ATSAMD51 mit AtmelStudio und USB
IsUserConnectable : yes PortIsDebugCapable : no PortHasMultiCompanions : no PortConnectorIsTypeC : no ConnectionIndex : 1 CompanionIndex : 0 CompanionHubSymLnk : USB#ROOT_HUB30#4&11118949&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8} CompanionPortNumber : 13
idProduct : 0x07EE bcdDevice : 0x0100 iManufacturer : 0x01 (String Descriptor 1) *!*ERROR String descriptor not found iProduct : 0x02 (String Descriptor 2) *!*ERROR String descriptor not found iSerialNumber : 0x00 (No String Descriptor
-
Thread
Aus '\n' wird '\0'
bringen, das zu machen, was ich bei obigem Quelltext naiv erwartet hätte? Der Umbruch muß im oberen String bleiben. Momentan behelfe ich mir mit: [c] printf("\fPWM test PC9\n \b"); printf("PWM test PC9\n"); [/c] Viele Grüße W.T.
Leerzeichen-Flag zur Formatierung verwendet wird). Sie lag CooCox bei. Und so sieht sie aus: [c] /** * @brief Outputs a string on stdout. * * @param pStr String to output. */ signed int puts(const char *pStr) { return fputs(pStr, stdout); } /** * @brief Implementation
-
Thread
Code Composer Studio Fehler: assignment makes integer from.
Das ID+="0" und int(ow_rom[i]) sieht nach C++ aus, hast du auch einen C++ Compiler? BTW: Eine "0" ein eine String anhängen get in C so: [c]strcat(ID, "0");[/c]
Twinsetter schrieb im Beitrag #4213462: > ID ist als String deklariert Den Typ String gibt es in C nicht. String muss ein int sein, da [c] int i = 0; i += "0";[/c] denselben Fehler produziert.
-
Thread
Software+Hardware UART's für atmega32
wir mal, der String Daten fängt bei Adresse 0 an. Dann ist der String an den Adressen 0-253. In Adresse 254 steht die Länge des Strings. Anzahl rauscht von 0-255 durch. Das Array Bdaten ist definiert von Index 1
-1, vor dem Array denn Bdaten(0) gibt es nicht. Bei Anzahl = 255 überschreibst Du die Länge des Strings. Gruß, Norbert
-
Thread
Beschränkung bei den Schiebebefehlen?
: [c] uint32_t message = 0x12345678; uint8_t eid_string[9]; void eid_convert(void) { uint32_t puff2=message; // zwischenspeichern unsigned char i; unsigned char Stelle; i = 8
if(Stelle > 0x39) Stelle += 0x07; puff2 >>= 4; // shiften für nächsten Run eid_string[i] = Stelle; } while (i > 0) eid_string[8]=0; } [/c]
-
Thread
Aus einem "int" ein "float" erzeugen
return temperature; } [/c]
ASCII-Zeichen. Dann nach der zweiten Stelle von hinten den Punkt oder das Komma einbauen und schon ist der String fast fertig. Das "°C" und der Nullterminator können ja fest bleiben.
-
Thread
Spannungsanzeige
Beispielwerte: 2V angelegt, 1,3V abgelesen 3V angelegt, 2V abgelsen daraus folgt [math] f(2)=1,3=1,3m+c [/math] und [math] f(3)=2=2m+c [/math] dieses LGS löst du nach m und c auf.
, falls ich eine oder zwei Stellen hinterm Komma anzeigen will. set_cursor(0,1); lcd_string("Spannung: "); lcd_string(Spannungswert); lcd_string("V"); lcd_string(" "); mfg Peter
-
Thread
String für Auswertung Trennen
strtok, gibt es in meiner Bibliothek nicht, aber dafür strtok_r Folgendes Programm steht: [c] struct getCmd_t { char cmd[20]; char Par1[20]; char Par2[20]; char Par3[20]; }; void splitCommand(void) //(char *rxBuffer) { struct getCmd_t actCommand; char *testString
Ok, ok, ich nehms zurück, mit ner whiile Tuts,.... Eine Frage noch: Hier mein code: [c] void splitCommand(void) //(char *rxBuffer) { struct getCmd_t actCommand; char i = 0; char *testString = ">:trigger?2?1000\0"; //">:spcSet?2?R?25?7?R\0"; char *token; char *tmp;
-
Thread
eeprom_write_byte (Adresse > 255 übergeben)
Hallo, ich nutze die funktion [c] void eeprom_write_byte (uint8_t *__p, uint8_t __value); [/c] aus der <avr/eeprom.h> lib und habe jetzt das Problem, dass ich eine feste EEPROM-Adresse vorgebe die größer als 255 ist z.B. [c]
); [/c]
-
Thread
GCC - Wie String in Integer umwandeln?
integer". In float und double sind selbstverständlich Nachkommastellen möglich wie sich auch in jedem C Grundlagenbuch nachlesen lässt. [...] > Ich habe gerade noch einmal nachgeschaut und muß feststellen, daß ich > etwas voreilig war. itoa() liefert einen _nullterminierten_ String an > eine Array-Reference
Bisher war nicht davon die rede daß ein String in ein float gewandelt werden soll, dafür gibt es atof(). Willst du eine Ganzzahl die im Datentyp char steht mit einem float multiplizieren geht das so: char c = 5; float f; f = c * 1.5926;
-
Thread
Wer kennt sich richtig gut mit ublox GPS Modulen aus?
Halllooooo.... können wir uns mal abgleichen was den Code angeht? [c] byte CheckValidFix(String *t) { /* Müll filtern */ if (!t->startsWith("$")) return 0; /* Infotext filtern */ if (t->startsWith("$GNTXT")) return 0; /* Es werden nur gültige
sats = atoi(++p); if (sats >= 5) { SoftUART.println(*t); return 1; } } [/c]
-
Thread
boolsche variable TRUE zuweisen
Hallo, ich habe eine header, in der TRUE und FALSE wie folgt definiert sind [c] #define FALSE 0 #define TRUE !FALSE [/c] damit ist true alles ausser 0. Wie kann ich jetzt aber eine Variable richtig den wert True zuweisen? z.B. [c] bool z; ... if(x<y) z=FALSE; else
richtig den wert True zuweisen? > > z.B.bool z; > ... > if(x<y) z=FALSE; > else z=TRUE; Wozu?[c] bool z; ... z != (x<y);[/c]
-
Thread
ESP32 Arduino Cheat Sheet (aktuell für BSP3.x)
longstring); } void loop() { // put your main code here, to run repeatedly: delay(1); } [/c] Ergebnis: #define, const char und const char mit Rawliteral ist identisch char, PROGMEM char und char mit Rawliteral ist identisch String ist beim RAM geringfügig kleiner, beim ROM größer
short 0 – 65536" sollte wohl 65535 heißen ;-) Da schaut aber jemand ganz genau hin! Super! > String str5 = "Sensor-Wert: " + analogRead( A0 ); > das dürfte nicht funktionieren Ja, danke! So ist es besser... [c] String str5 = "Sensor-Wert: " + String(analogRead( A0 )) + "\n"; [/c]
-
Thread
WINAVR GCC Entfernt bei Optimierung einfach Funktionen
es ein hinweis: alle variablen die ich übergebe scheinen starr zu sein. d.h. mache ich aus [c] DisplayStringFlash(adcsamplevalue,channel,data); DisplayStringFlash(adcsamplevalue,data++,data++); [/c] wird mir nur der wert gezeigt, mit der die variable data anfangs initialisiert wurde. und
Nur so am Rande: DisplayStringFlash(adcsamplevalue,data++,data++); Sieht mir gefährlich aus. Ich würde mal sagen, daß der C-Standard nicht definiert welche Werte übergeben werden (für data) und das ganze sehr Compiler-abhängig
-
Thread
Abfrage effizienter gestallten
} }; int main() { // Parameter hier ermitteln... const char* test[] = {"42", "ein string"}; // Beispielaufruf einer Funktion aus dem Array oben. myKnownToken[0].f(test); ... [/c]
Also meine AVR-HEX-Dateien sehen so aus: >:1000000019C033C032C031C030C02FC02EC02DC087 >:100010002CC02BC02AC029C028C027C026C025C09C >:100020004CC023C022C021C020C01FC01EC01DC0A4 >:100030001CC01BC011241FBECFEFD4E0DEBFCDBF5C Mit dem GCC kann man Objektdateien
-
Thread
GLCD Display und Atmega 32
void ks0108SetDot(uint8_t, uint8_t); void ks0108ClearDot(uint8_t, uint8_t); void ks0108PutChar(char c, struct font font); void ks0108NewLine(uint8_t fontHeight, uint8_t offset); void ks0108PutString(char *string, struct font font); void ks0108PutStringP(PGM_P string, struct font font); char ks0108ReadData
avroptimum.jpg Hoffe das ist der richtige Ort zum Abschalten. Dann wollt ich das ausgeben lassen: [c] ks0108Init(); ks0108GotoXY(0,0); ks0108PutString("Hallo", smallFont); ks0108GotoXY(0,22); ks0108PutString("Das ist ein Test", smallFont); [/c] Und raus kam das: was im Anhang