-
Thread
serielle datenübertragung pc <> AVR
s[1]=(n&0x0F)+48; s[2]=0; //String mit 0 abschließen } [/c] Allerdings komme ich im moment nicht an die Harware ran. Ich habe noch nie mit Strings als "Rückgabewert" in Funktionen gearbeitet, von daher kann das hier auch großer
irgendwann mal auf die Frage, was das soll: [c] if ((n>>4)>9) s[0]=(n>>4)+'7'; else s[0]=(n>>4)+'0'; [/c] > Ich habe noch nie mit Strings als "Rückgabewert" in Funktionen > gearbeitet Hier wird gar nichts zurückgegeben, da steht
-
Thread
C Teile einer Struktur im Flash (const __flash)
nicht als const __flash deklarieren. Als member schon? Aber die Initialisierung mag er nicht... [c] struct inRAM{ int16_t variable; const struct inFLASH __flash * ptr; }; struct inFLASH{ const int16_t constant; const char * string; }; struct inRAM array[] = { {123
nett und verrate doch, was der Fehler ist. Mit Pointer auf separates Arrayelement geht es: [c] #include <stdint.h> struct inRAM{ int16_t variable; const struct inFLASH __flash * ptr; }; struct inFLASH{ const int16_t constant; const char __flash * string; }; const
-
Thread
C# Datagrid
Hi, ich möchte in C# das Datagrid verwenden ohne das ich eine Datenbank verwende. WIe funktioniert das? Ich hab schon in einigen Foren gesucht. In Borland Builder C++ ist das mit StringGrid kein Problem.
einfaches beispiel gibt. Ich weiss nicht wie man Daten in ein DataGrid einfügen kann. Das ist in C# echt dumm gemacht.
-
Thread
Arduino Sleepmode mit DS3231
); if (myFile) { Serial.println("DATA.CSV:"); String str = String(RTC.get()) + "," + String(RTC.get()) + "," + String(Temperatur_C); Serial.println(str); myFile.println(str); myFile.close(); //digitalWrite(
) { Serial.println("DATA.CSV:"); String str = String(RTC.get()) + "," + String(RTC.get()) + "," + String(Temperatur_C); Serial.println(str); myFile.println(str); myFile.close(); //digitalWrite(1, LOW); }
-
Thread
Taschenrechner Selbstbau: Programmstrukturfrage
Einen einfaches Progrämmchen zur Auswertung eines als String gegebenen arithmetischen Ausdrucks in C-Syntax habe ich hier gepostet: https://www.mikrocontroller.net/topic/49925#847879 Ein klassischer Taschenrechner liest allerdings nicht den kompletten
Yalu X. schrieb im Beitrag #4545148: > Einen einfaches Progrämmchen zur Auswertung eines als String gegebenen > arithmetischen Ausdrucks in C-Syntax habe ich hier gepostet: > > Beitrag "Re: Weis jemand, wie man mathematische Ausdrücke in C++ > auswert" > Ein klassischer Taschenrechner
-
Thread
C# - Aus Thread eine Funktion ausrufen
Callback in den Formularthread kann man ganz gemütlich mit ein paar Zeilen Code abfrühstücken. [c] // muss der Eventnotation entsprechen private delegate void EventCallbackDelegate(string value) private void EventCallbackExecute(string value) { // hier das eigentliche Doing } private void EventCallback(string value) { if (InvokeRequired) { Invoke(new EventCallbackDelegate(EventCallbackExecute), value); return; } EventCallbackExecute(value) } [/c] Registriert wird die Funktion
-
Thread
Float in String umwandeln
des Atmega32 ausgegeben werden soll. Um den Wert ausgeben zu können, muss ich ihn aber in einen String umwandeln. Ich habe es jetzt wie folgt versucht: [c] char buffer[32]; float Prozentwert; int Schalt_gesamt; int Schalt_falsch; Prozentwert=((Schalt_gesamt-Schalt_falsch)/Schalt_gesamt)*
[c]Prozentwert=((Schalt_gesamt-Schalt_falsch)/Schalt_gesamt)*100;[/c] Ist schonmal falsch, da bekommst du einen Integer raus der dann nur noch zum Float gewandelt wird (ohne Nachkommastellen). [c]
-
Thread
Visual C++ 2010 Express mit FileHandle Gesperrt
skorpionx schrieb im Beitrag #5323664: > Ich will nur die Datei öffnen So geht das in Standard-C++: [c]std::ifstream is ("datei.txt"); std::string data; is >> data;[/c]
; if ( result == DialogResult::OK ) { fileStream = SaveFileDialog1->OpenFile();[/c] und .NET vollständig verwenden und die Standard C++ Klassen weglassen. Oder den String direkt an die System.IO.FileStream Klasse übergeben. ToCharArray() ist dann in jedem Fall unnötig.
-
Thread
LED von VB-Programm aus dimmen
msdn.microsoft.com/de-de/library/system.io.ports.serialport.write(v=vs.110).aspx Nur eine davon, kann IMHO für [c] SerialPort1.Write(HScrollBar3.Value) [/c] benutzt werden, und das muss nun mal die STring-Version sein, denn die restlichen beiden passen von der Anzahl der Argumente her nicht. D.h. dein
nicht klarkommst, dann hättest du einfach den Code auf der µC-Seite entsprechend anpassen müssen. C kannst du ja angeblich. Ich allerdings würde das ganz ernsthaft bezweifeln...
-
Thread
Zeiger auf Strings
Zeichen offenbar erst ins RAM wo sie Platz verbrauchen. Das erscheint mir verschwenderisch, da die Strings ja schon im Programmspeicher stehen. Wie kann man das verhindern? [c] void writeString(char *data); int main(void) { writeString("Hallo"); writeString("hier"); writeString("Tasten
("Hallo")); writeString_p(PSTR("hier")); writeString_p(PSTR("Tasten")); } [/c]
-
Thread
Einrückung in Python Gesperrt
more code ... [/c]
oder Strings. Siehe den Underhanded C Contest als Beispiel ;)
-
Thread
C/C++: USB-Geräte suchen und auflisten
kleines Beispiel für dein Problem: https://git.libusb.org/?p=libusb.git;a=blob;f=examples/listdevs.c;h=6ab891725a36424a7f59d5a8ff2c20a7deaec858;hb=7634714aa696175b08016b6f2185a75a2f55a113;js=1
Seriennummer " << cur_dev->serial_number<< endl; cout << " Hersteller: " << cur_dev->manufacturer_string << endl << " Produkt: " << cur_dev->product_string << endl; cur_dev = cur_dev->next; } hid_free_enumeration(devs); hid_device* usb_device; hid_init(); usb_device
-
Thread
Abfrage ob ein String vom UART empfangen wird
drangehängt. Wenn sich dadurch eine komplette Eingabezeile ergibt -> super, den jetzt kompletten String verarbeiten. Wenn nicht, gehts weiter in der Hauptschleife. [C] char receivedString[80]; uint8_t receivedStringLen; .... int main() { int c; .... receivedStringLen = 0; receivedString[0] = '\0'; while( 1 ) { c = uart_getc(); if ( !( c & UART_NO_DATA ) ) { // die UART hat was empfangen if( c == '\n' ) { // mach was mit dem jetzt kompletten String
-
Thread
Arduino Bit Shifting Problem
Hallo liebe Freunde habe kein kleines Problem möchte gerne einen String den ich ausgelesen habe folgendermaßen verändern [code]Quell String 80482780C1 80 48 27 80 C1 10000000 10010000 00100111 10000000 11000001 Ziel String 0112E40183 01
const int LCDRow = 4; #define LCD_COLS 20 #define LCD_ROWS 4 #define HD44780_LCDOBJECT String HITAG1 = "h"; String HITAG2 = "H"; String EM4102 = "U"; String EM4150 = "T"; String ver; String id; String lastscan; String idshort; String MTid; void setup() {
-
Thread
Problem mit Variable in C
conversion from 'const char*' to 'char' Du willst eine Variable (Time) mit einer Zeichenkette (String) vergleichen. Das geht nicht! Eher so: [c] static uint8_t Lock = 0; ... ... if ((tm.Hour == 12) && (tm.Minute == 0) && (tm.Second == 0) && !Lock)){ Lock = 1; mach etwas nur einmal; }else if (tm.Second != 0){ Lock = 0; } [/c] So müsste es besser gehen
-
Thread
Suche Erklärung für C++ Code
in C, sondern lediglich in GNU-C. Dafür zunächst mal ein Beispiel für lokale Funktionen in GNU-C: [c] #include <stdio.h> void run (void (*f)(void)) { f (); } int main (int argc, char *argv
Elementinitialisierung angeben). S. auch folgendes Beispiel aus dem oben verlinkten Artikel: [c] std::vector<std::string> strings{2}; // A vector of two empty strings. std::vector<int> ints{2}; // A vector containing only the integer 2. [/c] Beide Vektoren werden syntaktisch exakt
-
Thread
c: Wie multiple return-Statements vermeiden?
->CR1, I2C_CR1_PE); SET_BIT(registerStruct->CR1, I2C_CR1_PE); //ITM_SendString("I2C bus error!\n"); return receive_count; } [/c] Ich glaube das ist das einzige Szenario, in dem ich außerhalb
func2(int a, float b, std::string c) { std::cout << "func2(" << a << ", " << b << ", " << c << ")\n"; return { 0 }; } result_type func3(int a, float b, std::string c) { std::cout << "func3(" << a << ", " << b << ", " <<
-
Thread
[C#] Serialport Daten auslesen
Recive_Value += Recive_hb; string s1 = Recive_lb.ToString("X"); string s2 = Recive_hb.ToString("X"); string s3 = Recive_Value.ToString("X"); string s4 = Recive_Value.ToString("D");
( b ); } } [/c]
-
Thread
SD-Card (FAT32), Datei auslesen an bestimmter Stelle?
() ) != '\n' ) sd_card_string[n++] = c; sd_card_string[n] = '\0'; [/C] Jetzt würds mich aber doch interessieren, wozu man auf einem µC die n-te Zeile aus einem Textfile braucht.
) { while( ffread() != '\n' ); } // Phase 2 n = 0; while( ( get_c = ffread() ) != '\n' ) sd_card_string[n++] = get_c; sd_card_string[n] = '\0'; WDH3224_TEXT(20,0,sd_card_string,1,0); rs232_text(sd_card_string); rs232_text
-
Thread
Text in Variable??
Wenn du c kannst, Assembler aber nicht, dann mach es doch in c. Ansonsten http://www.avr-asm-tutorial.net/avr_de/index.html Oliver
cpi temp1, 0 ; Endezeichen (0) erreicht? breq lcd_flash_string_2 ; JA, dann Sprung zu ; lcd_flash_string_2 call lcd_data ; (NEIN), dann Zeichen ausgeben rjmp lcd_flash_string
-
Thread
STM32F103C8T6 mit Arduino Serial funktioniert nicht
_SendString("First String\n"); } } [/code] Ich kann nur Daten bei USART1 empfangen
Fehlt nur noch der Code für I2C und SPI...
-
Thread
STK 500 LED'S über UART
t i; int zahl; // int test=5; char c; char* s; char string[length+1]; while(1) { zahl=atoi (string); if (zahl==4) { PORTB &= ~(1<<PB4); } s=string; i=0; do { c=uart_getc();
Mal ne blöde Zwischenfrage: Wozu sammelst du die Zeichen in einem String? Warum nicht einfach so [C] while( 1 ) { c = uart_getc(); if( c >= '0' && c <= '7' ) { c = c - '0'; // aus dem ASCII Code die Ziffer machen PORTB = 0xFF;
-
Thread
Xtes Wort aus AnsiString auslesen
Karl Heinz Buchegger schrieb im Beitrag #2948323: > Wer oder was ist ein AnsiString? Das ist der String-Datentyp von Borlands C++ Compilern. > Oder meinst du einen C-String. Also einen den C Konventionen nach > formatierten String, mit einem \0 Zeichen am Ende, welcher zb in einem > Array haust? Der AnsiString ist kein C-String, die Klasse enthält aber eine Methode c_str() zur Konvertierung. Man kann also die Verarbeitung auch wie in C vornehmen.
-
Thread
Python: Gleichlautende Anfänge von Zeichenketten
if len(s2) < len(s1): s1, s2 = s2, s1 i = 0; for c1, c2 in zip(s1, s2): i += 1 if c1 != c2: return i """ Aus einer Liste von Strings diese derart am Ende kürzen, dass die Anfangs-Zeichenketten gerade noch unterscheidbar
if len(s2) < len(s1): s1, s2 = s2, s1 i = 0; for c1, c2 in zip(s1, s2): i += 1 if c1 != c2: return i return len(s1)+1 """ Aus einer Liste von Strings diese derart am Ende kürzen, dass die Anfangs-Zeichenketten
-
Thread
Wo gibt es günstige USB-Dongle(Kopierschutz)
int main() { //AA B0 C3 8A string msg; msg = "B0"; int i; msg = "AA" + msg; i=0; for(i=0; i<5; i++); msg += "C3"; string hard = "Didn't get that.";
cout << endl << msg << endl; return 0; } --> g++ -s [...] .LC0: .string "B0" .LC1: .string "AA" .LC2: .string "C3" .LC3: .string "Didn't get that." .LC4: .string "8A" .text .align 2 [...] --> $ ./a.out AAB0C38A
-
Thread
C# Zahl(double) aus String parsen
hallo, ich habe folgende funktion in c++ verwendet um aus einem relativ großem String, nach dem jeweiligem Schlüsselwort, die benötigte Zahl zu parsen. Leider gibt habe ich in C# keine funktion ähnlich der von "strtod" gefunden. Hat jemand einen ersatz für diese Funktion oder wie macht man das in C#. Ich habe die Start Position der Nummer im String und benötige dann die Endposition zurück. [c] bool read_double(string line, int* char_counter, double* double_ptr) { // pointer
-
Thread
i2c Übertragung fehlerhaft. (falsche Codierung )
Sind das nicht String und keine Zahlen? Ein String, zufällig nur Ziffern und ein Komma enthält?
DAVID -. schrieb im Beitrag #4881176: > die ersten zahlen werden ja auch MIT Komma übertragen [c] Wire.write("123,45678910 "); [/c] Das ist keine Zahl, das ist ein String. DAVID -. schrieb im Beitrag #4881176: > wenn ich zum senden aber > Wire.write((byte)(Speichersenden)); > nutze wird
-
Thread
Commando aus String suchen..
Jan H. schrieb im Beitrag #5150979: > Suchen diese Funktionen auch mitten im String? Ja. schau mal hier: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/011_c_arrays_013.htm
Ich nehme gerne folgendes: [c] #include <string.h> char *RX UART_RX_Buffer[0]; if(strstr(RX, "set") != NULL){ //da seht set im RX: Kommando set ausführen } [/c] Must halt stat "set" einen pointer auf ein Element in
-
Thread
string speichern
uart_gets( char* SDBuffer, int BufferLen ) { int i = 0; char c; while( ( c = uart_getchar() ) != '$' && i < BufferLen - 1 ) SDBuffer[ i++ ] = c; SDBuffer[i] = '\0'; } mfg kay
' eingetragen. Nur weil das für dich Ziffern sind, haben die erst mal keinerlei Sonderbedeutung. String ist String. Und ein String (also ein Text) kann selbstverständlich komplett aus Ziffern bestehen, also zb "13092011" Die weiterführende Frage lautet dann: wie kann man aus deinem String, der eine
-
Thread
Hilfe beim Code für den Tiny84 (C++)
[c] const char* inData; //... inData += (char) radio.Data[i]; [/c] Das funktioniert so nicht. Lest Euch mal in Strings in C ein. Ein char-Pointer funktioniert nicht so einfach wie ein String in zivilisierten
\0'; // nötig, sofern das Nullzeichnen nicht in der empfangenen Zeichenkette schon vorkommt [/c] MAX_LENGTH sollte dabei die maximal zu erwartende Länge des Strings + 1 sein. Strings werden in C mit 0 terminiert. Die strlen()-Funktion sucht das Nullzeichen um das Ende des Strings zu finden und
-
Thread
Telit GM862-Quad Problem
ich dann beim Empfangen auch eine LED anschalte, empfängt er ein Byte und bleibt dann bei... [c]while(RI != 1);[/c] ...hängen. Scheinbar wird nur ein Byte empfangen und dann bleibt der Empfangsbuffer leer. Sende- und Empfangsfunktion sehen nun so aus: [c] // SEND STRING TO UART-------------
nicht weitergeholfen. Nach dem ersten Byte ist schluss. Hier ist nochmal die Funktion "receiveString()": [c]// RECEIVE STRING FROM UART------------------------------------------------------------------------ void receiveString(unsigned char *string) { unsigned int i = 0; while(SBUF != 13)
-
Thread
Pascal für Betriebssysteme
als normalen String in C darzustellen. Das liegt aber eben daran, dass es in C eben keinen richtigen String-Typ gibt, sondern nur die Krücke mit char-Zeigern und char-Arrays. Gleiches gilt aber auch für das Zusammenfügen
als normalen String in C > darzustellen. Nimm einfach mikroPascal PRO von MikroElektronika, das verwendet ausschließlich nullterminierte Strings und ist auch sonst sehr stark an C angelehnt. Wahrscheinlich kann
-
Thread
Probleme mit den bekanntmachen von Funktionen in Header bei C++
Variablen in einer Funktion aus maincpp.cpp. In der Datei habe ich die Datei Parser.hpp includiert. [c] Parser::contentXml = nullptr; Parser::contentXml_Load = 0; Parser::BytePtr = nullptr; Parser::StringPtr = nullptr; Parser::StringLen = 0; Parser::MemByte = 0; Parser::StmLoop = nullptr; Parser
das musst du in C++ auch tun.
-
Thread
Nicht byte-weise Protokolle in C - Wie am besten vorgehen?
zu enormem overhead führen. Sagen wir, z.B. meine Token wären in so einer Struktur gespeichert: [c] struct hlex_string { size_t length; // Note: not null terminated const uint8_t* data; }; struct hlex_token { const struct hlex_token_type* token; const char* label; // Most of the time probably null struct hlex_string content; // points inside hlex_root::mmap size_t child_count; const struct hlex_token* children; const struct hlex_token* parent; }; [/c] Dann wären das rund 56 Bytes pro Token. So kann
-
Thread
Brauche Hilfe=)
zurückgekommen. Folglich ist die Hardware und der Aufbau des Max232 richtig. Also liegt es nur am µC-Programm. Könnte mir nicht bitte einer von euch einen Quellcode in C posten, der via Rxd am µC einen String einliest und ihn dann via TxD wieder zurück zum Max232 bzw. zum PC sendet? Ich schreibe meinen String im Terminalprogramm mit com.Open(); com.WriteLine("String"); und lese ihn mit com.ReadLine(); com.Close(); in eine Variable ein. Folglich muss der µC solange Zeichen aus dem Ringbuffer
-
Thread
strlen-Funktion Funktionsweise
Es wird beginnend vom String-Anfang gesucht, s wird auf die Anfangsadresse des Strings gesetzt: [c] s = str [/c] Es wird so lange gesucht, so lange sich an der Position auf die s aktuell zeigt etwas ungleich 0 befindet:
dem String-Anfang str ergibt die String-Länge: [c] s - str [/c]
-
Thread
"Universalprogrammer" für Linux
könnte man jetzt mit dem im vorherigen Post genannten FT_PROG z.B. auf uprog2 ändern und den String entsprechend vergleichen. Ein so gefundenes Device dev könnte man dann statt mit [c] int ftdi_usb_open (struct ftdi_context *ftdi, int vendor, int product) [/c] mit folgender Funktion
ftdi_usb_open_bus_addr (struct ftdi_context *ftdi, uint8_t bus, uint8_t addr) int ftdi_usb_open_string (struct ftdi_context *ftdi, const char *description) [/c] Man müsste sich dann nur noch auf einen Device-Namen für den uprog einigen, oder diesen per define oder Kommandozeilenparameter konfigurierbar
-
Thread
String auf Ziffern Prüfen
i<strlen(s); i++) du musst aber nicht in jedem Schleifendurchlauf strlen erneut aufrufen. Dein String verändert sich ja in der Schleife nicht. D.h. es reicht einmalig die Länge festzustellen. [C] int enthaelt_ziffern( const char* str ) { .... } int main(void) { char s[80] = "abcd12345
, sind da gleich mehrere Fehler drin): [c] if(str[i] > '0' || str[i] < '9') [/c]
-
Thread
ADC Wert ungenau
); uart_puts(String2); uart_puts(String3); uart_puts(String4); //USART_Transmit(S); _delay_ms(100); } }
ist ganz einfach... Du machst einfach aus [c] sprintf(String1,"LDR1: %i g \n", ADCWert1); [/c] [c] sprintf(String1,"LDR1: %f g \n", ADCWert1*1.0); [/c] und schon hast du deine Gleitkommazahlen.
-
Thread
Problem mit if-Anweisung im USART-Receive-Interrupt AtMega128
Dein Problem liegt aber grundlegend woanders. Denn sowas macht man nicht in einem Interrupt: [c] if(strcmp(buffer, "Pause")==0) : USART_Transmit_String("pausiert"); [/c] Solche Verwaltungsaufgaben macht man in der Main-Loop. Interruptroutinen sind prinzipiell kurz und knackig
Dein Problem liegt aber grundlegend woanders. Denn sowas macht man nicht > in einem Interrupt: > [c] > if(strcmp(buffer, "Pause")==0) > : > USART_Transmit_String("pausiert"); > [/c] > Solche Verwaltungsaufgaben macht man in der Main-Loop. Interruptroutinen > sind prinzipiell kurz
-
Thread
Richtiges C++ hardwarenah
Naja, wenn man man C++ so verwendet wie es einem in den Lehrbüchern nahe gebracht wird, dann ist da immer dynamisches Speicherhandling dabei. Fast die gesamte std::-Lib egal ob Strings, Listen, vectoren... kommen ohne nicht
temp schrieb im Beitrag #3896107: > Naja, wenn man man C++ so verwendet wie es einem in den Lehrbüchern nahe > gebracht wird, dann ist da immer dynamisches Speicherhandling dabei. > Fast die gesamte std::-Lib egal ob Strings, Listen, vectoren... kommen
-
Thread
Frage zu Arrays
Wo beginnt und wo endet in [C] echo "Der User mit der ID $user[46]["id"] heißt $user[46]["name"]. Seine Emailadresse ist $user[46]["email"]"; [/C] der String. (Hinweis: Das Syntaxcoloring hier im Forum zeigt dir das sogar recht deutlich) Ein String geht vom öffnenden " bis zum nächsten ", welches den String wieder schliesst. Du hast hier also [C] echo "Der User mit der ID $user[46][" id "] heißt $user[46] ... [/C] Der String
-
Thread
C++ cout umleiten
" und ".\n" jeweils xsputn aufgerufen. Nur für die Variable name (vom Type string in C++) nicht. Weiß jemand, woran es liegen kann, dass Literale richtig verarbeitet werden und Strings (c++ Klasse string) als Variable keinen Aufruf von xsputn erzeugen? Auch wenn ich int, long,
ist es immer noch nicht das Gelbe vom Ei. Um in die Standardausgabe zu schreiben gibt es unter C++/CLI folgende Möglichkeiten: 1. printf(...) // C Variante 2. cout << ... // C++ Variante 3. Console::WriteLine(...) // C++/CLI Variante Bisher funktioniert keine