eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaC++ ośla łączkaRe: C++ ośla łączka
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.chmurka.net!.POSTED.h82-143-187-50
    -static.e-wro.net.pl!not-for-mail
    From: "J.F" <j...@p...onet.pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: C++ ośla łączka
    Date: Mon, 6 Feb 2023 08:11:23 +0100
    Organization: news.chmurka.net
    Message-ID: <c...@4...net>
    References: <63da914d$0$19625$65785112@news.neostrada.pl>
    <16qbnwht7z74n.8802zax2iioq$.dlg@40tude.net>
    <63dad430$0$9589$65785112@news.neostrada.pl>
    <2lc2k584a7fw.i3cy3glism0z$.dlg@40tude.net>
    <63dcfd3f$0$9589$65785112@news.neostrada.pl>
    <dgvh8noaqudp$.1wnyhky5x5i1s$.dlg@40tude.net>
    <63e03ad7$0$9603$65785112@news.neostrada.pl>
    NNTP-Posting-Host: h82-143-187-50-static.e-wro.net.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset="utf-8"
    Content-Transfer-Encoding: 8bit
    Injection-Info: news.chmurka.net; posting-account="jfoxwr";
    posting-host="h82-143-187-50-static.e-wro.net.pl:82.143.187.50";
    logging-data="22377";
    mail-complaints-to="abuse-news.(at).chmurka.net"
    User-Agent: 40tude_Dialog/2.0.15.1
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:778005
    [ ukryj nagłówki ]

    On Mon, 6 Feb 2023 00:25:11 +0100, Robert Wańkowski wrote:

    > W dniu 2023-02-03 o 17:42, J.F pisze:
    >
    >>>>>> char fbuf[20];
    >>>>>> dtostrf(mpu.getAngleX(), 8, 3, fbuf) ;
    >>>>>> Paint_DrawString_EN(123, 123, fbuf,&Font16, BLACK, GREEN);
    >>>>>
    >>>>> Działa, dziękuję.
    >>
    >> To jest troche nadmiarowe, z zapasem dalem :-)
    >
    > Przeglądają bibliotekę okazało się, że jest:
    > Paint_DrawNum()
    > ale jak i tak działa to skandalicznie wolno. :-)

    Jest nawet
    void Paint_DrawFloatNum(UWORD Xpoint, UWORD Ypoint, double Nummber, UBYTE
    Decimal_Point,
    sFONT* Font, UWORD Color_Background, UWORD Color_Foreground)
    {
    char Str[ARRAY_LEN] = {0};
    dtostrf(Nummber,0,Decimal_Point+2,Str);
    char * pStr= (char *)malloc((strlen(Str))*sizeof(char));
    memcpy(pStr,Str,(strlen(Str)-2));
    * (pStr+strlen(Str)-1)='\0';
    if((*(pStr+strlen(Str)-3))=='.')
    {
    *(pStr+strlen(Str)-3)='\0';
    }
    //show
    Paint_DrawString_EN( [...]

    Robi z grubsza to samo, co proponowalem - ale po co to podwójne buforowanie?

    O, i jest nawet Paint_DrawString_CN
    ... nowe czasy :-)

    >>> Już wiem, że te Arduino Uno z 16 MHz nie da rady, aby na bieżąco płynnie
    >>> wyświetlać nawet jedną wartość numeryczną.
    >>>
    >>> Trzeba czyścić ekran przed następnym rekordem do wyświetlenia. Czyszczę
    >>> tylko ten obszar od rekordu, a i tak miga.
    >>
    >> no
    >> a) przygotowac gdzies buforze caly nowy obszar ze znakami, przepisac.
    >
    > Ale to poziom za wysoki dla mnie. Szukałem miejsca w bibliotekach, gdzie
    > są wysyłane dane na wyświetlacz, ale ugrzęzłem.
    >
    > Tu jest ta biblioteka.
    > http://3a-meble.com.pl/lib/bc295x/LCD_1inch8-ldrnn3f
    w.zip
    >
    >> b) nie ma gdzies w tej funkcji mozliwosci ustawienia, aby rysowala i
    >> czyscila jednoczesnie?
    >
    > Coś podobnego zrobiłem, czyszczę wyświetlając ten sam rekord kolorem
    > czcionki takim samym co tło.

    Na jedno wychodzi - wyczyscisz i masz ciemny ekran.
    Narysujesz ... no i miga.

    > Bo biblioteka nie czyści tła jeżeli
    > wyświetlana czcionka ma takie samo.

    No wlasnie - ma tryb, gdzie jednoczesnie ustawia piksele znaku i tla.
    Moze troche wolno, ale bez migania.

    Tylko nie rozumiem tego koloru czcionki. Sama czcionka jest bitowa - gdzie tu kolor?

    parameter:
    Xpoint :X coordinate
    Ypoint :Y coordinate
    Acsii_Char :To display the English characters
    Font :A structure pointer that displays a character size
    Color_Background : Select the background color of the English character
    Color_Foreground : Select the foreground color of the English character
    ****************************************************
    **************************/
    void Paint_DrawChar(UWORD Xpoint, UWORD Ypoint, const char Acsii_Char,
    sFONT* Font, UWORD Color_Background, UWORD Color_Foreground)
    {

    UWORD Page, Column;

    if (Xpoint > Paint.Width || Ypoint > Paint.Height) {
    //Debug("Paint_DrawChar Input exceeds the normal display range\r\n");
    return;
    }
    uint32_t Char_Offset = (Acsii_Char - ' ') * Font->Height * (Font->Width / 8 +
    (Font->Width % 8 ? 1 : 0));
    const unsigned char *ptr = &Font->table[Char_Offset];

    for ( Page = 0; Page < Font->Height; Page ++ ) {
    for ( Column = 0; Column < Font->Width; Column ++ ) {

    //To determine whether the font background color and screen background color is
    consistent
    if (FONT_BACKGROUND == Color_Background) { //this process is to speed up the
    scan
    if (pgm_read_byte(ptr) & (0x80 >> (Column % 8)))
    Paint_SetPixel (Xpoint + Column, Ypoint + Page, Color_Foreground );
    } else {
    if (pgm_read_byte(ptr) & (0x80 >> (Column % 8))) {
    Paint_SetPixel (Xpoint + Column, Ypoint + Page, Color_Foreground );
    } else {
    Paint_SetPixel (Xpoint + Column, Ypoint + Page, Color_Background );
    }
    }
    //One pixel is 8 bits
    if (Column % 8 == 7) {
    ptr++;
    }
    }/* Write a line */
    if (Font->Width % 8 != 0) {
    ptr++;
    }
    }/* Write all */
    }

    O co im chodzi z tymi kolorami?



    Moze zmien ciut kolor tla, lub wywal to sprawdzanie i nie kasuj.


    > Ale i tak mizernie. Czas jest tak długi, że główna funkcja programu
    > (wyświetlanie punktu według wskazać akcelerometru - taka poziomica 2D)
    > nie działa płynnie.
    >
    >> c) mozna samemu cos takiego napisac, ale nie jest to takie trywialne,
    >> d) przejsc na font "7-segmentowy". wtedy wystarczy zapalic lub zgasic
    >> kilka fikusnych prostokątów :-)
    >
    > Ale linia (patrząc w kod biblioteki), rysowana jest w pętli z pikseli.
    > Tak samo jak czcionki, rysowane są punkt po punkcie według zawartości
    > tablicy.
    > I pewnie będzie trwało podobnie jak wyświetlenie czcionki.

    Ale tym pomysle pikseli skladajacych sie na znak jest znacznie mniej (bo tylko
    segmenty),
    i segmenty wszedzie takie same - wiec nie trzeba calego obszaru znaku kasowac.


    >>> Dlatego kupiłem szybszy:
    >>> https://botland.com.pl/moduly-wifi-i-bt-esp32/8893-e
    sp32-wifi-bt-42-platforma-z-modulem-esp-wroom-32-zgo
    dny-z-esp32-devkit-5904422337438.html
    >>
    >> SPI tez ma szybsze?
    >
    > https://www.espressif.com/sites/default/files/docume
    ntation/esp32_datasheet_en.pdf
    >
    > 39 strona.
    >
    > 80 MHz.

    A wyswietlacz ile dopuszcza?

    No i biblioteka sporo tu jednak wylicza dla kazdego piksela - moze nie w SPI problem.

    A i sama biblioteka, gdzie jak widze co bajt chwila jest pin CS zmieniany ... ciekawe
    czy tak trzeba.


    J.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: