Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 mar 2024, o 13:52


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 
Autor Wiadomość
PostNapisane: 4 mar 2018, o 20:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Powiem szczerze że mam problem z poprawnym odbiorem polskich czcionek wysyłanych z telefonu komórkowego poprzez uart w moim programie na wyświetlaczu 4X8X8 LED z układem MAX 7219.
Oto moja tablica z wzorcami znaków.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Podstawowe znaki kodu ascii od 33 do 127 odbieram poprawnie natomiast jak wyślę telefonem na przykład napis"dobę" to na moim wyświetlaczu LED 8X8 wyświetla mi "dob ę" wstawiając pusty znak przed polską czcionką i nie wiem jak to poprawić.
Natomiast jak wyślę taki sam napis omijając komunikację uart to wyświetlacz pokazuje prawidłowo.
słyszałem że znaki ascii>128 odbierane powinny być jako mulibytowe ale nie wem co dokładnie to znaczy.
Załóżmy że mam znak "ą" to wysyłając ten znak z komórki poprzez aplikacje bluetooth po uart do mojej atmegi 328 jaką wartość liczbową lub bitową otrzymam?.
Do odbioru stringów używam funkcję MK uart z green booka "char * uart_get_str(char * buf"
Zastanawiam się co jest odbierane poprzez tę funkcję gdy wysyłam polski znak? np."ą" bo ten znak posiada indeks 133 tablicy znaków const uint8_t font[] PROGMEM podanej powyżej.

Proszę o wytłumaczenie jak odbierać polskie znaki bez pustego znaku poprzedzającego je tak jak mam to do tej pory.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 mar 2018, o 21:21 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

żadne multibytowo - masz znaki w standardzie win1250 to taki sam standard użyj w telefonie

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 mar 2018, o 21:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

W telefonie używam aplikacji wykonanej w MIT_APP_INVENTOR oraz aplikacji "Bluetooth spp pro" tam jest tylko opcja dodania do każdego znaku na końcu /r/n (czyli dec 13 i 10) i innych opcji nie widziałem tam ani też w telefonie.Jak to ustawić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 mar 2018, o 21:49 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

a to sorry nie mam zielonego pojęcia o tych klockach lego ap-koci-inventor ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 mar 2018, o 22:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Ok ale pomijając te klocki lego,powiedzmy że jakimkolwiek programem do komunikacji po bluetooth mam telefon w ręku i wystukuję te nieszczęsne dla mnie "ą/r/n" to jednak jest to jakiś znak ascii zakończony poprawnie a na wyświetlaczu LED jest przed nim pusty znak tak jakby spacja ,a jak wyślę jak już wcześnie pisałem znaki o d 33 do 127 to jest wszystko pięknie wyświetlone zastanawiam się w czym jest problem. Niewierze w to żeby nikomu się nie udało na tym forum poprawnie odebrać i wyświetlić na podobnym wyświetlaczu tych polskich znaków:-).
Może jednak ktoś się z tym spotkał:-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 mar 2018, o 01:16 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

mirek1968 napisał(a):
to jednak jest to jakiś znak ascii

Tak panie kochany, ale teraz poczytaj o sposobach kodowania znaków a szczególnie o różnicach pomiędzy nimi. Dla przykładu powinieneś wiedzieć że w telefonach używany jest głównie UTF8 a to co ty zrobiłeś w procku to podejrzewam Win1250

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 mar 2018, o 18:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Masz rację Panie Mirku że w programie w mojej tablicy mam kodowanie win1250 i to nawet pasuje .
Na przykład litera "ę" w win1250 to 234 a w UTF8 w postaci dwóch bytów w postaci hex 0xC499 (196 i 153). Natomiast odbieram to z komórki najpierw pusty znak a potem pod liczbą dec 153 (Ä). Wynika z tego że ten pusty znak ma kod C4 szestnastkowo (czyli 196 dziesietnie) a w ascii Ä,a nie wyświetla mi się taki znak dlatego że nie mam dla niego wzorca i dlatego działą jak spacja.
Ok to teraz jak dobrze rozumię muszę zamaskować jakoś ten pierwszy byte 0xC4 żeby sie pozbyć pustego znaku na moim wyświetlaczu LED:-).
Ale jak to zrobić:-) hmmm.
Kolega zubik też ma rację jeżeli jak się okazuje chyba bliski jestem informacji co wysyłam z komórki pod polskimi znakami to jak to teraz dostosować do mojej tablicy żeby dekodowanie działało poprawnie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 mar 2018, o 21:06 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

