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...
[syntax=c]char j[20]; fscanf(wxf2, "%s", j);[/syntax] Ale gdzie tu jakaś konwersja?
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...
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,...
15 to za mało, powinno być 16 żeby null-terminator się zmieścił. PS Przy liczniku > 9999 i tak się popsuje.
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ę...
[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...
[syntax=cpp]Pracownik::Pracownik(const char* imie, const char* nazwisko, const Data data_ur) { strcpy(Pracownik::pszImie,imie); }[/syntax] Sprawdź ;)
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....
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...
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...
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...
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...
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-...
a probowales tak T1 = atoi( (const char*)test ); ?
[syntax=c]#define checkResponse(source,s) !strstr((const char*)(source),(s))[/syntax]
Nie używam Keila ale coś takiego powinno wystarczyć [syntax=c]const unsigned char tablica[] = {dane}; const unsigned char *pointer pointer = tablica;[/syntax]
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.
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...
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...
Masz zły typ, powinieneś mieć const char*, możesz też rzucić std::runtime_error i łapać std::exeption
Program działa poprawnie, ale kompilator czepia się nieprawidłowych definicji. Popraw int * na char *. Z const char zrób samo char i zobacz, co na to kompilator? Nie wiem czy czytałeś książkę "Język ANSI C" Brian W. Kernighan, Dennis M. Ritchie? Ci panowie stworzyli język C i dobrze wyjaśniają jak się nim posługiwać. Cała reszta zależy od kompilatora.
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...
[syntax=c]const char *str=s.c_str();[/syntax] lub: [syntax=c]char *str=&s[0];[/syntax]
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....
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
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]...
[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 ;)
Zakomentowałeś atrybut PROGMEM, więc nie ma prawa działać: static const char /*PROGMEM*/ font5x8[] = {
Zmien const char* na PGM_P jak kolega Zumek napisal i po kłopocie. Wtedy przezucisz te zmienne z RAMu do Flasha.
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ą?...
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]
Już Ci (at)BlueDraco napisał w czym jest problem [syntax=c]USART_Transmit_String_P((const char *)pgm_read_word(&dni[idx]));[/syntax]
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...
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,...
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()...
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...
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,...
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
[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...
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]
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...
#include <stdarg.h> int moje_printf(const char *fmt, ...) { ... // do dostępu do argumentów używamy funkcji z nagłówka stdarg.h }
url = "https://cex.io/api/ticker/GHS/BTC" "param" jest w tym wypadku pusty. Mam jeszcze funkcje z urlami, które wykorzystują param, ale na razie chcę przetestować bez. A komentowanie nic nie da, bo program nie wywala błędu, tylko parametr otrzymany ze strony jest pusty. Błąd znam z "oglądania" parametru postit podczas debugowania. EDIT: Takie są kody...
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...
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);...
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]
const chara const chara const chara chara const chara konwersja
przewód miedź ocynkowana monitor użycia dysku zasada działania żyroskopu
zresetować pralkę amica ekspres delonghi
Czy przetwornica samochodowa może pracować przy włączonym silniku? Stabilizatory w ładowarce Merlo nie działają - przyczyny i diagnostyka