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 ); ?
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]#define checkResponse(source,s) !strstr((const char*)(source),(s))[/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
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]
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.
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
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....
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 ;)
Zmien const char* na PGM_P jak kolega Zumek napisal i po kłopocie. Wtedy przezucisz te zmienne z RAMu do Flasha.
Zakomentowałeś atrybut PROGMEM, więc nie ma prawa działać: static const char /*PROGMEM*/ font5x8[] = {
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
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]
[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...
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
schemat balkancar schemat iveco silnika uziemienie brązowy
Piec Saunier Duval Thematek nie grzeje wody - diagnostyka Jak sprawdzić kondensator SMD na płycie laptopa – testy MLCC, tantalowych, polimerowych