mirek1968 napisał(a):
Ok to teraz jak dobrze rozumię muszę zamaskować jakoś ten pierwszy

źle rozumiesz - tak nie zajedziesz daleko z dekodowaniem UTF8 bo o ile uda ci się wyłowić polskie znaczki to nie będą miały kodów zgodnych z win1250 i za chwilę znikną ci inne ... toż to co teraz wymyślasz to sposób "jak mogę sobie utrudnić życie"

zamiast ustawić win1250 w telefonie i jednym ruchem sprawa załatwiona

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2018, o 15:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 369
Lokalizacja: Gliwice
Pomógł: 34

A ja robię to tak, może pomoże coś w Twoim przypadku.
Generalnie na UTF8 "przeszedłem już jakiś czas".
Nawet w Eclipse mam skonfigurowaną stronę kodową na UTF8, co pozwala bez krzaków również kompilować projekty pod linuxem, a w edytorze ładnie się wszystko wyświetla i widać gdzie są błędy.

Działając przy pomocy greenbooka stworzyłem skromne pliki biblioteczne font_pl.c i fonts_pl.h, które pozwalają kodować w UTF, oprogramowując choćby wyświetlacze różnej maści. Stworzyłem tablice dla popularnych kodowań, a w późniejszym kodzie sprawdzam jakie "wchodzą" kody i remapuję na odpowiednie, polskie litery.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Trzeba pamiętać, że UTF to kodowanie dwubajtowe. W AVR-GCC jest do tego stworzony typ "wchar_t" inaczej pisząc "wide char"(szeroki char :) ).
Żeby operować na napisach kodowanych w UTF trzeba to robić np tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ważna jest m.in ta litera "L" :). Wywołanie funkcji może wyglądać np. tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Powyższe fragmenty kodów nie są pełne, ale mam nadzieję, że będą pomocne.

Oczywiście kodowanie w UTF daje 2 razy większy narzut w pamięci na napisy, o czym warto pamiętać.
Warto to tego zagadnienia posiadać Greenbooka, gdzie szczegółowo był opisany sposób generowania czcionek. Przyda się też Pixel Factory gdzie można wygenerować sobie czcionki, również polskie, a później w prosty sposób je generować, w zależności od strony kodowej

Mam nadzieję, że ten nieco chaotyczny wpis coś rozświetli :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2018, o 15:21 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Zealota napisał(a):
Powyższe fragmenty kodów nie są pełne, ale mam nadzieję, że będą pomocne.

Myślę, że dla autora będzie bardzo pomocne ;) bo kolega wyłożył jak na tacy nie tylko to o co chodzi w różnych sposobach kodowania to jeszcze podał przykłady przemapowania sobie znaków ...

Nie mniej jednak stosowanie kodowania typu UNICODE gdzie kod znaku zajmuje dwa bajty dla 8-bitowców wobec możliwości stosowania kodowania znaków w trybie 8-bitowym a jest ich kilka przecież do dyspozycji ... to wręcz grzechem jest zabawa w UTF8 .... szczególnie jak chodzi o komunikację np z telefonem gdzie to od nas zależy jakiego trybu kodowania używamy. Mnie się aż troszkę kręgosłup skręca podwójnie ;) jak widzę gdy ktoś męczy się z kodowaniem UTF8 dla 8-bitowca bo bardzo słusznie kolega zauważył, że

Zealota napisał(a):
Oczywiście kodowanie w UTF daje 2 razy większy narzut w pamięci na napisy, o czym warto pamiętać.


I na koniec żebym nie został źle zrozumiany - że neguję wszystko ... nie nie broń Boże! ... bo jeśli np mamy zrobić np urządzenie na procku, które musi "GADAĆ" z jakimś nie naszym urządzeniem czy nie naszym programem na telefonie/tablecie - gdzie nie mamy wpływu na zmianę rodzaju kodowania, to oczywiście że tak się to robi .... Pewnie taki sam problem mają koledzy linuxowcy (chociaż tu mogę się mylić więc proszę mi wybaczyć - i potraktować to wręcz jako moje pytanie a nie stwierdzenie) ... więc czy to nie jest tak, że w linuxie domyślnym sposobem kodowania znaków jest właśnie UTF8 i ciężko sobie przestawiać Eclipsa na jakieś kocie łindołsowe kodowanie Win1250 albo inne jednobajtowe jak ISOxxx, Latin, CPxxx itp ... a w związku z tym kolega woli się męczyć z tym UTF8 ?

