-
Thread
STM32L051 UART transmit
gefunden --> Text wurde vollstaendig ausgegeben { outString = saveString; // Neu: Urspruenglichen Text wiederherstellen USART2->CR1 &= ~USART_CR1_TXEIE; } } }
C) anbietet, wo dann je nach Bedarf ein > String_Out(...) oder ein Long_Out(...) oder ein Float_Out(...) aufsetzen > können. Eben je nachdem, was man tatsächlich braucht. Mit dem Ansatz gehe ich
-
Thread
LabView mit µC synchronisieren
Thomas schrieb im Beitrag #2603401: > Der µC misst die Temperaturen und sendet nach Deendigung der Messung > erst das Startbyte und dann die Daten: > put_string(ok); > put_string(daten); Hallo Thomas , vielleicht mal nur so als Test -
, Baud 9600) dauert 1,04 ms. Meine Zeichenkette ist 15 Bytes lang. Es dauert also 15,6 ms bis der µC die Bytes gesendet hat und 15,6 ms bis LV sie gelesen hat, anschließende nach ca. 32 ms wird dann die Antwort gesendet, die der µC lesen soll. Im µC habe ich das so realisiert put_string(daten);
-
Thread
1Wire-Bus SEARCH ROM missverstanden?
Raw-Wert zurückliefern. Diesen rechne ich dann per Integer-Arithmetik in eine Fliesskommazahl um. [c]while (1) { dcount = scan_bus(roms, ONEWIRE_SEARCH_ROM); if (dcount == 255) { uart_string_P(PSTR("Error, no device found!" CR)); uart_string(CR); } else { uart_string_P(PSTR
} Nach = Temp / 1000; // int8_t uart_int(Vor); uart_string_P(PSTR(".")); uart_int(Nach); uart_string_P(PSTR(" °C" CR)); } } } uart_string(CR); } [/c] Das gesamte Programm benötigt 2342 Byte. Es gibt folgendes aus
-
Thread
Problem bei konvertiren eines char[] in einen integer
(usart_string[2] - '0') * 100); recived_time_ticks += ((usart_string[3] - '0') * 10); recived_time_ticks += (usart_string[4] - '0'); [/c] ich habe vom PC aus 72000 an den µC gesendet angekommen is aber: 64640
Verscuhe mal [c]recived_time_ticks += (((uint32_t)usart_string[0] - (uint32_t)'0') * (uint32_t)10000); //1[/c] Cast heißt das Zauberwort
-
Thread
spi string empfangen
Hallo, ich versuche einen String den ich über einen Mega32 sende mit einem mega8 zu einem display zu senden. Leider hab ich absolut keine Ahnung was mein Denkfehler in der Empfangsroutine ist. [c] // sende routine atmega 32 void
Hallo, du willst ins nichts den String zwischen speichern: [C] char* text=""; [/C] Ich würde mir dazu ein Feld definieren: [C] char cBuffer[20+1]; char* text = cBuffer; [/C] Ich habe das so hingeschrieben um dir den Unterschied
-
Thread
c++ new und delete
147: undefined reference to `twi_transmit' Wire.cpp sollte normalerweise die Funktionen aus twi.c benutzen. Ganz am Anfang von Wire.cpp steht: extern "C" { #include <stdlib.h> #include <string.h> #include <inttypes.h> #include "twi.h" } Damit sollte doch eigentlich die Funktionen
der Compilerentwickler eine Idee: [code] //Wire.cpp sollte normalerweise die Funktionen aus twi.c benutzen. Ganz am //Anfang von Wire.cpp steht: extern "C" { #include <stdlib.h> #include <string.h> #include <inttypes.h> #include "twi.h" } [/code] Wenn über das extern "C" ...
-
Thread
Variablen eindeutig benennen damit der Typ eindeutig ist
im Flash abgelegt werden muss. Mit #define wird irgendetwas definiert, ob das ein Ausdruck, String oder schlicht ein Wert ist, ist absolut egal. > Marc V. schrieb: >> So etwas kann man aber mit const nicht machen: >> const uint8_t c_DatBlkLen = 0x3F; // 63 Byt max >> uint8_t DatBlk[c_DatBlkLen
Array schon mal was ganz anderes, zweitens hast du auch hier zumindest bei einer recht prominenten µC-Architektur unrecht: da der AVR für Operationen aus dem Flash andere Befehle braucht als für Operationen aus dem RAM, werden selbst string literals (die schon seit C89 "immutable" waren) dort im RAM
-
Thread
µC+gsm -> Problem
nicht; Hyperterminal übersetzt Steuercodes nicht in Klartext und kann auch nicht zwei Datenkanäle (µC->GSM + GSM->µC) gleichzeitig auslesen.
Schleife länger als der String ist kommt öfters im Quelltext vor.
-
Thread
String zerlegen funktioniert nicht richtig, 2-dimensionales Array
einen Pointer auf die Anfangsadresse des ermittelten Strings zurück. Daher funktioniert das Speichern in meinen 2D-Array nicht. Vielmehr müsste ich manuell mit strncpy arbeiten... In etwa so: [c] void store_nmea (unsigned char nmea_msg_id, char* ptr_source
Mir gehts darum ,dass mit der [c] char* ptr_Datafield[20][/c]-Methode die einzelnen Strings irgendwo im Speicher des µC stehn und evtl. andere Daten überschrieben werden könnten. Oder legt mir strtok bei jedem Aufruf reservierte Speicherbereiche
-
Thread
Kommunikation Labview zu PIC32 via Ethernet
Falls Du vom uP zum Computer einen String übertragen willst, musst Du am uC einen Server starten. Schau einmal in LabVIEW zwei Dateien an: C:\Program Files\National Instruments\LabVIEW 2009\examples\comm\TCP und da Simple Data
gebe ich ein Telnet 169.254.1.1 9760 und es öffnet sich > ein Telnet Fenster. > Hier gebe ich Strings ein und empfange die Echos.. genau. Funktioniert also. > Die Übertragung funktioniert immer noch nicht:( > > Wie verschicke ich denn einen String? > Ich nehme an im GenericTCOServer.c
-
Thread
Powermessung mit INA219
(tempe); //Serial.print(temperature); String C = "*C"; // int buf[318]; int x, x2; int y, y2; int r; // Clear the screen and draw the frame // myGLCD.clrScr(); myGLCD.setColor(255, 0, 0);// oberes Rechteck myGLCD.fillRect
myGLCD.printNumF(temperature[3], 0, 260, 190); myGLCD.setColor(255, 255, 0); //String C="*C"; wurde schon weiter oben erklärt myGLCD.print(C, 60, 190); myGLCD.print(C, 140, 190); myGLCD.print(C, 220, 190); myGLCD.print(C, 300, 190); myGLCD.setColor(255, 255, 0);
-
Thread
Wird diese if-Schleife jemals ausgeführt?
wusste ich nicht. Da kommt dann die Warnung mit dem "=". Es kam auch noch eine Meldung zu [c]char File_Name[15] = "beelogger_Lukas_1.csv";[/c] Die String-Länge sei zu kurz. Reicht es da einfach eine 22 aus der 15 zu machen? Vielen Dank!
Paul-Gerhard S. schrieb im Beitrag #6686484: > Es kam auch noch eine Meldung zu [c] char File_Name[15] = "beelogger_Lukas_1.csv"; [/c] > Die String-Länge sei zu kurz. > > Reicht es da einfach eine 22 aus der 15 zu machen? Wegen dieser Zeilen wohl nicht: [c] File_Name
-
Thread
ATmega8 und UART => Code bringt Einsteiger zum Verzweifeln
, Null wird. > Wenn ich aber > [c] > putstring("ADCW"); > [/c] > eingebe, wird nicht der ADC-Wert, sondern der String ADCW übertragen. Natürlich. Computer machen nicht, was man will, sondern was man ihnen sagt. Du mußt den integer
, UDRE)); > UDR = data; //data ausgeben > } [/c] IMO OK. [c] > > //sendet einen String über das Uart > void uart_puts(char *s) > { > while (*s != 0) > { > UART_SendByte=*s++; [/c] Mööp. Das kompiliert nicht. So muß das sein
-
Thread
Giesomat 16 Sensoren
Beitrag #6664383: > Habe ich geändert das ich von 1 -16 zähle Nein, jetzt zählst du von 1 bis 15: [c] for (CurrSensor = 1; CurrSensor < 16; CurrSensor++) [/c] Aber deine Funktion SelectSensor benötigt Werte von 0-15: [c] void SelectSensor(byte SensorToSelect) { SensorToSelect--; digitalWrite
SensorToSelect, 0))); digitalWrite(MultiplexPinB, (bitRead(SensorToSelect, 1))); digitalWrite(MultiplexPinC, (bitRead(SensorToSelect, 2))); digitalWrite(MultiplexPinD, (bitRead(SensorToSelect, 3))); } [/c] Und dein Zugriff auf das Array benötigt Werte von 1-16: [c] void AssignToSensor(int SelectedSensor
-
Thread
Funktionsparameter Gesperrt
screenX == 1) { //lcdClear(); xpos = 0; lcdSetPos(xpos,8); lcdString8("Neonröhre 1"); } } [/c] Beim Starten des Programms wird lcdScreen(0) aufgerufen und wie gewünscht die erste if-Anweisung erfolgreich abgearbeitet (und eine Grafik auf das LCD gezeichnet
String-Funktion... [c] void lcdChar8(int c) // c ist hier der jeweilige ASCII-Wert (z.B.: "A">65) des gesendeten Charakters { for(uint8_t nColumn=1; nColumn<=7; nColumn++) { lcdSendData
-
Thread
LCD wird immer aktualisiert
brne lcd_ok_1 ldi r19, 20 rjmp main lcd_ok_1: ldi ZL, LOW(text_ok*2) ; Adresse des Strings in den ldi ZH, HIGH(text_ok*2) ; Z-Pointer laden rcall lcd_flash_string ; Unterprogramm gibt String aus der text_ok: .db "OK",0 ; Ausgabe bei keinen fehler [/avrasm]
Immer noch falsch [C] lcd_ok_ja: ldi r25, 11 ldi ZL, LOW(text_ok*2) ; Adresse des Strings in den ldi ZH, HIGH(text_ok*2) ; Z-Pointer laden rcall lcd_flash_string ; Unterprogramm gibt String aus der rjmp main
-
Thread
GPS String auswerten wiedermal
buffer[StringLen] = NextChar; StringLen++; } NextChar = getch1(); } while( NextChar != '\n' ); buffer[StringLen] = '\0'; } [/C]
Warum hast du hier [C] void StringHolen(void) [/C] die Argmuente entfernt, die da ursprünglich mal waren? [C] void getstr1( char* Buffer, uint8_t MaxLen ) { [/C] Du arbeitest im Moment in die genaue Gegenrichtung
-
Thread
Umsetzung: String in Befehl
ATmega2561, der über die serielle Schnittstelle mit mein PC Interruptgetriggert kommmuniziert. Gibt es in C irgendeine Möglichkeit wie man einen String, z.B. "SetPortA(0xaf);" in einen direkten Befehl an den Mikrocontroller umwandeln kann. Bisher ist mir nur eingefallen beim Empfang eines Strings, diesen
@Hans So ungefähr habe ich das gemeint. Der Unterschied ist nur, dass der String(also der Befehl), den ich an den µC sende, genau so aussehen soll, wie die auszuführende Funktion im µC, z.B. SetPort(A, 0xF3); Aber du hast wohl Recht. Ich werde vermutlich decodieren müssen
-
Thread
Serielle Verarbeitung von Strings mit Python
, ich arbeite gerade an einer Kombination aus Pythonskript und Mikrocontrollerprogrammierung in C bei der ich einen ARM Cortex-M3 vom Typ ADuCM301 über UART ansteuern möchte. In diesem Skript soll erstmal ein String, später mehrere Strings, seriell an den µC gesendet werden. Hierzu verwende ich
wichtigste erst mal hier nachlesen: [[String-Verarbeitung in C]]
-
Thread
AVR-GCC 4.8.1: unrecognizable insn
abbricht. Zurückführen konnte ich alles auf die folgende Zeile (von deren Typ es mehrere gibt): [c] snprintf_P(glstr_Buf,N_TEXTBUF,menudata[item].menutext,\ *menudata[item].puint8); [/c] Nicht zum Fehler führt die folgende Abwandlung mit einem konstanten String im Flash: [c] snprintf_P
is a GCC extension [enabled by default] #warning "GCC 4.8.1 needs workaround for flash strings" ^ C:\Users\Nicolas\Desktop\SVN\2015_Rotorsteuerung\Firmware_AVR\Pulsgenerator04\common\src_menu\menu.c(177,6): warning: #warning "GCC 4.8.1 needs workaround for flash strings" [-Wcpp]
-
Thread
String zu Integer (Wer findet den Fehler?)
Karl heinz Buchegger wrote: [C] if( *string == '-' ) is_neg = 1; [/C] -> [C] if( *string == '-' ) { is_neg = 1; string++; } [/C]
Stefan Ernst wrote: > Karl heinz Buchegger wrote: > [C] > if( *string == '-' ) > is_neg = 1; > [/C] > > -> > > > [C] > if( *string == '-' ) { > is_neg = 1; > string++; > } > [/C] und wieder mal die alte Weisheit
-
Thread
AtMega ehwiges Fuse Thema 16 Mhz Quarz
*progmem_s ) { register char c; while ( (c = pgm_read_byte(progmem_s++)) ) uart_putc(c); }/* uart_puts_p */ /* * these functions are only for ATmegas with two USART */ #if defined( ATMEGA_USART1 )
char *progmem_s ) { register char c; while ( (c = pgm_read_byte(progmem_s++)) ) uart1_putc(c); }/* uart1_puts_p */ #endif [/code] [code] #ifndef UART_H #define UART_H /*******************************
-
Thread
Registernamen/Variablennamen erstellen
bleibt dir da nur übrig, diese in Abhängigkeit des übergebenen Namens zuzuweisen. Dazu kommt: [c] char* test = "DDR"; char* append = port[4]; volatile char* data_direction = strcat(test,append); [/c] ist ein klassischer Fehler bei der String-Behandlung. Wie schreibt wikipedia so schön:
>Heißt das, dass ich jetzt abfragen einbauen muss? Nein. [c] if (*port == PORTD) DDR = &DDRD; [/c] Ich habe Dir doch auch geschrieben, das ein String nichts unmittelbar mit der Identifikation, zu der hier eine numerische Konstante dient, zu tun hat
-
Thread
ATMega644 UART
Beitrag #4514886: > muss ich die Baudrate neu berechnen? Nein. Aber diese Einstellungen: [c] UCSR0B = (1<<RXEN0)|(1<<TXEN0); [/c] werden in UCSR0A gemacht.
// ADC_Init(); ADCWert = 123; while(1) { //ADCWert = ADC_Read(4); sprintf(String,"Test: %i\n", ADCWert); uart_puts(String); //USART_Transmit(S); _delay_ms(1000); } } [/c] Wenn dann was kommt stimmt mit deinem ADC Teil was nicht
-
Thread
String Array "indexieren" wie geht das?
Spannungsteiler schrieb im Beitrag #4719510: > String Worte[5][10] = {"Uhr","Bot","Traktor","Haus","Zange" }; ich kenne jetzt Arduino nicht, aber du willst bestimmt nicht 50 Strings haben. [c] String Worte[5] = {"Uhr","Bot","Traktor","Haus","Zange
die string-Schreibweise nimmst. [c] String Worte[5] = {"Uhr","Bot","Traktor","Haus","Zange" }; [/c]
-
Thread
Programmoptimierung
DDRB, temp1 ldi temp1, 0xFF out DDRD, temp1 ;Vorbelegung auf Multi Kanal 0 -> String bei Temperatursenden ldi multinr, '0' ; Beginn des Strings ; Baudrate einstellen ldi temp1, HIGH(UBRR_VAL) out UBRRH, temp1 ldi
nicht mehr ??????? warum verläßt er mich, er war doch noch so jung????? --> das war der befehl: C:\WinAVR-20100110\bin\avrdude.exe -C C:\WinAVR-20100110\bin\avrdude.conf -p m8 -P lpt1 -c alex -u -U hfuse:w:0xD9:m -U lfuse:w:0xE7:m hier der Programmer im Conf: programmer id = "alex";
-
Thread
Entprellung nach Peter Dannegger funktioniert nicht wie sie soll?!
PORTA // #define LED0 0 // #define LED1 1 // #define LED2 2 [/c] taster.c [c] #include <stdint.h> #include <avr/io.h> #include <avr/interrupt.h> #include "taster.h" #include "delay.h" rest wie im Beispiel [/c] [c] [/c] in der main.c [c] #include
( 0, 0 ); if( KEY_PIN & (1<<KEY0) ) lcd_string( "Pin auf >> 1 <<" ); else lcd_string( "Pin auf >> 0 <<" ); } return 0; } [/C] Ist die Anzeige wie erwartet? Normal steht [code] Pin auf >> 1 << [/code] auf dem LCD.
-
Thread
i²c kein ACK vom SLAVE
modifizierten i2c_start() [c] TWCR = (1 << TWEN) | (1 << TWINT) | (1 << TWSTA); // send start condition i2c_wait_flag_to_be_set(); // wait until transmission completed if(i2c_check_status_register(0x08
(); char buf[8]; itoa(TWDR, buf, 10); lcd_string(buf); lcd_string(": "); itoa(TWSR & 0xF8, buf, 10); lcd_string(buf); _delay_ms(500); lcd_clear(); [/c] Mein LCD zeigt mir nun bei dem TWDR-Inhalt von "0x80" ein "0x18" (aus
-
Thread
Bascom Variablen
Ich mach das gerne durch Overlay. Da kann ich als Byte einlesen und hab am Schluss einfach nen String, oder umgekehrt. Also z.B. so. [code] Dim Eeprom_data As String * 9 ' Daten als String Dim Eeprom_data_array(9) As Byte At Eeprom_data Overlay ' Daten als Array Eeprom_data
des unteren Bytes. Mit 3 Byte geht das natürlich nicht. Irgendwie vermisse ich auch "$lib "i2c_twi.lbx", sonst geht I2C eigentlich nicht per Bascom. Da Du ja wohl Ambitionen hast: Mach bitte viel kleinere Schritte und verstehe jeden Schritt. µC ist nicht wie PC "hab rumprobiert und so geht
-
Thread
UART Problem mit Fleury Lib
[c] /* * Transmit string from program memory to UART */ uart_puts_P(PSTR ("String stored in FLASH\n")); [/c] ^^^^^^ ^ Gruß Carsten
Zwischenzeit kannst du hier mal die absoluten Grundlagen über Strings in C nachlesen. Das ist allerdings kein Ersatz für ein C-Buch! http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F
-
Thread
STM32L152C-Discovery debuggen
Hallo Entwickler, ich bin ein STM32-Beginner und habe das Board STM32L152C-Discovery-Board, einen ST-LINK-V2-Adapter und Debian (Linux) als Betriebssystem auf meinem Rechner installiert. Als IDE benutze ich STM32CubeIDE. Ich habe damit mein erstes Projekt mit der automatisierten
mehrfach probiert habe). Im Anhang sind Bilder. Ich habe auch mal den GBD-Server zum Debuggen von C/C++-Projekten probiert, jedoch bekomme ich da den Fehler, daß kein Board erkannt werden konnte, weil Timeout erfolgte. Mittlerweile habe ich alle möglichen Debugger und Einstellungen/Konfigurationen
-
Thread
Attiny 4313 zu 'klein'
zu 70% verwendet. Die Fehlermeldung, dass das RAM nicht reicht, kommt wenn ich die gewünschten Strings deklariere. Heisst: erstmal alles was nicht sein muss rauslöschen und dann schauen wie das mit Mehrfachverwendung einiger/weniger String's gehen könnte. Kurt
, ich bin nur mit C auf den AVRs unterwegs.
-
Thread
Uart String empfangen Interrupt
) != '\0') { rec[j++] = n_char; tx_char(p, n_char); } rec[j] = '\0' ; tx_string(p, rec); } /**************************/ void UART2_IRQHandler( void ) { (void)UART2_S1; rx_echo_string( UART2 ); } [/c] Gruß Marco
Zeichen abholen */ extern void V24TxDone (void); /* warten bis Sendepuffer geleert ist */ [/c] Und auf diesem Interface dürfen dann alle anderen Funktionen aufbauen, also Senden von Strings oder Ausgabe von Zahlen im Klartext und so weiter. Der Interrupt dient IMMER nur zum Bedienen der Hardware
-
Thread
Strings direkt in Funktion eintragen
String schrieb im Beitrag #4812250: > kann man eine Funktion > aufrufen? klar nur viel einfacher [c] fkt("text", "nocheintext"); [/c]
String schrieb im Beitrag #4812262: > das heißt ich muss garnicht mitteilen, dass call by reference verwendet > werden soll C übergibt keine Arrays an Funktionen, sondern /immer/ nur Adressen, d.h.
-
Thread
ATMega 16 Thermometer Display zeigt nichts an
Den ISP nicht berücksichtigen, den habe ich nicht mit angeschlossen. Hier ist der Quelltext: [C] #define F_CPU 4000000UL #include <avr/delay.h> #include <avr/io.h> #include <string.h> #include <avr/interrupt.h> void LCD_send_command(unsigned char cmnd); void LCD_send_data(unsigned
(firstAddress[y-1] + x-1); _delay_ms(10); } void LCD_print(char *string) { unsigned char i=0; while(string[i]!=0) { LCD_send_data(string[i]); i++; } } ISR(ADC_vect) { char tempC, tempF, display; float tempff; tempC = ADCH;
-
Thread
Anfängerfrage zu Strings am LCD
("Hallo"); // Ausgabe der 1. Zeile lcd_setcursor( 0, 2 ); lcd_string(zahl); // Ausgabe der 2. Zeile }[/c] [c]void lcd_string( const char *data ) { while( *data != '\0' ) lcd_data( *data++ ); }[/c]
"Anzahl Schritte", "4", 4, }; [/c] So geht es nicht [c] lcd_string(a10.zeile_eins); // Ausgabe der 2. Zeile [/c] Der Versuch den String in eine Hilfsariable zu kopieren und diese dann auszugeben scheitert ebenfalls. [c]
-
Thread
Zeiger auf Stringarray
Also Variante 2 ist es, die Sprache wird erst bei der Ausgabe verwendet. Die String-Struktur lässt sich nicht so anlegen: [c]__flash unsigned char *strings[][maxSprachen]; [/c] Der Compiler will es so: [c]__flash unsigned char strings[][maxSprachen][LAENGE];[/c] Beim anlegen
Das ganze wird fest angelegt, daher auch im Flash: [c] __flash const diestruct_t arr[] = { { stringsNeu[1],1,2 }, { stringsNeu[2],3,4 }, { stringsNeu[3],4,5 }, { stringsNeu[4],5,6 }, }; [/c]
-
Thread
Überlauf in C erkennen
vernueftigen 16Bit Compiler jagen und den Assembler Output hier posten Beispiel: router:~# cat t.c main() { unsigned short a,b; long c; a=40000; b=40000; c=a+b; printf("res: %ld\n",c); if (((long)(a+b)) > 65535) { puts("true"); } } router:~# gcc -S t.c router:~# cat t.s .file "t.c" .version "01.01" gcc2_compiled.: .section .rodata .LC0: .string "res: %ld\n" .LC1: .string "true" .text
-
Thread
Fehlermeldung "must be const in order to be put into read-only section.."
Ja, so geht es: [c] const char * const DeutschHead[] PROGMEM = { TextDEHEAD1, TextDEHEAD2, TextDEHEAD3, }; [/c]
Programm Konstanten im flash zu ändern, ich weiss doch was Konstante sind. z.B. // const char string_0[] PROGMEM = "String 0"; // "String 0" etc are strings to store - change to suit. const char mo0[] PROGMEM = " "; const char mo1[] PROGMEM = "Jan"; const char mo2[] PROGMEM = "Feb"; const
-
Thread
präzise Schaltuhr
überschritten haben. Es ist schon recht nervig, ganze Routinen in Assembler schreiben zu müssen, die in C nur wenige Zeilen wären. Ich würde daher dazu raten, in C weiter zu machen. Peter
geistreichen Beitrag: > Es fehlt mir aber hier der >entscheidende „Kick“, der richtige Einfall. >Nimm C. ;-) beziehen. Oder war da etwar Vitamin C gemeint? Der Rest des Textes war nur ein wenig ungünstig angeordnet und sollte auf keinen Fall gegen C an sich gehen. Ich will es mal noch etwas anders
-
Thread
Ist mein Mega 128 Kaputt
Hallo Ja genau das habe ich am anfang gemacht so wars auch unter Linux C++. String mit string funktionen. Nur einer sagt die kosten viel Resourchen und mann sollte memcpy vorziehen. nun das habe ich gemacht und meine Probleme begannen. Nur noch eine Frage zu extern
Martin wrote: > Hallo > > Ja genau das habe ich am anfang gemacht so wars auch unter Linux C++. > String mit string funktionen. > > Nur einer sagt die kosten viel Resourchen und mann sollte memcpy > vorziehen. Vergiss diesen Unsinn. Vor allem dann, wenn deine Alternative lautet:
-
Thread
ESP32 sethostname klappt nicht
aus einem Struct an einen Client zu schicken, wenn ich meinen Struct Element für Element als JSON String zusammenbaue wie dargestellt? Die Laenge scheint ja unbegrenzt zu sein. Also Name des Elementes + String(Data.xyz). [c] //First request will return 0 results unless you start scan from somewhere
(true); } } json += "]"; request->send(200, "application/json", json); json = String(); }); [/c]
-
Thread
string oder int an Display ausgeben
Ok werde ich mich mal Einlesen, Danke schon mal. Also sehe ich das richtig, das es unter C keine Variable "string" gibt, um z.B. folgendes zu Bauen: [c] string text; text = "Hello World"; lcd_set_cursor(0,LINE0); lcd_putc(small_font, text); [/c] Wo sind die Unterschiede
relevant sind? Das hat doch alles nichts mit Deiner Frage: >Also sehe ich das richtig, das es unter C keine Variable "string" gibt,... zu tun. Es gibt zwar Unterschiede zwischen K&R-C, ANSI-C, C99 usw. Aber die betreffen Deine Frage nicht. Gerade in Bezug auf die Frage nach C-Strings. Was die Frage
-
Thread
UART Datenstrom mit Array vergleichen
rx0_buffer[2] = rx0_buffer[1]; rx0_buffer[1] = rx0_buffer[0]; rx0_buffer[0] = ((uint8_t)(c)); mmi_rx0_string_analyze(); } } void mmi_rx0_string_analyze (void) { cmp_buffer[6] = 0x01; // vergleichs-array zum test einfach mal fest definiert cmp_buffer[5] = 0x02
de.wikipedia.org/wiki/Warteschlange_%28Datenstruktur%29#Implementierung_als_Ringpuffer Zu dem Problem einen String in einem anderen zu finden, wobei die Anfangsposition sich verändern kann, gucke mal in "Algorithmen in C" von Sedgkwick. Gibts, denke ich, auch online.
-
Thread
Leseprobleme mit dem DHT21 an einem D1 Mini V3
Ich weiß nicht ob das ein Fehler ist, das sieht aber für mich komisch aus : [c] time_t now = time(nullptr); now = now + 3600 + 3600; String time = String(ctime(&now)); [/c] Es wird die Variable "now" deklariert aber in "time.h" gibt es die Funktion "now
uint16_t packetIdPub4 = mqttClient.publish(MQTT_PUB_Error, 1, true, String((fail_counter)).c_str()); delay(100); uint16_t packetIdPub5 = mqttClient.publish(MQTT_PUB_Messages, 1, true, String((total_counter)).c_str()); delay(100); return; } [/c] > > Mathias
-
Thread
uip string ausgabe
Hallo, ich möchte gerne den ADC Wert auf der Wbseite als string angezeigt bekommen und nicht als Balken,aber so wie ich das jetzt hab bekomm ich kein string angezeigt. könnte mir jemand weiterhelfen. [c] static unsigned short generate_adc_status(void
Das wundert mich nicht. Das ... [c] } %2d // <<<---------------- //sprintf(&buffer[0]," <img src=\"balken.gif\" width=\"%4d\" [/c] ... compiliert ja nicht mal.
-
Thread
Fehler bei Programmieren von C
bekommen, aber nichts hat wirklich geholfen. Andauernd bekomme ich folgende Fehlermeldungen: quelltext.c:22:20: error: expected expression before '[' token quelltext.c:55:1: error: expected expression before 'Mensa_Essen' quelltext.c:82:17: error: expected expression before 'ISO8601_JJJJMMTT' quelltext.c
Die Aufgabenstellung gibt es hier: http://www.c-plusplus.de/forum/322752
-
Thread
FT800 display list handling
; FTImpl.Cmd_Text(FT_DISPLAYWIDTH / 2, FT_DISPLAYHEIGHT / 2, 31, FT_OPT_CENTER, Display_string); FTImpl.DLEnd(); // end the display list FTImpl.Finish(); // render the display list and wait for the completion of the DL } } [/c] ev. muss vor dem DLStart() noch ein Aufruf
nich, mal schaft er 3 durchläufe mal 100 mal 20 usw... irgendwas stimmt da noch nicht ... ;) [c] int whichColor = 0; int c = 0; void loop() { c++; whichColor = 1 - whichColor; // die andere Farbe unsigned long currentMillis = millis(); const char Display_string[18] = "was
-
Thread
zu Blöd zum Programmieren: Brauche Hilfe für UART Zeichenkette
blöd zum programmieren Ziel ist eine Motorsteuerung über den Computer zu machen (programmiert in C#, funktioniert). Es wird über einen Drehknopf die Umlaufgeschwindigkeit übertragen als String. Also z.B. 11, 12 oder 5. Dieser String bedient im uC den delay_befehl. Ich weis nicht schön und nicht
uart_str_complete==1) { uart_puts("Geschafft\n"); // strcpy(Hier_Soll_ES_REIN, (const char*)uart_string); uart_puts((const char*)uart_string); uart_str_complete = 0; } } return 0; } [/c] Wenn noch grobe Fehler im Code sein sollten, wären Hinweise ganz nett. Der erste
-
Thread
Zugriff auf Strings im Flash
eigentlich "funktioniert nicht" und "klappt" ? heisst das "kompiliert schon gar nicht" oder "der uC geht in flammen auf" ?
Nein. Es geht ja um den Pointer. Auf den String greift strcpy_P zu.