[syntax=c]char j[20]; fscanf(wxf2, "%s", j);[/syntax] Ale gdzie tu jakaś konwersja?
Jak widać nie jest. Tak się akurat składa, że program akurat jest dobrze napisany tylko API do tego WiFi jest lewe. Pewnie napisał go jakis przeciwnik const. A prosta rada: wyrzuć "const" Ta prosta porada nie zadziała. Błąd kompilacji pojawi się w innym miejscu. Rozwiązaniem jest: 1. Rzutowanie przy wywołaniu WiFi.begin 2. Zadeklarowanie ssid oraz...
Raczej nie chodzi Ci o fopen, tylko o obiekt klasy std::ifstream. Na przykład: #include <fstream> #include <iostream> #include <string> int main() { const std::string fname = "./file.cc"; std::ifstream file(fname.c_str()); std::string line; while (getline(file,...
Oj! Rzeczywiście, przecież tablica cmds też była PROGMEM , a nie była właściwie odczytywana (a palnąłem, że „powinno działać” :oops: ). pytanie więc brzmi czy cmd? znajdują się w RAMie czy też w pamięci programu. Tylko w pamięci programu. Ciekawe dlaczego to składowanie tablicy w pamięci programu nie działa właściwie. Może chodzi o to, że...
15 to za mało, powinno być 16 żeby null-terminator się zmieścił. PS Przy liczniku > 9999 i tak się popsuje.
[syntax=c]__flash const char txt[] = {"JAKIS NAPIS"}; void LCD_Char(char data) { //funkcja wyświetlająca znak "data" } void LCD_Str(const char * text) { uint16_t i=0; while(text[i]) LCD_Char(text[i++]); } int main() { LCD_Str(txt); }[/syntax]
Mam jeszcze jedno pytanie, jak przekonwertować string na "const char * ", ponieważ potrzebuję użyć const char *, a nie string. [syntax=c]String s; const char * tekst = s.c_str().[/syntax] https://www.arduino.cc/reference/en/lang...
Witam, zajrzałem do tej biblioteki do pliku "src/Graphics/Graphics.h". Funkcja print(const char c) nie uwzględnia drukowania nowej linii, tak jak to robi print(const char *str). Twój przykład drukuje wszystkie znaki z odebranego tekstu w jednym miejscu (vga.setCursor) jeden na drugim, a na samym końcu drukuje \n, bez przeniesienia do nowej linii. Pozdrawiam....
[syntax=cpp]Pracownik::Pracownik(const char* imie, const char* nazwisko, const Data data_ur) { strcpy(Pracownik::pszImie,imie); }[/syntax] Sprawdź ;)
Spróbuj tego kodu: [syntax=c]#include "U8glib.h" #include <SPI.h> #include <Wire.h> #include "max6675.h" U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // I2C int currentTemp = 0; String thisTemp = ""; int maxTemp = 0; // maximum temperature reached int minTemp = 0; // minimum temperature reached int pad = 0; int thermoDO = 8; int thermoCS...
A czemu nie sprawdzasz ile znaków oczekuje w buforze Serial (wartość zwracana przez available ())? Na tej podstawie możesz od razu "przeprocesowac" tyle znaków, ile zostało faktycznie odebranych - delay (100) w pętli mocno przyczynia się do tego, że tych oczekujących znaków będzie więcej niż jeden. dodatkowo przy kompilacji pojawia się ostrzerzenie...
Wpisałem w google "cannot convert parameter * from 'const char *' to 'LPCWSTR' " i popatrz, co na pierwszym miejscu stało: http://bytes.com/topic/c/answers/829588-...
Należy pamiętać, że w nowszych wersjach avr-libc nie należy używać PROGMEM do deklaracji typu: Typedef Documentation prog_char Note: DEPRECATED This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this...
[syntax=c]#define checkResponse(source,s) !strstr((const char*)(source),(s))[/syntax]
Chodziło mi o wykorzystanie tej funkcji tylko do znalezienia znaków ? i & . Przeanalizuj gotowca: [syntax=c]char strStartsWith(const char* s, const char* startsWith) { for (;;) { if (*startsWith == '\0') return 1; if (*s != *startsWith) return 0; ++s; ++startsWith; } } char getChrVal(const char* const s, const char* const key, char& variable) { if...
OK jeśli nie chce ci się tego zrobic w sposób reczny "przeleć po wszystkim", tylko tak jak ty to sobie wymiśliłeś to poczytaj o funkcji: [syntax=c]char * strpbrk ( const char *, const char * ); >[/syntax] ktora znajduje się w <cstring> poprawiłem styl mojej wypowiedzi, bo 5x przeczytałem swoją pierwszą odpowiedz i nic z niej niz zrozumiałem.
a probowales tak T1 = atoi( (const char*)test ); ?
Serial to jakieś 30% całości. W tym momencie program jest za duży o jakieś 7% (~300 bajtów). Do tego celu używam kona arduino Blue pro micro ( odczytywane przez kompilator jako leonardo ). Problem w tym, że to nie koniec rozbudowy programy, a jedynie początek Czyli wstępnie, jak już nadmieniono, sprzęt za słaby do zadania. Ale możesz się pobawić np...
Napisałem Ci, co źle robisz: int * dla stringów-NIE const char * Niestety nie mogę sobie poradzić z utworzeniem kolejnej tablicy dlaczego? Co stoi na przeszkodzie?
Masz zły typ, powinieneś mieć const char*, możesz też rzucić std::runtime_error i łapać std::exeption
Zajrzałeś do [url=http://www.nongnu.org/avr-libc/user... Pewnie nie. Masz tam przykłady odczytu danych z pamięci flash, np: [syntax=c] byte = pgm_read_byte(&(mydata[i][j])); [/syntax] Więc powinno wystarczyć coś takiego: [syntax=c] char str1[] PROGMEM = "String 1"; char str2[] PROGMEM = "String 2"; struct{ uint8_t a; const...
Nie używam Keila ale coś takiego powinno wystarczyć [syntax=c]const unsigned char tablica[] = {dane}; const unsigned char *pointer pointer = tablica;[/syntax]
[syntax=c]const char *str=s.c_str();[/syntax] lub: [syntax=c]char *str=&s[0];[/syntax]
Zamiast "client.print("kod html");" użyj "client.print(PSTR("kod html"));" To jest dla starego kompilatora, ale jeśli twój program daje się łatwo skompilować, to pewnie taki właśnie masz. W pliku "ETHER_28j60.h": [syntax=c] void print(const char* text); //dodajesz tą linię między "void print(char* text);" i "void print(int value);" [/syntax] W pliku...
Liczba: 8002930403 ma 10 cyfr, wiec raczej będziesz potrzebował bufora znaków (char *) o długości o jeden większego, by na ostatnim miejscu umieścić 0. Jednak liczba 20 000 000 000 ma 11 cyfr, więc buffor możesz odrazy zrobić na 12 znaków. Następnie możliwe że tracisz dokładność w wyniku działania tych trzech operacji: (12000000000/4095)*data.ctrl....
Zmien const char* na PGM_P jak kolega Zumek napisal i po kłopocie. Wtedy przezucisz te zmienne z RAMu do Flasha.
Jaką masz wersje biblioteki ESP Async WebServer, AsyncTCP ? Być może masz niekompatybilne ze sobą wersje. Ja obecnie używam ESP Async 3.6.0, AsyncTCP 3.3.2 Próbowałeś zmienić plik h: [syntax=c]int code, const char* contentType = asyncsrv::empty, const char* content = asyncsrv::emp na int code, const char* contentType = "", const char* content = ""[/syntax]...
warning: braces around scalar initializer czy na pewno kompilujesz kompilatorem C a nie C++? Już wiem co zrobiłeś, dałeś : zamiast : const char *pantname
[syntax=c] int i; int suma_af = 0; const unsigned char * p = (const unsigned char *)&data for (i = 0; i < sizeof(my_type)l i++) { suma_af += p[i]; } [/syntax] Zakładam, że struktura jest upakowna ;)
Już Ci (at)BlueDraco napisał w czym jest problem [syntax=c]USART_Transmit_String_P((const char *)pgm_read_word(&dni[idx]));[/syntax]
Sądzę, że powinno być tak:[syntax=c] static const char *my_message_str_tab[] = { "E memory allocation error",//MY_MESS_MEM_ALOC_ERROR "W nastepny komunikat", //MY_MESS_COS_TAM_WARN "W kolejny" //MY_MESS_KOMUNIK_AAAA };[/syntax]
Zakomentowałeś atrybut PROGMEM, więc nie ma prawa działać: static const char /*PROGMEM*/ font5x8[] = {
Raczej: [syntax=cpp]const char* tablica = "costam";[/syntax]W C++ string literals ("costam") są typu const char[n], a próba ich modyfikacji (np przez wskaźnik do nich) wykopie nas do świata niezdefiniowanego zachowania, nie mówiąc już o tym, że na nowszych kompilatorach nareszcie dostaje się przynajmniej ostrzeżenie za taki kod, więc... Po prostu dodaj...
Coś na kształt: [syntax=cpp]void Send_Text(const char *text) { const char *ptr; uint32_t row,m,p; uint8_t y,i; for(y=1;y;y<<=1) { row=0; m=1; for(ptr=text;*ptr;++ptr,m<<=1) { p=5*(*ptr-' '); for(i=0;i<5;++i,m<<=1) { if(font5x8[p+i]&y) row|=m; } } Send_Napis((uint8_t*)&row,4); } }[/syntax]
W indekserze tego nie zmienisz chyba. te przypisana są właśnie po to aby nie było warningów "unused variable". ale przecież tego warningu gcc Ci chyba nie generuje przy kompilacji Ja w gcc (bo praktycznie tylko gcc używam robię tak w przypadku funkcji, które bedę pisac w przyszłości. [syntax=c]#define unused __attribute__((unused)) int _execve_r(struct...
const char array Dodano po 51 'const' spowoduje moim zdaniem umieszczenie tablicy we flashu.
Deklaracja jest jak najbardziej poprawna, można jednak dodać deklarację const: const char *titles[] = {... O sekcjach można pisać doktoraty, ich ilość i zawartość może się różnić w zależności od kompilatora i środowiska uruchomieniowego. Napisy prawie zawsze są umieszczane w sekcji kodu lub stałych. Tablica powinna być w tej samej sekcji,...
Bezpieczniej i lepiej wg mnie w takich sytuacjach zamiast: [syntax=c] static char *hello = "Witaj Swiecie!"; static char *msg = "PUTCHAR Napis: ";[/syntax] używać: [syntax=c] static const char hello[] = "Witaj Swiecie!"; static const char msg[] = "PUTCHAR Napis: ";[/syntax] 1. I tak nie manipulujesz potem tymi wskaźnikami na string więc po co one są?...
Rozwiązanie to działa świetnie przy maksymalnie 2 komendach, W kodzie jest błąd. A to że czasem działa wynika najprawdopodobniej z optymalizacji. Zobacz co się stanie jak skompilujesz z opcjami -O0 Można tak: [syntax=c] // wskazniki z umieszczeniem w pamieci FLASH ;) const char * const cmds[] PROGMEM = {cmd_ledon, cmd_ledoff }; ///... //w funkcji TranslateCommand()...
1. Dlaczego po prostu nie napiszesz: [syntax=cpp]char z[] = {60, 60, 3, 60, static_cast<char>(value), 0};[/syntax] 2. Część implementacji interpretuje bajt 0 jako \0 czyli koniec stringa. Prawdopodobnie tak jest w twoim przypadku, gdyż port->write nie przyjmuje długości tablicy którą chcesz wysłać. Napisz co to jest "port", z jakiej biblioteki...
Zmień [syntax=arduino] const char s_cmdPowerOff[] PROGMEM = "PWRON"; const char s_cmdPowerOffDesc[] PROGMEM = "Powers on the device in the programming socket" [/syntax] na to: [syntax=arduino] const char s_cmdPowerOn[] PROGMEM = "PWRON"; const char s_cmdPowerOnDesc[] PROGMEM = "Powers on the device in the programming socket" [/syntax]
wydaje mi się że kiedyś miałem podobny problem (coprawda nie na uC ale na PC), udało mi się go zlikwidować dodając '(' czyli u ciebie byłoby const char *(* const lut_address); nie pamiętam już dokłądnie jakie warningi mi wywalało, no ale spróbować zawsze można :) BTW z 'const' zawsze mam problemy :P:P
int strcmp( const char *tab1, const char *tab2 ); if (strcmp<0) { LCD_WriteText("-1"); } if (strcmp==0) { LCD_WriteText(" 0"); } if (strcmp>0) { LCD_WriteText("+1"); } ; Nie tak się tego używa. Zamień na: int wynik= strcmp(tab1,...
#include <stdarg.h> int moje_printf(const char *fmt, ...) { ... // do dostępu do argumentów używamy funkcji z nagłówka stdarg.h }
Jest trochę błędów... Ale jeśli chodzi o "permission denied" to możesz mieć np. ten sam plik otwarty w edytorze, albo ustawiony atrybut read only. Samo dopisanie linijki do pliku jest dużo prostsze: void dopiszLinijke(const char* nazwa, const char* linia) { FILE* plik = fopen(nazwa, "at"); /* otwórz w trybie dopisywania...
[syntax=c]#include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> // Zmienne konfiguracyjne const char* ssid = "nazwa"; const char* password = "haslo"; // Konfiguracje dla pierwszego Sonoffa const char* sonoff1IP = "192.168.5.31"; // Adres IP pierwszego Sonoffa const int sonoff1Channel = 0; // Numer kanału pierwszego Sonoffa const int sonoff1LedPin...
Użyj " zamiast '. Ale to chyba nie rozwiąże problemu tak jakbyś chciał;) Funkcja sprintf załatwi sprawę.
Tak udało się zamieniając definicje w pliku /wiringPi/drcNET.h na /********* struct drcNetStruct { uint32_t pin ; uint32_t cmd ; uint32_t data ; } ; **************/ #ifdef __cplusplus extern "C" { #endif extern int drcSetupNet (const int pinBase, const int numPins, const char *ipAddress, const char *port, const char *password) ; #ifdef __cplusplus }...
To jest pierwsz przymiarka do funkcji która będzie doklejać znaki, jednak w niej jest jakiś błąd którego nie potrafie namierzyć: char *add(const char *lancuch, const char znak) { char *nowy; nowy=(char *)malloc(strlen(lancuch)... strcpy(nowy,lancuch); nowy[strlen(lancuch)]=zn... free(lancuch);...
Tak. Ja robię coś takiego z polskimi znakami. Np 0x82 to jest u mnie małe ć: [syntax=c] /**(at)briefSmall C With Acute*/ #define SC "\x82" const char *text = "Przyklad uzycia litery "SC""; [/syntax]
Zdaje się, że pominąłeś deklarację typu elementu tablicy jako char, czyli są inty. Więc ten napis chyba tam jest, tylko litery będą oddzielone zerami. Spróbuj dodać tam char, np. static const char test[] = {...} Nie było żadnych ostrzeżeń kompilatora w tej linijce? Druga opcja jest taka, że linker wyrzuca tą tablicę ze względu na brak odwołań, ale wtedy...
Nie jestem pewien o co ci chodzi ale podam maly przyklad: char buffer[50]; strcpy(buffer, "abc+defg-hij 123 456"); const char delmiters[] = { 0x20, '+', '-' }; char* token = (char*)strtok( buffer, delmiters ); while (token) { printf("token = %s\n", token); token...
Spróbuj zadeklarować tablicę 7x3, czyli 7 elementów trzy znakowych (do stringów potrzebny jest jeszcze znak null). [syntax=c]const char text_w_rom11[7][3] PROGMEM = {{"Pn"},{"Wt"},{"Sr"},{"Cz"},{"Pt"},{"So...
Używam IAR-a i zdarzyło mi się umieszczać stałe we flashu. Używa się do tego słów __flash lub __farflash. To pierwsze słowo umieszcza stałą w obszarze pierwszych 64kB flash-a (adres <= 0xFFFF), to drugie dalej (adres > 0xFFFF). Różnica jest taka, że dostęp do zmiennej __flash jest nieco szybszy niż __farflash. Aha, w mojej wersji IAR-a (2.28A)...
W jednej funkcji: [syntax=cpp] void test() { char testing[] = " Rzeczywistosc to juz nie to co kiedys. "; cout << testing; }[/syntax] ew. w dwóch: [syntax=cpp] void piszTekst(const char *txt) { cout << txt; } void test() { char testing[] = " Rzeczywistosc to juz nie to co kiedys. "; piszTekst(testing); }[/syntax] Powinno działać.[/code]
Jaki kompilator? Czy dołączyłeś ? #include <string.h> Jeżeli to WinAvr. I tak w ogóle to wskaźnik ma inny typ size_t strlen ( const char * src )
Powinno być: [syntax=c] FTImpl.Cmd_Text(FT_DISPLAYWIDTH/2, FT_DISPLAYHEIGHT/2, 29, FT_OPT_CENTER, inputString.c_str()); [/syntax] Zgodnie z: [syntax=c] FT_GEStatus Cmd_Text(int16_t x, int16_t y, uint8_t font, uint16_t Options, const char *s); [/syntax]
Zobacz to: https://www.elektroda.pl/rtvforum/viewto... - przykład użycia PetitFAT na Atmega32. Może trzeba podmienić "const prog_char" na "const char PROGMEM", u mnie po tym się kompiluje, nie sprawdzałem jak działa. Tak na co dzień korzystam z Arduino, kupuje się moduły, jakoś tam łączy, wgrywa przykład i działa od strzału.
Mogę. void koduj(const char *wd, key_tab *tab) //wd-wyraz { char zs[10]; gn(zs,10); //generuje zamienniki wyrazu tab[lc].w = strdup(wd); tab[lc].z = strdup(zs); lc++; }
Proszę bardzo! [syntax=c] #include <fcntl.h> #include <errno.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <dirent.h> #include <sys/types.h> /*Function dir_elem_number return number of elements in directory "dir_path"*/ int dir_elem_number(const char *dir_path) { DIR *dp; struct dirent...
[syntax=cpp]#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { const char *tab[]= { "ja", "ty", "on", }; srand(time(0)); while(cin.get()!='!') cout<<tab[rand()%(sizeof(tab)/size... return 0; }[/syntax]
W gcc jest makro __AVR_DEVICE_NAME__ (zdefiniowane przez opcję -mmcu): https://gcc.gnu.org/onlinedocs/gcc-6.3.0... [syntax=c]#define STRINGIFY(x) #x #define TOSTRING(x) STRINGIFY(x) __flash const char device[] = TOSTRING(__AVR_DEVICE_NAME__);[/syntax]
ale użyj funkcji strncpy funkcja strncpy jest nezwykle niebezpieczna. Ma jedną przykrą właściwość że nie null terminuje stringu jeżeli max ilość znaków jest mniejsza niż długość stringu. Zakazana w kernelu Linuxa. Tak przy okazji opinia Linusa: https://obrazki.elektroda.pl/7688101300_... Jak chcesz coś bezpiecznego to musisz niestety...
Nie ma to jak wymyślać od nowa standardowe funkcje :) Porównaj z: #include <sstream> int read_int(const char * s) { std::stringstream sbuffer(s); int i; sbuffer >> i; return i; } Obsługę błędów zostawiam zainteresowanemu :) Pozdrawiam, Dr.Vee
Znalazłem bufor o rozmiarze 128 w części autoexec.bat. Zrobiłem szybkie wyszukiwanie :-) plik: src/cmnds/cmd_main.c Linia 940. commandResult_t CMD_ExecuteCommand(const char* s, int cmdFlags) { const char* p; const char* args; char copy[128]; Czy linia w pliku autoexec.bat jest zbyt długa, aby została poprawnie wykonana? Edit: Sprawdziłem ciąg wewnątrz...
Zademonstruję Ci: Nowy projekt w Atollic for STM32: Bez modyfikowania skryptu linkera: https://obrazki.elektroda.pl/4714547300_... A teraz Twoje przezroczyste przypisanie: https://obrazki.elektroda.pl/8906289200_... Dopiero po dodaniu do skryptu linkera: https://obrazki.elektroda.pl/4995382700_...
W nawiązaniu do porad kolegi tmf proponowałbym coś w tym stylu (być może strach przed kwalifikatorem __flash wynika z braku przykładów kodu :?: : [syntax=c] // przykład jak używać kwalifikatora __flash do umieszczania // danych w pamięci programu i jak się do nich odwoływać // kod gotowy do odpalenia w symulatorze Atmel Studio 6 // można zaobserwować...
Witam!!! Potrzebuje skonwertować CStringa do const char w VC++ 2008. Pisząc programy w poprzednich wersjach visuala kopiowałem CStringa do chara funkcją strcpy() i był gnot:-) niestety w VC++ 2008 to nie działa i po 2 godzinach szukania i kombinowania nie bardzo mam pomysł jak to zrobić... Podejrzewam że rozwiązanie nie jest jakieś trudne więc proszę...
Po co komplikować? Jedyne, co jest potrzebne, to: const char PROGMEM dni_tygodnia[7][4] = { "pon", "wto", "sro", czw", "pia", "sob", "nie" }; W strukturze zmiennej jest/będzie trzymany numer dnia tygodnia, który może być użyta jako indeks do tej tablicy. Samych nazw dni tygodnia nei ma sensu trzymać jako zmiennych.
Statyczny adres IP nie jest obecnie zaimplementowany. https://github.com/openshwprojects/OpenB... Ta funkcja wymaga aktualizacji: Dodano po 5 (at)advian1 Jutro mogę spróbować dodać polecenie oszczędzania energii
Twoją funkcje ja bym napisał tak: [syntax=cpp]#include <cstdlib> #include <iostream> #include <cstring> using namespace std; struct String{ char* data; // wskazuje łańcuch int lenght; // długośc łańcucha }; String* Set( const char* c ); // tutaj pierwszy prototyp funkcji // ma korzystać z new do zaalokowania pamięci na łańcuch int...
Co do ostrzeżenia: void lcd_chr(unsigned char xsize, unsigned char ysize, unsigned char xpos, unsigned char ypos, const unsigned char *chr) Jak masz tablicę cost, to musisz zagwarantować, że ptr też nie bedzie zmienial danych.
Marnowanie pamięci....
Oj chyba kolega część książki mówiącą o tablicach przekartkował. ;) [syntax=c]char we_love[] = "cookies!"; // kompilator sam obliczy rozmiar tablicy i skopiuje "cookies!" do niej. char highway_to[4] = "Hel"; // tutaj również tablica będzie kopią "Hel" const char* swiety = "Mikołaj"; // swiety to wskaźnik na const char, zawiera adres literału "Mikołaj",...
void send_RS(char* S) { while(*S!=0) { TXREG = *S; while(!TRMT); S++; } } send_RS("jakis tekst..."); Jeśli to soft Hi-tech to zrób tak: void send_RS( /* !!! */ const char * S ) { /* ... */ } Radzę przejrzeć manual do kompilatora bo takich krzaków jest masa... [/b]
Podsunąłeś mi pewien pomysł... zrzutowałem sobie wskaźnik na tekst w pamięci programu na typ void* Kompilator rozpoznaje typ void* i odróźnia go. Później znowu sobie go rzutuje na const char*. o t6akiej opcji tez myslalem :)... ale stwierdzilem, ze przesada... i, ze w razie innych funkcji podobnych, trzebaby ciagle o tym pamietac :)... ale skoro dziala...
Mi wydaje się, że najlepsze rozwiązanie to lookup table. Koszt - maksymalnie 256 bajtów flash, najczęściej mniej bo upraszczasz program. Zysk: Pozbywasz się ifów, mozesz w programie pisać normalnie polskie litery i nie tylko. [syntax=c] ... const char LT[256] = {.....}; while (*text) { LCD_out(LT[*text]); text++; }[/syntax] Albert
Jaka jest częstotliwość pracy mikrokontrolera? Min. dozwolony czas stanu niskiego i wysokiego linii E to 500 us. Nie widzę w kodzie opóźnień, które by to gwarantowały. Inny kwiatek: niepoprawna deklaracja łańcucha - powinno być: static const char text[] = "äbcd"; Sekwencja inicjująca wyświetlacz też wygląda podejrzanie - brak opóźnień...
Pomysł jest taki: Jedną tablicę przerwania kierują na wyświetlacz Są zadeklarowane tablice i trzeba tylko przepisywać je do tej którą odświeża przerwanie. To co napisałem: [syntax=cpp] char tablica1[10] = {1,2,3,4,5,6,7,8,9,10}; char tablica2[10] = {11,12,13,14,15,16,17,18,19,20}; // tablic będzie sporo char tablica[10]; // ta tablica ma być wizualizowana...
Ja w takich przypadkach stosuję metodę którą na swoje potrzeby nazwałem "split objects". Obiekt u mnie składa się po prostu z dwóch części - stałej i zmiennej. Zwykle "główny" obiekt jest stały, a ten "zmienny" fragment jest podrzędny, jednak są sytuacje w których robię to odwrotnie, głównie wynikające z polimorfizmu lub dlatego że łatwiej/lepiej jest...
Chodzi o konwersję tekstu na bity Przyznaje ze ciezko cie zrozumiec ale mniemam ze chodzi o cos takiego: const char *tekst1="Marcin"; void pisztekst(char *tekst) { unsigned char wiersz=0,kolumna=0; while(*tekst++) { if(*tekst == '\n') { wiersz==1?wiersz=0:++wiersz; kolumna = 0; lcdxy(wiersz,kolumna);...
Sprawdziłem, zanim udzieliłem Ci odpowiedzi :) Iterujesz po indeksach, które mogą być typu const char* , więc użycie name.c_str() jest zasadne, o ile wskazuje na prawidłowy string. Ale te indeksy mogą być również typu String, więc c_str() można pominąć :) [url=https://arduinojson.org/v6/api/json... [url=https://www.arduino.cc/reference/en...
Wygląda na przepełnienie stosu. Na początek wywal wszystkie stringi do FLASH, np. [syntax=c]__flash const char text[81]="ABCDEFGHIJKLMNOPRSTW" "NIE TA LINIA :( " " " "Maciek mowi: ";//PRSTUVWXYZabcdefghijklmnoprstuvwxyz1... [];'\\,./!(at)#$%^&*()`";[/syntax] i [syntax=c]snprintf_P(text, 21,PSTR( "%s%04d%02d%02d %02d:%02d:%02d "), dow, (uint16_t)time.year...
Zrozumiałem to, nie wiedziałem, że zmienne mogą być wyższe niż pętla i konfiguracja i zrobiłem je podobnie do twojego przykładu #include <ArduinoHttpServer.h> const char *ssidglobal; const char *passglobal; .. in class .. ssidglobal = set->inner.sta_ssid; passglobal = set->inner.sta_pass; ... A teraz działa w pętli, jak chcę. ... status...
Dzieki elektryk, sprawa okazała się faktycznie prosta, wystarczyło rzutowanie char* nazawa_zmiennej; // to na poczatek //a w programie nazwa_zmiennej = SaveDialog1->FileName.c_str(); i po kłopocie z AnsiString mamy char To nie jest rzutowanie bezpośrednie miałem na myśli zapis: wskaznik_na_plik=fopen((char *) SaveDialog1->FileName, "a+") tylko...
Wcale nie musi. [syntax=c] const char k[]="konrad";[/syntax] porownanie za to faktycznie nalezy zrobic na strcmp i zamiast: [syntax=c]if (imie==k) cout << "witaj Konrad";[/syntax] uzyc: [syntax=c]if (strcmp(imie, k) == 0) cout << "witaj Konrad";[/syntax] Co nie zmienia faktu ze mozna sprawdzac sobie literka po literce zamiast funkcji strcmp.
Jeśli kompilujesz oryginalny projekt z __PROG_TYPES_COMPAT__ to nie powinieneś mieć błędów, a jedynie ostrzeżenia, że dany typ jest depreciated. Sama biblioteka nie ma błędów, po prostu w międzyczasie zmienił się kompilator, który obecnie jest bardziej restrykcyjny, a definiowanie atrybutu dla typu jest przypadkowym rozszerzeniem C dla gcc. Zmiany są...
Może sprawdź takie rozwiązanie: [syntax=c]#include <iostream> #include <cstring> #include <cctype> using namespace std; char getChar(const char *msg,const char *good) { while(true) { cout<<msg; char sign; cin>>sign; sign=toupper(sign); if(strchr(good,sign)) return sign; cout<<"Podales nieodpowiedni znak, musi pochodzic...
https://obrazki.elektroda.pl/2408248100_... https://obrazki.elektroda.pl/4414580400_... [syntax=c][/syntax]
(at)darex120 na pierwszym zdjęciu to ostrzeżenia a nie błędy. Dodaj "const" w plikach "hd44780.{h,cpp}": [syntax=c]//hd44789.h void sendstring(const char *text); void sendstringformat(const char *szFormat, ...); //hd44789.cpp void HD44780::sendstring(const char *text) {...} void HD44780::sendstringformat(const char *szFormat, ...) {...}[/syntax] Skoro...
funkcje z rodziny printf z v na początku to są wersje z argumentami w postaci va_list [syntax=c] int vprintf ( const char * format, va_list arg ); [/syntax] Przynajmniej tak jest w standardowej bibliotece C, ale jak spojrzałem do include od avr, tam jest tak samo. Są użyteczne jak trzeba stworzyć funkcjonalność printfa we własnych funkcjach (wywołać...
struct wezel *iter = pierwszy; while(iter) { iter = iter->nastepny; } to na pewno nie zadziała poprawnie. przejdzie przez wszystkie elementy, ale po takiej pętli iter zawsze będzie równy NULL. co do tego: Lista l; l+="zabawa"; co do tego to na oko bez kompilowania wydaje mi się że skoro "zabawa" jest typu const char*...
Hej, uczę się już jakiś czas programowania ale co raz napotykam na jeden problem z którym nie mogę się uporać.Chodzi mianowicie i porównywanie znaków typu char a głównie o komunikat:"Error:argument of type "char" is incompatible with parameter of type "const char*". Program do napisania pobiera od użytkownika ciąg znaków reprezentujący dowolny napis...
[syntax=c] DCB PortDCB; COMMTIMEOUTSCommTimeouts; HANDLE hPort; const unsigned short const_bufo=256; //maksymalna iloϾ danych odczytywana jednorazowo z portu const unsigned short const_bufn=1024; //wielkoϾ bufora nadawczego const unsigned short const_stos=65535; //wielkoϾ Stosu odbiorczego (maks 65535) const unsigned...
Albo się bawić z jakimiś funkcjami typu: MultiByteToWideChar, ale polecam to pierwsze rozwiązanie.
Jak już koniecznie chcesz to robić na piechotę... ... to zapisz to przynajmniej przyzwoicie [syntax=c]#include <ctype.h> #include <stdint.h> uint32_t hextoul( const char *hs ) { uint32_t result = 0; uint8_tx; while(isxdigit(x = *hs ++)) { if (x >= 'a') x -= 'a' - 'A'; if (x >= 'A') x -= 'A' - '9' - 1; result = (result << 4)...
Jak użyć stałych zapisanych w pamięci programu przez const unsigned char TEXT[] = "jakiś tekst"; W funkcjach typu strcpy(), strcmp() itp? Te funkcje nie przyjmują wskaźnika do const więc nie można zrobić tego w ten sposób: strcmp(bufer, TEXT); co gorsza nie da się w ten sposób: strcmp(bufer, "jakiś tekst");...
Sorki nie zauwazylem ze to progmem. Pointery w progmem nie istnieja w sposób tak rozumiany jak w normalnej pamieci - tak ze tak łatwo nie bedzie. [syntax=c]#define BUFFLEN 18 char __buff[BUFFLEN]; strncpy_P(__buff, (const char *)pgm_read_word(&(ptr_to_text[0])), BUFFLEN - 1); __buff[BUFFLEN -1 ] = 0;[/syntax] i dopiero mozesz wolac swoja funkcje cos...
żywając PROGMEM (makro F() dla łańcuchów tekstowych) A kompiluje Ci to? Mnie w Arduino IDE działa tylko tam gdzie jest wydruk na serial i operacje w ten deseń... Faktycznie jest jeden "babol" z użyciem __FlashStringHelper * jako argumentu w konstruktorze MenuItem(), ale można to obejść. Poniżej poprawiony kod "Hello World". [syntax=c] #include <MenuBackend.h>...
Najszybciej (dla programu, nie dla programisty) będzie wykorzystać tablicę: #define lower_index 28 #define upper_index 102 const char combuff Zawartość to 75 liczb; do policzenia na kalkulatorze przez kilka minut. Wykorzystanie w programie: combuff Zaleta: zawartość tablicy programista może dowolnie modyfikować według potrzeb.
const chara const chara const chara chara const chara konwersja
kabel ethernet przerywa nowego woluminu paliwo vectra zbiornik
wymiana stacyjki renault modus ekspres naprawa
Nissan Clarion radio wyświetla PHONE po odpięciu akumulatora – tryb TEL-MUTE, usterka Bluetooth SD 60 wyciskarka – części zamienne Kalorik, Eldom, ślimak, sito, misa, gdzie kupić