Ale odnośnie tego co kolega Zelaota napisał to powiem więcej - jak zwykle pokazał nie jakąś tam prostą podpowiedź ale rzekłbym rozbudowany tutorial który dla początkujących osób, które nie wiedzą właśnie o co chodzi w tych kodowaniach znaków - to myślę, że dużo mogą się dowiedzieć i nauczyć. Trzeba byłoby chyba na forum zrobić jakiś dział "TUTKI" ;) gdzie podlinkowywałoby się takie kwiatki które czasem użytkownicy naszego forum tworzą - żeby można było do nich łatwiej docierać - bo tak? W nawale postów i najróżniejszych wątków później ciężko je ludziom odnaleźć ;)

Zealota napisał(a):
Mam nadzieję, że ten nieco chaotyczny wpis coś rozświetli

Panie, Panie nie bądź Pan taki skromny - uważam, że ŚWIETNY tutorial dla początkujących

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2018, o 16:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Potrzebuję troszkę czasu i skupienia żeby przetrawić to co napisałeś Zealota.
A co do zmiany w telefonie z androidem kodowania z UTF8 na win1250 to chętnie bym to zrobił ale czy jest w ogóle taka opcja w telefonie,bo za chiny ludowe nie potrafię jej znaleźć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2018, o 17:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Zealota napisał(a):
Trzeba pamiętać, że UTF to kodowanie dwubajtowe.
A ja się nie zgodzę :). UTF8 to kodowanie zmiennej długości od 1 do 4 bajtów. Przy czym polskie znaki znajdują się w części kodowanej na dwóch bajtach. Ale w UTF-8 znaki z tablicy ASCII kodowane są na jednym bajcie, więc można z niego korzystać nie zwiększając znacznie ilości zajmowanych danych.
Obrazek

Z pojęciami Unicode, ISO 10646 , UTF-8, UTF-16, UTF-32, UCS to nie jest tak prosto i oczywiście.
Standard UCS (Universal Character Set) definiuje zestaw wszystkich możliwych znaków. Standardy UTF-8, UTF-16, UTF-32 definiują zapis kodu znaku w odpowiednim formacie.
Przez samo użycie Unicode często rozumie się korzystanie ze zdefiniowanego podstawowego zestaw znaków Plane 0 (wartości od 0x0000 do 0xFFFD), zwanego Basic Multilingual Plane (BMP) z zapisem wszystkich znaków na dwóch bajtach.

--
Pozdrawiam,
Robert

PS. Pierwotnie UTF-8 miało mieć do 6 bajtów ale w 2003 roku zostało ograniczone zgodnie z RFC 3629 do 0x10FFFF pozycji by zapewnić zgodność z UTF-16.

0x00 ... 0x7F – wartości znaków 0xxxxxxx
0x80 ... 0x7FF – wartości znaków 110xxxxx 10xxxxxx
0x800 ... 0xFFFF – wartości znaków 1110xxxx 10xxxxxx 10xxxxxx
0x10000 ... 0x1FFFFF – wartości znaków 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
oraz usunięte w 2003 z UTF-8:
0x200000 ... 0x3FFFFFF – wartości znaków 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x4000000 do 0x7FFFFFFF – wartości znaków 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2018, o 17:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 369
Lokalizacja: Gliwice
Pomógł: 34

mirekk36 napisał(a):
Zealota napisał(a):
Mam nadzieję, że ten nieco chaotyczny wpis coś rozświetli

Panie, Panie nie bądź Pan taki skromny - uważam, że ŚWIETNY tutorial dla początkujących


Dzięki Mirku za uznanie :)

Co do Androida to niestety nie wiem czy da się ustawić inne kodowanie, ale wątpię żeby to było proste.

W linuxie za to powinno się dać ustawić dowolne kodowanie, ale wymaga to na pewno większego "grzebania" bo zwykle po zmianie, w różnych miejscach pozostają "krzaczki" i trzeba dopieścić szczegóły.

