Digole
Digital Solutions
iDigole Buyer ProtectioniDigole Buyer
Protection
My shopping cart
0 Items:
Secure Checkout
Top Rated Plus
Visit Our Live Auctions
99.9% Customer's Satisfaction
 
Forum : Digole Serial Display :

 Search Forum.. 
 Creat New Topic   Reply 

User font download fail

Hi,

a collegue and me are actually working on more than 10 Digole OLED serial displays.
We encounter some difficulties to download user fonts.

The procedure I follow is the one described in your manual, with "SUF" command.

Font data array has been created with your two online tools, and red line separators are well placed between each char (only number 0 to 9 in our case). Displayed ASCII code and displayed value couple are OK. So I think data's generated by your second tool (user font file) are "coherents".

When I initiate a font download, all seem starting OK, as the message "Downloading in progress, don't shut me down..." appear.
But screen remain in this state and seem freezed, even after 5 or 10 minutes.

Of course I verifyed MSB/LSB order of the (word) array size value, in regard with OLED version. Tested with Index of user font 0..3 in the SUF command (for recall with SetFont 200..203). All seems OK on this side. Il also tried to reduce or add data to make font bytes array a multiple of 64 (can't say if it's a good technique for testing), didn't see any change.

So, please can you give me some advises on where to search now ?
By any chance, do you have a little font file with low size (400..600 bytes max) I can test for dowloading ?

Thanks in advance for your answer.

Kindest regards,
Remy

 

RE:User font download fail

 Could you please include the following information and send it to: question@digole.com:

1) OLED module number and firmware version

2) The font's data and the program to download user fonts to display module

Then we can debug/test that for you.

There are lot of fonts available here:

https://raw.githubusercontent.com/olikraus/u8glib/master/sfntsrc/u8g_font_data.c

In order to download fonts to module success, please do like follow:

 

  delay(500);            //this delay is very important, it will let module to clear the receive buffer
  mydisp.downloadUserFont(sizeof(userfont1),userfont1,0);
  delay(500);

//test the new user font
  mydisp.clearScreen();
  mydisp.setFont(200);
  mydisp.drawStr(0,0,"0123456789ABCDEFGHIJK This is my 1st user font ZZZzzz");
 
Here is the function of downloadUserFont:
void downloadUserFont(int lon, const unsigned char *data, uint8_t sect) {
        uint8_t c;
        unsigned char b;
        writeStr("SUF");  //download user font command, 3 bytes
        write(sect);  //indicate which sector of user fonts to be downloaded, one byte, value 0,1,2,3, correspond to user font: 200,201,202,203
        delay(300);
//indicate the font's data length
#if Ver>32
        write((uint8_t) (lon / 256));  //MSB
        write((uint8_t) (lon % 256));  //LSB
#else
        write((uint8_t) (lon % 256));  //LSB
        write((uint8_t) (lon / 256));  //MSB
#endif
//pure font's data that compatible with u8glib, you can use exist u8glib font, or convert it by using program or our online tool
        b = 0;
        for (int j = 0; j < lon; j++) {
            c = pgm_read_byte_near(data + j);
            write(c);
            if ((++b) == 64) {
                b = 0, delay(80);  //after 64 bytes of data sent to the module, wait 80ms, to let the module write data to internal flash
            }
        }
    }
 
You can see the MSB/LSB sequence of 2 bytes to indicate the data length are different before V3.2, in old version than V3.2, it's LSB/MSB, and we changed it to MSB/LSB in all newer version. 
You can use:
 
#define Ver 35    //firmware version is V3.5
 
at the beginning of you source code to indicate the version of firmware on the display module.

 

RE:User font download fail

Thanks a lot for your fast answer.

I know there are a lot of fonts I can get on the net. But in my case, I can't use them regardless size. The UC I use has a little free space and I can't add it a full set of chars (max 600 bytes). My needs are very limited : only display 0..9 chars/values from a (little) medium size custom font. Its' why I asked if you have in your box, a little set of chars I can try.

1.8" colour serial Oled display - V3.1.
LSB/MSB order is OK, as I said.

I see you have doubled delay between each 64 bytes packets... On my side I used 50 ms (more the 40 ms you specified in your manual).

Appart that, I'll send you the font file I created with your tools, at specified email.

Thanks !

RE:User font download fail

 Yes, here is a 3x4 font only contain number:

const unsigned char u8g_font_04b_03bn[136] = {
  1,5,6,0,255,5,0,0,0,0,42,58,0,5,255,5,
  0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50,
  64,128,4,49,65,224,2,17,33,128,2,85,101,8,16,32,
  64,128,2,69,85,240,144,144,144,240,2,37,53,192,64,64,
  64,64,2,69,85,240,16,240,128,240,2,69,85,240,16,240,
  16,240,2,69,85,144,144,144,240,16,2,69,85,240,128,240,
  16,240,2,69,85,224,128,240,144,240,2,69,85,240,16,32,
  64,64,2,69,85,240,144,240,144,240,2,69,85,240,144,240,
  16,112,3,19,35,128,0,128};
You can try to use it for test.

RE:User font download fail

Thank you a lot !

I'll try it and come back for feedback.

RE:User font download fail

Now works with your little font data's and also with mine (tested in "201" user space) !

Problem was due to not enough idle time between each 64 bytes packets sending.
I finally fixed this delay at 100 ms, as data's are no so large and because time is not critical for us (we upload font one time, before let device to users).

Not sure, but this "more time delay needed" seems to be linked to the fact that we use UART to download data...

Well, all is OK now,
Thanks for your good support !

Copyright Digole Digital Solutions, 2008-2017. All rights reserved.
Powered by Victor Sun