-
Thread
UART Problem mit String
9600 #define UBRR_BAUD ((F_CPU/(16*BAUD))-1) #include <avr/io.h> int zeichen(unsigned char c) { while(!(UCSRC & (1 << UDRE))); // Abfrage ob senden möglich UDR = c; // Senderegister return 0; } void string(char *s) { while (*s) { zeichen(*s); s++; }
9600 #define UBRR_BAUD ((F_CPU/(16*BAUD))-1) #include <avr/io.h> int zeichen(unsigned char c) { while(!(UCSRC & (1 << UDRE))); // Abfrage ob senden mšglich UDR = c; // Senderegister return 0; } void string(char *s) { while (*s) { zeichen(*s); s+
-
Thread
Empfangen mit Interrupt
[200]; //const char dekryptString[14][100]; int i=0; const char dekryptString[200]; [/c] > receive.c: [c] char tempstr[200]; char string[200]; char buffer[200]; unsigned char nextCharPos; int lendekryptString; const char
int lendekryptString; extern const char dekryptString[]; extern volatile unsigned char stringReady; [/C]
-
Thread
Array-Speicher nach LCD-Ausgabe wieder freigeben
:-) [C] void Print_LCD(char *String) { char c; while (( c = pgm_read_byte(String++)) != '\0') { Write_byte_toLCD(c); } } [/C]
heraus ausgeben void DOG_writetext(char *string) { uint8_t c; while (c = *string++) != '\0') { sendbyte( c ); } } ... // Strings aus dem Flash heraus ausgeben DOG_writetext_p( PSTR("*BOS08E-Konfig.*"), 0, 0 );
-
Thread
DCF77 Signalerfassung mit ATMega 328p in C
Hallo Zusammen, ich benötige eure fachmännische Hilfe bei einem Problem mit dem DCF77 Signal bei einem Atmel ATMega 328p. Wie ihr euch denken könnt möchte ich das das DCF77 Signal empfangen. Der neg. Ausgang des DCF77-Sensor habe ich an den INT0 Eingang PD2 am Atmel angeschlossen. Mit einem Interrupt möchte ich nun im Sekundentakt ein Array hoch zählen. Die Signalzustandserkennung mache ich mit einem Timerinterrupt Timer0. Je nach Zustand schreibe ich dann die Werte in das Array. Leider habe ich das Problem, dass der INT0- Interrupt nicht zuverlässig die fallende Flanke erkennt -> meistens wird
-
Thread
static global
Andreas B. schrieb im Beitrag #3296385: > Und dann sind die konkreten > Variablen wirklich Strings mit der Länge, die die Rückgabewerte hatten Ja, wie das getline in C++. Der Punkt ist nur, sind die Ergebnis-Strings komplett auf dem Stack oder auf dem Heap? In C++ ist es immer letzteres (da die
Das war nur nebenbei, der eigentlich Punkt war, dass die Variablen dann die tatsächliche Größe der Strings haben. > Andreas B. schrieb: >> Und dann sind die konkreten >> Variablen wirklich Strings mit der Länge, die die Rückgabewerte hatten > Ja, wie das getline in C++. Der Punkt ist nur, sind
-
Thread
Zwei kleine Fragen zu Bascom Do Loop Schleife
Reference = Avcc Start Adc Dim Pause As Word Dim Speed As Word Dim Adc0 As Word Dim S1 As String * 3 'Rot ' Dim S2 As String * 3 'Gruen Dim S3 As String * 3
Reference = Avcc Start Adc Dim Pause As Word Dim Speed As Word Dim Adc0 As Word Dim S1 As String * 3 'Rot ' Dim S2 As String * 3 'Gruen Dim S3 As String * 3
-
Thread
Division mit "krummen" 10
Lothar M. schrieb im Beitrag #4759172: > Was ist da der Unterschied? Man kann auch a, b und c nehmen... Der Unterschied besteht im Programmierstil, der sich in Anlehnung an K&R ergeben hat. Eine Character-Variable bekommt 'c', ein String 's', Pointer vorzugsweise 'p' und 'q' und eine temporäre
wandelt, führende Nullen durch Leerzeichen ersetzt (damit die Position auf dem Display stimmt) und ein °C dranhängt. Dieser Routine muß ich nur den Wert übergeben und bekomme das Ergebnis aufs Display. Wenn ich das erst über itoa, String usw. machen wollte, wäre das deutlich umständlicher.
-
Thread
char array buchstaben einzeln auslesen
--; > } > > lcd_clear(); > lcd_string( string ); > } > [/C] Ist noch früh am Morgen. Das geht auch einfacher (und vor allen Dingen: richtiger) [C] void FlyIn( const char* string ) { uint8_t len = strlen( string ); while( len > 0 ) { lcd_clear(); lcd_string( string + len-- ); _delay_ms( 100 ); } } [/C]
-
Thread
String über Uart empfangen STM32<--->Arduino
ok C/C++ hab ich nicht soviel Ahnung weil ich eher C# / Java programmiere aber das müsste ja dann so ausschauen: [c] string char2string(char * myCharArray) string mystring; //mein string //sollange
} *Buffer = '\0'; //wegen c-string } [/c]
-
Thread
GCC ARM: Problem mit "\n" am Stringende
dieser Welt? Ich würde mal schätzen: Auf diesen ganzen printf/scanf Müll pfeifen. Ist auf einem µC sowieso viel Aufwand für nichts. Eine Routine, die einen String ausgeben kann ist schnell geschrieben und mehr braucht man Low-Level nicht. Maximal das man sich mit sprintf an die Formatiermöglichkeiten
Dort muss nach dem String noch ein \n ausgegeben werden. Tut es das nicht, dann hat der, der das geschrieben hat, geschlampt. Von diesen Funktionen ... > printf.c: puts() => fputs(pStr, stdout) > printf.c: fputs(const
-
Thread
Kompilieren von C Dateien in Kubuntu
*******************************************************/ void lcd_puts(const char *s) /* print string on lcd (no auto linefeed) */ { register char c; while ( (c = *s++) ) { lcd_putc(c); } }/* lcd_puts */ /***********************************************************
********************************/ void lcd_puts_p(const char *progmem_s) /* print string from program memory on lcd (no auto linefeed) */ { register char c; while ( (c = pgm_read_byte(progmem_s++)) ) { lcd_putc(c); } }/* lcd_puts_p */ /***************
-
Thread
Fleury's Uart, wie string empfangen?
// Sammle solange Zeichen, bis: // * entweder das String Ende Zeichen kam // * oder das aufnehmende Array voll ist if( c != '\n' && StringLen < MaxLen - 1 ) { *Buffer++ = c; StringLen++; //uart_putc((unsigned char)c ); //uart_puts("\n"); //uart_puts("Zeichen empfangen\n"); } if( c == '\n') { // Noch ein '\0' anhängen um einen Standard // C-String daraus
-
Thread
strtok-Funktion mag keine leeren token
Hallo Fange gerade an mit C zu spielen und bin gleich mal über folgendes Problem gestolpert: Wenn ich mit strtok(String, delimiter); folgenden String zerteilen möchte "$PFLAU,0,1,1,1,0,,0,,*63"; stolpert die Funktion über
function should be preferred for portability reasons (it conforms to ANSI X3.159-1989 (``ANSI C89'')) it is unable to handle empty fields, i.e., detect fields delimited by two adjacent delim- iter characters, or to be used for more than a single string at a time.
-
Thread
UART + AT89C51 = sinnlose Zeichenketten
aufmachen,doch ich habe ein weiteres Problem. Diesmal handelt es sich dabei um die Ausgabe eines Strings. Mein C - Programm sieht folgendermaßen aus: [c] #include<C51RB2.h> #include<stdio.h> #include<string.h> const char* string = "-[WELCOME]-"; char x[2]; int laenge; void uart_init
bei deinem string-Array. [c]const char* string[11] = "-[WELCOME]-";[/c]
-
Thread
String parsen und zahlen Zahlen per "atoi" extrahieren klappt nicht
stelle stehen. Das klappt auch! > > Allerdings schaffe ich es nicht, die drei Zahlen aus dem String richtig > per "atoi" zu extrahieren. Dann extrahiere sie doch ganz einfach OHNE "atoi". Sowas sollte ja wirklich kein Thema sein. Lade dir einfach die Lernbetty herunter und guck dort in conv.c
Einfacher kannst du aber atoi, der eh beim ersten ungültigen Zeichen aufhört, direkt auf den String loslassen: [c] int parse(char *str) { if (strlen(str) > 16 && str[0] == '*' && str[16] == '#' && str[4] == ',' && str[8] == ',' && str[12] == ',') { int r = atoi(str
-
Thread
Starthilfe - Stringformatierung in C
sitze hier gerade vor meinem ersten kleinen Projekt (ATmega 128 mit AVR-Studio) und möchte nur einen String formatiert auf ein Display bringen, und alleine das bringt mich schon an den Rand der Verzweiflung... Ich bin absoluter Neuling in C, wahrscheinlich ist genau das schon das Problem. Tutorials lesen
Ein String in einer Variablen klingt verdächtig. Vermutlich hast du eine Zahl in einer Variablen die vom Typ Integer ist und willst diese nun formatiert ausgeben. [c] printf("%05f",Variable / 100.0); [/
-
Thread
Fehler "Conflicting Types for 'SendChar'"
, ist mir ehrlich rätselhaft. [c] string [/c] Die Variable heisst string [c] string[] [/c] sie ist ein Array .... [c] char string[] [/c] ... ein Array von Charactern (also einzelnen Zeichen) [c]
[[String-Verarbeitung_in_C]]
-
Thread
printf-Alternative für AVR
Kramen im Eingemachten lieferte folgende Routine, die einen unsigned analog zu utoa(.,10) in einen String umwandelt. Die Funktion liefert die Adresse der abschließenden '\0' zurück, was sich bei Weiterverarbeitung der Strings u.U. als günstig herausstellt: [c] #include <stdint.h> static const __flash uint16_t pows10[] = { 10000, 1000, 100, 10 }; char* u16_to_string (char *str, uint16_t n) { const __flash uint16_t *p = pows10; uint8_t not0 = 0; uint16_t pow10; do { char c = '0'; pow10 = *p++; while
-
Thread
DCF77 Welches Modul taugt was
diesem den internen Pullup aktivieren). Fertig ist die stets passende Pegelkonvertierung vom Modul zum µC unabhängig von der Höhe der µC Spannungsversorgung.
Sekunden), ein 05, UDR ins Variable B schreiben, UCSRA Bit 7 = 0, 0,033 s Pause, dann ein 0D, in Variable c schreiben, UCSRA Bit 7 = 0. Dann a:b:c auf dem Display ausgeben. Oder habe ich das falsch verstanden?
-
Thread
Absturz beim ESP8266
der gesamten Antwort im RAM zurechtlegen... Wenn dir das Templating zu kompliziert ist: [c] String resp = String(header_html); resp += get_jsdate_fn(); resp += get_html_table(); resp += String(rem_body); resp += String(footer_html); [/c] ist zumindest *etwas* sparsamer.
Überlauf ist schon mal ein Punkt. @ Εrnst B >Wenn dir das Templating zu kompliziert ist: [c] String resp = String(header_html); resp += get_jsdate_fn(); resp += get_html_table(); resp += String(rem_body); resp += String(footer_html); ist zumindest etwas sparsamer. [/c] Diesen Teil
-
Thread
Bascom Serialin
Oh hab was vergessen: Zeile "Dim Input_data As String * 10 At &H600" muss durch "Dim Input_data As String * Uart_input_max At &H600" ersetzt werden. fertiger Code im Anhang Gruß Andreas
sich bei mir GCC und ld; simpler Array-Überflauf a la C führt zum Crash; Bibliothek von Funktionen, die man im Zweifel besser nicht nutzt; Für mich ist das nicht einfacher als C und wenn's nicht reicht, ich sag nur: [c]Messwert = ( ( a & 0xfc ) / 2 ) *
-
Thread
Cast short zu char!
multipliziert, das sollte ja die Anzahl an Bytes sein. Hier mal der Rohbau der Senderoutine: [c] void RS232_OutData(unsigned char *String, unsigned int anzahl){ int i; for (i = 0; i<anzahl;i++){ RS232_OutChar(String[i]); } } [/c]
kann alles mitgegeben werden. [c] void RS232_OutData(void *data, unsigned int length ) { int i = 0; unsigned char *String = data; while ( i < length ) { RS232_OutChar( String[i++] ); } } [/c]
-
Thread
string operationen
lcdlibrary eine Ausgabe zu erhalten. die PF-lib hat die folgenden Funktionen: void lcd_putc(char c); void lcd_puts(const char *s); void lcd_puts_p(const char *progmem_s); #define P(s) ({static const char c[] __attribute__ ((progmem)) = s;c;}) #define lcd_puts_P(__s) lcd_puts_p(P(__s)) Ich
funktioniert schon, Du musst sie nur nur wie dokumentiert einsetzen. lcd_puts() dient zur Ausgabe EINES strings. Willst Du einen dynamischen String ausgeben, musst du ihn zuerst zusammensetzen mit Standart C String funktionen: char buffer[32]; strcpy( buffer, "Teil1-" ); strcat( buffer, "Teil2"
-
Thread
25LC1024 gefälscht oder defekt?
EEPROM_readStatus() & _BV(EEPROM_WRITE_IN_PROGRESS)) {}; } if (page != 512) { sprintf(command_string, "EEPROM page error at page %d.", page); } else { sprintf(command_string, "EEPROM pages okay!"); } command_confirm(command_string); } [/c] Meine EEPROM-Routinen scheinen
EEPROM_readStatus() & _BV(EEPROM_WRITE_IN_PROGRESS)) {}; } if (page != 512) { sprintf(command_string, "EEPROM page error at page %d.", page); } else { sprintf(command_string, "EEPROM pages okay!"); } command_confirm(command_string); } [/c]
-
Thread
Mein if Anweisung geht nicht
== 2||izeile1 == 3){ // If 4 set_cursor(1,izeile4); lcd_string("4 STATUS"); //izeichen=izeichen+1; } //set_cursor(1,4); //lcd_string("ANLAGE AUS"); uebergabe(); _delay_ms(200); return 0; } [/c]
||izeile1 == 3){ set_cursor(1,izeile4); lcd_string("4 STATUS"); //izeichen=izeichen+1; } //set_cursor(1,4); //lcd_string("ANLAGE AUS"); uebergabe(); _delay_ms(200); return 0; } [/c]
-
Thread
Für "Denker" suche nach einer funktion auch selbstgeschrieben
Wenn du keine C Strings sondern Pascal Strings verwendest, solltest du entweder einen Pascal Compiler verwenden oder dir die Funktion mit Hilfe der for oder while Schleife in C selbst schreiben.
Ein C-Compiler kann nur Stringfunktionen mit C-Strings. Im Klartext: das muss eine /0 hinter den Zeichen stehen ! Strings mit Längenangabe davor sind Pascal oder Delphi Strings und die kann ein C Compiler
-
Thread
Bosch BMA020 Zweierkomplement
dein string ist auch kein string sondern ein einfaches Zeichen ein String wäre ein char-array, also mit [groesse] hinterher ;)
Habe ein paar Fehler gefunden. [C]i2c_write (0x02); ... gx = (int16_t)(data[0]) >> 6; gy = (int16_t)(data[1]) >> 6; gz = (int16_t)(data[2]) >> 6; [/C] soll heißen [C]i2c_write(addr); ... gx = ((int16_t)data[0]) >> 6; gy =
-
Thread
[C] chararray zu uint64_t
> Wie kann ich das in C bewerkstelligen. Was bekommst Du denn? Einen C-String? man atoll. Rohdaten in der richtigen(tm) Endianness? man memcpy. Rohdaten in der falschen(tm) Endianness oder anderweitig total verwurstet? man
In den AVR-Tools mit AVR-LibC gibt es kein strtoull und auch kein atoull --> selber programmieren. Ist das char-Array denn ein String oder ist das schon das Binärformat des Stamps?
-
Thread
I²C EEprom communication (reading/writing)
just saw there's a french elektor site www.elektor.fr. Search for "I2C" in the R8C/13-forum. Maybe the M16C has hardware-based I²C? The R8C/13 uses Software I²C. By the way: The R8C/13 has 4KByte of user accessible ROM. So often an external EEPROM is not necessary. It's
I will add somen I²C temperatures sensors : a AD5161 and a AD5252 In order to display the data from the sensors to the LCD, I have to convert Data into a char string. I think I will procede like this : Binary
-
Thread
Display Ansteuerung - 16 x 4 DotMatrix LCD
Ah Port C Ist die JTAG Fuse aus? ;)
PD7); PORTD |= (1 << PD7); lcd_init(); lcd_clear(); lcd_setcursor(0, 0); lcd_string("Hello World"); while(1) { //TODO:: Please write your application code } }[/c] Das ist unsere momentanes LCD Programm zum testen. Also kommends sind teils falsch
-
Thread
Zweidimensionales Array. Funktioniert das so zuverlaessig?
Schulter schauen kann. > Damit ich es das naechste Mal besser > machen kann. Auf einem µC kann man auch so vorgehen: Es gibt in jedem Programm Teile, die sind in keinster Weise vom µC selber abhängig. Eine String-Verwaltung und String Austausch in einer Datenstruktur ist nicht davon abhängig
Aufwand bedeutet, diese > AEnderung aber auf der anderen Seite unverzichtbar macht. Welches? [c]char* Commands[5][/c] ??? Das kein zweidimensonales Array, sondern schlicht ein Array von char*. Die einzelnen Pointer können frei irgendwo in den Speicher zeigen, wo auch immer der zugehörige String
-
Thread
Konstanten-Deklaration
Was würde denn eine nicht-static-Konstante in einer Funktion anderes machen? Anstelle von [c]static const char* string="Test";[/c] solltest Du [c]static const char* const string="Test";[/c] verwenden. Ersteres verbietet nur [c]string[0] = 'A';[/c] letzteres verbietet auch [c]string = "bla";[/c]
-
Thread
Strings zusammenfügen
einen String ein Zeichen anfügen Zeichen ist nicht gleich String ! Für Strings könnte dir das weiter helfen http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F Um
() { LastCharInBuffer = 0; return Buffer; } [/C]
-
Thread
UART Protokoll für µC
ziemlich lange nach einer Lib oder einem Standard für die serielle (UART) Kommunikation zwischen µC und PC bzw. µC und µC. Anwendungsfall wäre üblicherweise folgender: Ich hab irgendein Gerät mit einem (relativ kleinen) µC (Atmega o.Ä.) der per UART (+ FTDI, CP2102) an einem PC hängt. Jetzt
point Protokolle aus dem Ethernet Bereich sind irgendwie viel zu mächtig und groß für den kleinen µC. Btw. ich hab jetzt nicht das Problem ein Array per UART zu übertragen oder so. Da gibt es ja je nach µC Libs zu. Wie löst ihr sowas? Gruß!
-
Thread
optimierung und itoa
schreiben muss ("9" => "10") MAch mal ein paar bytes mehr platz im Ram, z.B. duch kürzen des Strings [c] lcd_text( (u8*) "Ex Interval:"); [/c] in "ExI" o.Ä. Saubere Lösung: pgmspace.h, PSTR, lcd_text_P.
schreiben muss > ("9" => "10") > > MAch mal ein paar bytes mehr platz im Ram, z.B. duch kürzen des Strings > [c] > lcd_text( (u8*) "Ex Interval:"); > [/c] > in > "ExI" o.Ä. > > Saubere Lösung: pgmspace.h, PSTR, lcd_text_P. genau, PROGMEM für diese Konstanten verwenden, dann landen die im Flash
-
Thread
Arduino Serielle Schnittstelle PC --> Arduino
Nachricht, damit du weißt das fertig ist. Du würdest dann z.B. "1_ON\n" senden. > Und wie werte ich den String dann eben aus? Bei deinem Beispiel würde ich es so machen: [c] uint8_t pin_nr = string[0] - '0' if(!strcmp(string + 1, "_ON")) digitalWrite(pin_nr, HIGH); else if(!strcmp(string + 1, "_OFF"
ich weiß nicht genau wie ich das > so in meinen Code einbauen soll. Indem du erst mal einen STring zusammenbaust. Ein String ist eine Abfolge von Zeichen, die mit einem '\0' endet. Das Ende der Übertragung erkennst du daran, dass ein \n eintrifft. Dann ist dein String komplett. [c] int nrChars
-
Thread
UDP-Netzwerke(l)n mit kleinen Mikrocontrollern und WizNet W5100/W5500
waitKey() { while (!Serial.available()) { /* block */ } return (char)Serial.read(); } String readLine() { String s; while (true) { while (!Serial.available()) { /* block */ } char c = (char)Serial.read(); if (c == '\r') continue; if (c == '\n') break; s += c;
for (int i=0;i<4;i++) outIp[i] = (byte)parts[i]; return true; } bool parseHexByte(const String& t, byte &b) { if (t.length() == 0 || t.length() > 2) return false; char *endptr = nullptr; long v = strtol(t.c_str(), &endptr, 16); if (endptr == t.c_str() || *endptr != '\0') return false
-
Thread
Hilfe bei #Define
Denk immer daran: Der Präprozesser ist eine reine Textverarbeitungs- maschinerie. Den kümmern C Anweisungen oder deren Grenzen oder Klammern oder ; herzlich wenig. Das Einzige ist: Aus Strings hält er sich raus: #define ABC 123 int main() { printf( "ABC" ); } das druckt wirklich
Hallo Karl Heinz, ich habe nun diese Hilfsfunktion eingebaut: void TxStringSenden( char * String ) { while( *String ) TxDatenSenden( *String++ ); } und in main() dann #if ANZAHL_LEDS == 16 TxStringSenden( "NV16S/W\r\n" ); #elif ANZAHL_LEDS == 32 TxStringSenden
-
Thread
C Frage zu Array Initialisierung mit Festtext
fast ausschließlich auf dem C++ Schiffchen fahre.
gehen, glaube ich, zumindest ab C++20: [code] struct sub_t { uint8_t a : 5 = 0; uint8_t b : 3 = 0; }; [/code] Kann sein, dass du dafür -std=c++20 mitgeben musst.
-
Thread
Fehlermeldung: near initialization for
Testzeile 3"), FSTR(" 1 Testzeile 3"), FSTR(" 1 Testzeile 4")} ,1 ,1 ,eingabe_betrieb}, }; [/c] Ich kann die Strings mit [c] show_display_lines(main_menu[index].text.text_zeile); [/c] aufrufen und anzeigen. show_display_lines macht folgendes: [c] void show_display_lines(const __flash
mischen. [c] void lcd_puts_p(const char *progmem_s) // print string from program memory on lcd (no auto linefeed) { register char c; while ( (c = pgm_read_byte(progmem_s++)) ) { lcd_putc(
-
Thread
Variablen vergleichen
102) { writeString_P("Schwenkarm wieder nach unten\n"); PORTC |=(1<<1); mSleep(1); PORTC &=~ (1<<1); mSleep(19); n==0; p++;} [/c]
Programm dauerhaft in der Schleife Welchen Wert hat p jetzt? Wenn p<100 ist, ist da was faul... > [c]while(p<102) > { > writeString_P("Schwenkarm wieder nach unten\n"); > PORTC |=(1<<1); > mSleep(1); > PORTC &=~ (1<<1); > mSleep(19); > n==0; > p++;} > [/c]
-
Thread
Serial-to-Ethernet: Welche Daten für URL senden?
an ein paar Stellen modifiziert. Nach dem Booten kommt ein "D" und nach dem Connecten nun auch ein "C", wie es sein soll. [c] void xport_connect(void) { unsigned int uiAnzahlBytes; strcpy(web.caHTML_string, "C192.168.178.53/80\n"); uiAnzahlBytes = strlen(web.caHTML_string); HAL_UART_Transmit_IT(&huart2, web.caHTML_string, uiAnzahlBytes); } [/c] Auch das Senden des HTTP-Requests geht nun: [c] { unsigned int uiAnzahlBytes; strcpy(caString, "GET /login.htm HTTP/1.1\r\n"); strcat(caString, "Host: 192.168.178.53
-
Thread
C oder C++ für ATMega
bewusst, dass viele Dinge in C++ (zb Strings) massiv auf dynamischer Speicherverwaltung beruhen, die du so auf deinem Mega nicht haben willst. Das schränkt natürlich die Vorteile von C++ schon etwas ein, obgleich noch einiges übrig
Karl heinz Buchegger schrieb im Beitrag #2015261: > Sei dir bewusst, dass viele Dinge in C++ (zb Strings) ... Wenn man sich sowas nicht selbst baut, gibt es die beim avr-gcc gar nicht, auch nicht für C++-Programme.
-
Thread
ATMega8: Kommunikation über RS232 mit C#-Programm
{ serialPort1.Write(TBText.Text+"\r\n"); // Senden des Textboxinhaltes an den µC } private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { string inputData = serialPort1.ReadLine(); // Empfangen des zurückgesendeten
> Beim Empfang öffnen sich zwei Messageboxes nacheinander statt einer, Du sendest hier zwei Strings, die beide mit einem Zeilenende(CRLF) abgeschlosen werden: Herbert G. schrieb im Beitrag #2609169: > Print "Antwort: " ; Empfangen 'Antwort des µC Die werden dann hier nacheinander abgearbeitet
-
Thread
C Construct an unnamed object in-place?
In C gar nicht, aber in C++ schon:: [c]child* cp = new child { 1, 2, 3};[/c] Danach muss man die Instanz wieder mit "delete" löschen. Besser geht das mit std::unique_ptr: [c]auto cp = std::make_unique
Der Compiler meckert nicht! [c] #include <stdint.h> struct inRAM{ int16_t variable; const struct inFLASH __flash * ptr; }; struct inFLASH{ const int16_t constant; const char __flash * string; }; struct
-
Thread
Suche uC Programmierer
Hallo, ich suche einen uC Programmierer welcher mir über dieses Wochenende, ein kleines Projekt erstellen kann. Es handelt sich hierbei um nichts schwieriges. Die grobe Funktionsweise besteht darin, das ein uC über eine PS2
Lass mich mal zusammenfassen: - Einlesen eines Barcode-Scanners (String) vom PS2 - Zuordnen des Strings zu einer Nummer - Auf PC entsprechend der Zuordnung Aktion ausführen Wieso schließt du den Barcodescanner nicht direkt an den PC an und machst die Zuordnung in
-
Thread
Eingänge am ADC wechseln
LCD ausgeben char BufferT[20]; itoa( temperature, BufferT, 10 ); lcd_clear(); lcd_string("Innentemp.: "); lcd_string(BufferT); lcd_string("C"); //Spannung auf dem LCD ausgeben char BufferV[20]; itoa( spannungsmessung, BufferV, 10 ); lcd_setcursor(0,2); lcd_string
* 5 / 255 ); lcd_setcursor( 0, 2 ); lcd_string( Buffer ); } } [/C] ist dir das zu einfach, oder was?
-
Thread
AVR: fprintf_P String im Progmem
Walter T. schrieb im Beitrag #4447437: > Allerdings gilt der Aufruf [c]printf(string);[/c] > heutzutage als schlechter Stil, da für zahlreiche Sicherheitslücken > verantwortlich. Stattdessen ist [c]printf("%s",string);[/c] > empfohlen. Bitte was? Wo hast du das denn
ein harmloses %s auswerten. In [c]printf (string);[/c] muss sie einen möglicherweise langen komplizierten string auswerten und nach "%" suchen, auch wenn gar keine drin sind.
-
Thread
Client Server Programm
> Wie soll man da Beispielcode geben? Da hast du vollkommen Recht :-) embedded Modul: TMS320C2000 Controller: F28035 Programmiersprache: C
continue; static SerialPort^ _serialPort; public: static void Main() { String^ name; String^ message; StringComparer^ stringComparer = StringComparer::OrdinalIgnoreCase; Thread^ readThread = gcnew Thread(gcnew ThreadStart(PortChat::Read));
-
Thread
const prog_char in AVR Studio 6.2
Pointer-Tabelle auf die Strings auf diese Art: [c] PGM_P string_table[] PROGMEM = { string_1, string_2, string_3, string_4, string_5 }; [/c] Wobei das Maktro PGM_P eine Ersatzschreibweise für "const char *" ist.
string+i); } } [/c] Aufrufmöglichkeit für entweder den PROGMEM-String direkt, mit Casten des String-Pointers zu einem int: [c] printOnLcd((int)string_2); [/c] Oder über den Index in der String-Tabelle