Co do "objętości" UTF8 to jak pokazałem, wystarczy tylko zmienić definicję kodowania w pliku nagłówkowym, usunąć to "L" oraz pogmerać przy typie char (wchar_t) definiując swój własny w nagłówkowym pliku, lub jak ktoś się uprze można to robić w locie i zaoszczędzić połowę pamięci jeśli zajdzie potrzeba. Jak zwykle możliwości od groma :)
Temat ten oczywiście nie jest jakiś skomplikowany, szczególnie gdy się go już pozna, co nie oznacza, że zajęło mi to 5 minut, bo oczywiście to były dni albo tygodnie rozkminiania :)

------------------------ [ Dodano po: 26 minutach ]

rskup napisał(a):
Zealota napisał(a):
Trzeba pamiętać, że UTF to kodowanie dwubajtowe.
A ja się nie zgodzę :). UTF8 to kodowanie zmiennej długości od 1 do 4 bajtów. Przy czym polskie znaki znajdują się w części kodowanej na dwóch bajtach.

No tego nie wiedziałem, choć jak teraz czytam to tak właśnie jest :) choć ciężko definiować napisy w tablicy o zmiennej ilości bajtów, zatem napis z polskimi ogonkami i tak zajmie 2bajty * ilość_liter.
Można oczywiście kombinować ze strukturami albo uniami, ale to niepotrzebne komplikowanie :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 mar 2018, o 18:39 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Zealota napisał(a):
Co do Androida to niestety nie wiem czy da się ustawić inne kodowanie, ale wątpię żeby to było proste.

Nie dość, że się da, to da się to zrobić jednym ruchem ręki - pokazywałem nawet to w poradnikach ;) więc jak mogłoby się nie dać ? ;)

Nie dość że jest tak jak mówi rskup to jeszcze przy kodowaniu utf8 mamy czasem do czynienia z 3 bajtowym nagłówkiem, który trzeba byłoby pomijać ... Oczywiście polskie ogonki są opisane na dwóch bajtach ale wziąwszy wszystko razem pod uwagę i 8-bitowca ... a do tego możliwości gdy samemu się pisze soft na telefon - to już w ogóle praca z utf8 mija się z celem jak widać ...

Zealota napisał(a):
W linuxie za to powinno się dać ustawić dowolne kodowanie, ale wymaga to na pewno większego "grzebania" bo zwykle po zmianie, w różnych miejscach pozostają "krzaczki" i trzeba dopieścić szczegóły.

Tak coś czułem właśnie ale jak mówię - na linuxie się w ogóle nie znam więc tu nie zabieram głosu bo za cienki jestem

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 mar 2018, o 12:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Zealota napisał(a):
No tego nie wiedziałem, choć jak teraz czytam to tak właśnie jest :) choć ciężko definiować napisy w tablicy o zmiennej ilości bajtów, zatem napis z polskimi ogonkami i tak zajmie 2bajty * ilość_liter.
Można oczywiście kombinować ze strukturami albo uniami, ale to niepotrzebne komplikowanie :)

Można korzystać ze starego kodowania Unicode, zawartego teraz w specyfikacji jako Basic Multilingual Plane (BMP), zwanym Plane 0, gdzie każdy znak to dwa bajty. Takie Unicode używa najczęściej Windows a także np. descryptory USB. Dla znaków z zakresu ASCII mamy dodawany na początek bajt o wartości 0x00.

mirekk36 napisał(a):
Nie dość że jest tak jak mówi rskup to jeszcze przy kodowaniu utf8 mamy czasem do czynienia z 3 bajtowym nagłówkiem, który trzeba byłoby pomijać
Specjalnie by nie mieszać, to o tym już nie pisałem. Ale typowo w plikach kodowanych w UTFie umieszcza się w pierwszych bajtach tzw. BOM (Byte-Order Mark), który określa kolejność zapisu bajtów - little endian i big endian a przy okazji pozwala ustalić jakie kodowanie jest używane:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dla UTF-8 kolejność bajtów jest zdefiniowana, więc BOM jest nie wymagany i jest opcjonalny (może być ale nie musi).

--
Pozdrawiam,
Robert

------------------------ [ Dodano po: 3 minutach ]

Dla chcących zgłębić temat polecam artykuł: http://www.cl.cam.ac.uk/~mgk25/unicode.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 mar 2018, o 12:32 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

rskup napisał(a):
więc BOM jest nie wymagany i jest opcjonalny (może być ale nie musi)

