ATNEL tech-forum
https://forum.atnel.pl/

Przeportowanie instrukcji z C++ na C. Problem.
https://forum.atnel.pl/topic24154.html
Strona 1 z 1

Autor:  mario2015 [ 20 lut 2022, o 18:12 ]
Tytuł:  Przeportowanie instrukcji z C++ na C. Problem.

Cześć wszystkim.
Mam taki oto problem:
Otóż odgrzebałem gdzieś w szufladzie jakiś wyświetlacz LCD TFT 320x240 ze sterownikiem SPDF5408 i szkoda mi go wyrzucać do śmieci.
Chciałbym go wykorzystać w jakimś projekcie na M32. Niestety ale już od trzech dni siedzę w necie u wujka google i... i nic, brak sterowników napisanych w C.
Wszystkie dostępne sterowniki to C++. No dobra, to może taką bibliotekę wystarczy przeportować.
No właśnie i tu zaczynają się problemy.
Niektóre rzeczy jestem w stanie ogarnąć ale tylko niektóre.
Pierwszy problem jest taki, że nie wiem co to za zapis w C++ i do czego służy:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak to przerobić na C?
Chyba, że ktoś posiada gotową bibliotekę do tego sterownika i chciałby się na tym forum z nami podzielić?
Poniżej zdjęcie tego chińskiego "cuda".

Obrazek

Będę bardzo wdzięczny za pomoc.

Autor:  mario2015 [ 21 lut 2022, o 13:44 ]
Tytuł:  Re: Przeportowanie instrukcji z C++ na C. Problem.

Niestety, tak jak pisałem w pierwszym poście, sterownik to prawdopodobnie SPDF5408 i nie obsługuje magistrali SPI.

Autor:  mirekk36 [ 21 lut 2022, o 14:08 ]
Tytuł:  Re: Przeportowanie instrukcji z C++ na C. Problem.

mario2015 napisał(a):
Pierwszy problem jest taki, że nie wiem co to za zapis w C++ i do czego służy:

Przecież to jakaś zwykła inicjalizacja gdzie przekazywane są pewnie numery pinów tych andruinowych dla sygnałów sterujących i rozdzielczość wyświetlacza, przecież w C i tak po swojemu musisz to zrobić - całkiem po swojemu.

Autor:  Marhef [ 23 lut 2022, o 10:57 ]
Tytuł:  Re: Przeportowanie instrukcji z C++ na C. Problem.

A to nie jest przypadkiem konstruktor?
Wrzuć tu całą bibliotekę, jak ogarnę dziurę w dachu to postaram się pomóc

Autor:  mario2015 [ 23 lut 2022, o 21:08 ]
Tytuł:  Re: Przeportowanie instrukcji z C++ na C. Problem.

Marhef
Cytuj:
Wrzuć tu całą bibliotekę, jak ogarnę dziurę w dachu to postaram się pomóc

proszę oto cała biblioteka.
Nie wiem jak to przerobić na M32 w czystym C.

Autor:  Marhef [ 10 mar 2022, o 15:11 ]
Tytuł:  Re: Przeportowanie instrukcji z C++ na C. Problem.

Zerknąłem na bibliotekę.
Tak na szybko:
1) biblioteka obsługuje kilka sterowników: ILI932x (obstawiam, że x oznacza kilka sterowników), HX8347G, ILI9341, HX8357, HX8357B, HX8357D.
2) w pliku registers.h masz rozpisane adresy rejestrów dla poszczególnych sterowników
3) w pliku pin_magic.h masz przypisanie pinów do wyświetlacza i funkcje wysyłania/odbierania danych. I delay na instrukcjach ASM.
UWAGA! Z tego, co widzę, wszystko jest pisane jako makra preprocesora! Żeby wymusić wstawienie ich inline. Nie wiem, czy to dobre rozwiązanie, no ale biblioteka jest pod arduino, więc...
4) w pliku Adafruit_TFTLCD.h masz deklarację klasy Adafruit_TFTLCD. Nie pamiętam z c++, co znaczy taki zapis:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
, może ktoś podpowie :) może to dziedziczenie?

Klasa w c++ to... taka rozbudowana struktura, gdzie oprócz zmiennych są też funkcje działające na tych zmiennych. I zmienne i funkcje mogą być publiczne (public), prywatne (private) albo chronione (?)(protected). Publiczne są dostępne z poza klasy, prywatne nie, a te trzecie to sam nie wiem :)
Klasa zawiera funkcję, która nazywa się tak jak klasa i jest to konstruktor. Przy tworzeniu zmiennej typu klasa, automatycznie wywoływany jest konstruktor. Na przykład po to, żeby uzupełnić pola klasy konkretnymi wartościami.
W c++ istnieje coś takiego jak przeciążenie funkcji. Oznacza to, że może istnieć kilka funkcji o takiej samej nazwie, a o innych argumentach. I to też tu widać.
W pliku .cpp masz takie dziwne konstrukcje z dwoma dwukropkami. To oznacza, że jest to funkcja z klasy.

Na chwilę obecną nie jestem w stanie przepisać Ci tych funkcji, nie mam na to czasu. Spróbuj powoli sam, pytaj, jak będziesz miał jakiś problem

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/