Ale jednak czasem jest używany nawet dla utf8 (miałem się okazję niejednokrotnie o tym przekonać) i to wtedy zwykle bywa niespodzianką, która czasem spędza sen z powiek gdy ktoś o tym nie wie. Ten BOM dla utf8 często jest stosowany gdy np dane pochodzą ze stron www z czym też mamy przecież często do czynienia nawet na AVRkach gdzie analizujemy nadlatujące dane jakimś klientem www.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 mar 2018, o 14:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Mirek co do Twojego zdania "Nie dość, że się da, to da się to zrobić jednym ruchem ręki - pokazywałem nawet to w poradnikach ;) więc jak mogłoby się nie dać ? ;)"to poproszę przypomnij mi jaki to poradnik i gdzie mogę znaleźć informacje jak zmienić kodowanie w telefonie komórkowym z UTF-8 na win 1250 bo szukałem ale nie znalazłem takich informacji.
A tym kierunku raczej pójdę.:-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 mar 2018, o 16:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

mirekk36 napisał(a):
Ale jednak czasem jest używany nawet dla utf8
Zgadza się. I tutaj musimy koniecznie być przygotowani na obie wersje.
A czy będzie czy nie, to jest często nawet nieświadomy wybór autorów dokumentów - nieświadomy, bo z reguły nie wiedzą o czymś takim a jakby wiedzieli to i tak często nie wiadomo jak to zaimplementował programista w ich aplikacji. Tylko dobre edytory mają możliwość wybierania kodowania oraz BOMa dla UTF-8 - np. Notepad++:
Obrazek

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 mar 2018, o 17:58 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

mirek1968 napisał(a):
Mirek co do Twojego zdania "Nie dość, że się da, to da się to zrobić jednym ruchem ręki

No ale przecież napisałem tobie i wiesz chyba, że ja z app inventorem nie mam nic wspólnego - więc co dadzą ci moje poradniki które dotyczą B4A w którym po prostu podaje się ręcznie kodowanie "Win1250" dla stringa zamiast "utf8" i to wszystko - można powiedzieć, że w ogóle się nic nie robi poza tym że podajesz wprost sposób kodowania którego oczekujesz.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 mar 2018, o 22:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2013
Posty: 257
Lokalizacja: Racibórz
Pomógł: 0

Zealota Ta funkcja "uint8_t polish_letters(uint8_t codePage, wchar_t codeChar)" zwraca numer znaku ascii w postaci liczby całkowitej od 0 do 18 ?
1).Czyli przykładowo tworzę zmienną
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

2).Przekazuję do funkcji np.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

I następnie trzeba pewnie w jakiś sposób przekazać odebrany znak poprzez np. funkcje
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tylko że *input jest typu char natomiast liczba to wchar_t.
Poproszę o dalszą pomoc jak to połączyć z moim projektem żeby zadziałało.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 mar 2018, o 00:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 369
Lokalizacja: Gliwice
Pomógł: 34

mirek1968 napisał(a):
Zealota Ta funkcja "uint8_t polish_letters(uint8_t codePage, wchar_t codeChar)" zwraca numer znaku ascii w postaci liczby całkowitej od 0 do 18 ?

No to nie do końca to tak jest. To nie jest nr znaku ASCI jedynie indeks kolejnej polskiej litery (od 0 - 17 ).
To niestety takie moje widzimisię było :)
W konkretnych tabelach czcionek umieszczam bitmapy polskich czcionek na końcu tabeli, zawsze w tej samej kolejności jak podałem.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A potem za pomocą tych liczb (od 0 17 ) znajduję aktualną czcionkę w pamięci flash.
Funkcja polish_letters() porównuje kody czcionek ze wzorcami w pętli i znajduje indeks.\

Jeśli wiemy, że nadejdzie UTF8, no to musimy użyć wchar_t.

mirek1968 napisał(a):

I następnie trzeba pewnie w jakiś sposób przekazać odebrany znak poprzez np. funkcje
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tylko że *input jest typu char natomiast liczba to wchar_t.
Poproszę o dalszą pomoc jak to połączyć z moim projektem żeby zadziałało.


Niestety nie wiem jak działa "uart_get_str(bufor_uart)", takie tematy dopiero przede mną :(
Nie wiem też co podaje "ten Android". Jak pisali Koledzy podstawowe znaki UTF_8 mają wartości jednobajtowe (char), ale jak są nadawane to nie wiem, może dwubajtowo (wchar_t), wtedy byłoby łatwiej. Można by składać po dwa bajty w jedno słowo i pakować do tablicy. Niestety ciężko coś więcej wymyślić ...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO