Jump to content

king2

Members
  • Posts

    117
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by king2

  1. I need to paint graphs in my application, three of them, like in oscilloscope. I cannot use second layer of LTDC because I'm using 800x600 screen and FMC SDRAM, and displaying second layer makes STM32 crazy (not enough bus bandwidth).

    Should I do this completely manually or uGFX can make my life easier?

    Can you provide me with some starting point, where to start at?

    May be some code examples or advices?

    Thank you in advance!

  2. I have tried to build sample app with Studio 0.12.

    0. Same problem with dashes in image filenames, solved by renaming those files.

    But:

    1. I have created window 800x600, placed container with 800x600, and see little distance (~5px) between window and container bottom and right sides. May be it is effect of using 19200x1200 screen and 125% DPI settings in Display section of Control Panel (Windows 8.1)?

    2. Fonts in Studio and preview differs also. I can see all label text in Studio, but in preview it have cutted right side and looks different too ('record' button, for example). What should I do to get same look in both places? I have not tried it in hardware yet because I need to make cyrillic fonts.. IMHO, ability to use custom fonts and its right rendering in preview is 'must have' feature for Studio, or we will have to change coordinates and sizes of all labels in code in endless tries to get them placed right way.

    3. I have 'raised' (in Studio) labels placed over buttons (and progressbars in 'mic' button too), but If I click to button in preview, they disappears. How can I make them always raised?

    4. May be it will be useful also add to Studio possibility to make just a simple line?

    Thank you in advance!

    p.s. Sorry for big screenshots, I do not know how to make it to be appeared as previews in forum.

    screenshot1.thumb.png.c7f678eec531c57638

    screenshot2.thumb.png.c19f249055b31ea958

  3. Thanks!

    Sure I know that uGFX isn't glued to ChibiOS, in my case it is different choices, but first priority is to choose right OS.

    I have 512 kb flash only, but I have to include firmware for another two modules in main firmware to make all system to be updated with current versions, so I'm trying to reduce space everywhere..

  4. 1. Now I deciding should I switch from CMSISOS/StemWin back to ChibiOS or not, and use uGFX instead of StemWin or not (chances of uGFX was just raised :) ). But I have to try new ChibiOS USB host stack first. Next I will try to implement interface with uGFX (approx in a week). If I will decide to use uGFX, sure, I will code date/time widget and will share it with you and community.

    2, 3. OK, I understood, it looks simpler that I expected.

    4. I have SDRAM in my hardware, so I will try to have fonts compressed and uncompress it into SDRAM from firmware.

    Thanks!

  5. Hi!

    I need to solve some tasks with GIU. I will ask questions with description, may be there is a simpler way to get my tasks completed.

    My main goal is to solve my tasks without deep modifying/tuning components. Maybe my questions are dumb, so sorry in advance! :)

    If in each of cases there is a better way to do it, please tell me!

    1. [setting date and time] To set each of day, month, hour, minute and so on, I should for each of them make text label, up/down arrows, write some code to not allow user set month number 0 or 13, or 25-th hour (to get something like emWin's 'spinner' widget). Can I do it simple with uFGX?

    2. [buttons with pictures etc] I need to make square button with picture inside (green/red depending of status), and little text in it as second line. As I understand, I should use gwinButtonDraw_Image, and draw text at pre-defined coordinates inside button. Can image be replaced on-fly when needed with another? I do not need any animation of pressing process, users just presses on button, I do something inside my firmware and than I can change or not button status.

    3. Can I draw text on top of image button? For all elements, how can I define z-orders that I need?

    4. Can images and fonts be compressed in firmware?

    Thank you in advance!

  6. Hi!

    I have seen new website, great work!

    But I think it will be good for new (or potentional) users of uGFX to make a page with all elements of uFGX (may be I overlooked it?).

    For each element:

    • what this element for, short description
    • picture of element in hardware (maybe big highres photo, to see if button have gradient, for example)
    • how it can be customized using built-in possibilities and properties (with additional pictures - for each significant change of view, for example gradient or flat view for button, have it shadow or not, and so on)

    I know that it relatively big and boring work, but it will give knowledge to users who wants to know what it will get with uGFX library (we have phrase in Russia for this case: 'it is better to see one time, than 100 times to listen about').

    Something like this: https://www.segger.com/emwin-widgets.html

    I know, someone can look on demos page (with videos). But demos are result of unknown deepness of uGFX tuning, so I cannot know what I will get 'from the box'.

    Just my thoughts, may be you will find them useful.

  7. Remarks:

    1. Version 0.7 displays date where Studio was started instead of real 'built date' in 'about' window. Not sure about 0.8 yet.

    2. In 0.8 - empty window as result of loading project saved with Studio 0.7. No error was displayed, just empty window.

    3. If you will run Setup Wizard you cannot cancel it. I think it will be useful to add 'Cancel' button to first wizard window if we have path to lib already set.

  8. Sorry. English is not my native language, so I can misunderstand something.

    Did you mean as table approach like this: http://ic.pics.livejournal.com/alexio_marziano/26796211/1174807/1174807_original.png?

    If all parameters will exist in table too (as I understand, left column is parameter names and not editable, right column contains edit fields or other widgets) - table solution is better, in my opinion. Table is not "hard to use and heavy", it is just a way to display parameter names and its values, like in Excel. 1% of people who cannot intuitively understand table approach can view your video and learn in a minute where to click.

    But table is better:

    1. It is more compact

    2. It is more manageable by you, developer of Studio. Instead of placing 100500 labels and editboxes, playing with its visibility, placement and so on, you can populate table with anything you want dynamically, and this can increase design speed. You can even add some mini-script inside Studio, to simplify adding new widgets.

    Now I think that table approach will be better.

    p.s.BTW, algorithm of maintaining USER CODE comments is pretty simple:

    - find marks by mask /* USER CODE BEGIN */ and /* USER CODE END */

    - remember one not-empty line above (1) user code and one line below (2)

    - re-generate code

    - insert custom text below (1), if not found - above (2), if not found - at end of generated segment

    In this case I can place /* USER CODE BEGIN */, code and /* USER CODE END */ at any place of any generated file, and find it at same place after re-generating code. In worst case when I have changed something that was removed both above and below lines, I will find my custom code somewhere near I placed it and move it to right place.

  9. I think that current approach is better. I have used Borland Delphi in late 90th, its approach is quite good for me.

    In 90th was two main approaches about saving phone numbers in phones, Nokia/Palm like, and Sone/Outlook like. In Nokia you can add records and select type of record, mobile number, or work number. You was able to add 4 mobile numbers, for example, same to Palm, and see only what you have added.

    In Sony/Outlook there was many fields, 'work phone', 'work phone2' and so on, most of them was unused and this was horror, to find two filled fields from 40+ empty fields.

    Difference is expected percentage of fields filled. In phone numbers we have empty fields, and if we have no work number, we have no work number at all. If we have no work number, we want not to see empty field.

    But in our case we have ALL fields filled, yes, many of them by default values, but all of them have some value and not empty. So, it is more suitable for people to change existing value that keep in mind what you can potentionally do, and that you can add something and by this you will change something. It is counter-intuitive.

    In GUIBuiler I have to click on widget, right-click, select "Set font" from menu and then font parameter will be added to left table, after this I have to find parameter in left panel, click to it and set its value. Too many clicks.

    When adding new parameter user may want to see some hints about what this parameter is, in current approach we can add tooltip on mouseover.

    If you afraid that there will be too many parameters, you always can allow parameter's groups to collapse, so each group can be opened or closed, and I think that will be nice to compress parameters vertically (less vertical distance between parameters) a little.

    Spinboxes are useless there unless you have very good mouse, coordination and magnifying glass, so it can be changed to edit fields, and 'Window' can looks like this:

    Handle: [ ]

    Position: X [ 10] Y [ 10]

    Size: W [ 10] H [ 10]

    Font: [ v]

    Lock: position [x] size [x]

    Visible: [x] Snap: [x]

    I'm not sure that parent parameter needed here, because we can drag-n-drop objects, if we will able to drag-n-drop object in left tree, parent can be safely removed from right panel. Same to snap, I'm not sure if somebody will like to snap one object and not snap other, global setting will be enough as I think. And you can always change x and y manually by modifying its values. So, now we have 11 lines, it can be changed to 6 lines.

    This is just for example.

    Anyway, I think current approach is better, it can be made even better, but it is not needed to change it.

  10. Thanks!

    I just wanted to say that I do not complain about Studio, I understand that it is young and it is beta software. Its sad that I cannot use it for my current project, okay, I will wait Studio to be more complete and hope I will use it later.

    Another important thing that GUIBuilder from Segger not so young, but it still cannot set many parameters of its widgets for unknown reason. I think that developers just decided that visual tool is not important enough, and if you want to set font (for example), you will do it by yourself in code. Yes, I do, but there are many such little thing pushing user to "change - try - shift 2 pixels - try again" loop again. I hope that Studio will be better not forcing user to this at least for properties that can be easily set without black magic. :)

    Thank you for great lib and good luck in developing Studio!

    If I will have enough time, I will try to give you more feedback later.

  11. Thank you for your answers!

    My thoughts about using design tool is different from yours.

    I think that visual design tool for GUI should not be able just to generate demos, but it should support developing process at all steps.

    When I adding design to my app, I'm already have project with all hardware initialized and tested, FreeRTOS up and running, USB and FatFs working and so on. I want to add GUI lib, then design one screen, second screen, then maybe modify them, add some buttons, then develop program further, and maybe modify it later, adding buttons and functions to firmware, changing how it looks, adding more screens and dialogs. For sure, I want do it visual way, not "change, compile, try, look, repeat this 100500 times". But for now, I cannot use Studio even for making start program, because I cannot use tabset (and I need it).

    I do not know how many people using uGFX, I have heard from forums that uGFX is a good library. I tried to use it, and found that architecture, code styling and stability is pretty good, but I need visual tool to develop firmware. Studio in its current state useless for me (not all widgets in it, and it can not support developing step of design), so I have to change to StemWin library for this project. To be correct, their GUIBuilder is not best tool ever, but with it I can make start visual design, and to change it later, and I have possibility to add my own code, and my code will be respected in next code re-generation. It is very important for me, because I can make thing faster.

    I'm sure that visual tool should be able to set ALL parameters of ALL widgets, or it will be useless except for making demos.

    I'm sure that it should generate code that can be modified by user (comments with USER CODE HERE in each init section).

    So, visual tool should allow to create full interface of program, it should allow to change interface later, and it should allow user to modify generated code, and allow to re-generate code with respect to user changes (hooks, callbacks, USER CODE comments, anything that will allow change interface by user code). Without these, visual tool is just a way to test that GUI works and make programs with couple of buttons.

    Sorry, this is my thoughts about it, GUIBuilder cannot set all parameters and I do not know why. It can set font to spinbox and cannot set font to listwheel, I do not know why. Spinbox can be limited in its range in GUI, but I cannot set this range in GUIBuilder, and so on.

    You have done MUCH work to make all drivers, platforms, to make it simple but powerful library, but from user side final step is a useable visual tool.

    Please, please, please, do not switch Studio to just 'demo maker'!

    p.s. So, for this project I have switched from ChibiOS/uGFX to FreeRTOS/StemWin, because ChibiOS has no USB host support, and uGFX has no suiltable visual tool at this moment. This is sad, but I cannot wait till Christmas :( Sorry :(

  12. 1. gos_freertos.h, line 54.

    3. I got it, but even template file should be correct, isn't it? :)

    4. "GWindowObject, * GHandle" - gwin.h line 55, "point, point_t" - gdisp.h line 53.

    6. I do not know, as I understand its just generates false warnings to user while compiling.

    To be precise, it is not complains, this is just feedback that I wrote thinking it can be helpful for you and for lib (but, sure, you can ignore it if you want). :)

  13. OK, lets start.. this is warnings and errors I got while trying to compile library:

    1. gtimer.c

    Error[Pe118]: a void function may not return a value D:\Hardware\_projects\ugfx\src\gtimer\gtimer.c 111

    Declaration of function is static DECLARE_THREAD_FUNCTION(GTimerThreadHandler, arg), DECLARE_THREAD_FUNCTION = threadreturn_t via define, threadreturn_t = void via typedef.

    So, return 0 at end of void function is a error.

    2. Many places where construction const XXX const is used, what generates Warning[Pe083]: type qualifier specified more than once.

    3. init_board, read_byte, read_word (gmouse*) - empty functions that returns nothing, so Warning[Pe940]: missing return statement at end of non-void function generated. It will be better to include return statement even to sample non-void functions.

    4. "point, point_t" and "GWindowObject, * GHandle" declaration - Warning[Pe301]: typedef name has already been declared (with same type)

    5. gdisp.c: calling mf_render_aligned - Warning[Pe188]: enumerated type mixed with another type (justify).

    6. gfx.h includes gdisp_rules.h and then gdisp.h (that includes gdisp_lld_config.h). So, defining GDISP_HARDWARE_PIXELREAD in gdisp_lld_config.h will still allow gdisp_rules.h do not know about GDISP_HARDWARE_PIXELREAD and generates warnings like GDISP_HARDWARE_PIXELREAD was not defined.

    Should it be repaired?

  14. I have found that no #define GWIN_NEED_LABEL TRUE was added to gfxconf.h. I added it manually and preview.exe was compiled.

    Also I can see picture inside imagebox in preview.exe (not at design step and not on real device).

    I attached screenshot with design window.

    As you can see, container have width of 800, window size also 800, position of container is 0,0.

    But I can see a little space between right side if container and right side of window. Lower container has same problem.

    In preview everything looks ok, except that window between containers have white color, not black.

    Is it something that should not be in Studio? Sorry for my lamer questions. :)

    p.s. I have added files into my IAR project and get it compiled with countless warnings (I use STM32F429IG MCU with 7 inch capacitive display and FT5x06 touchscreen controller). I even able to see picture on screen (but with white border at edges of screen). I copied touch driver and modified read_xyz() function to read data from buffer (and update buffer only on interrupt from touch panel). So far it works and I starting to like this lib.

    So, questions again:

    0. It will be nice to correctly add GWIN_USE_LABEL to gfxconf.h

    1. Can I rotate progressbar and slidebar to make them vertical?

    2. I cannot add fonts to Studio by myself, as I understand from this thread. But how can I assign cyrillic fonts to widgets? Only assign aone of default fonts and replace it when building?

    3. I have added listbox to window, but I cannot see it nor on preview neighter on device.

    Proposals/feature request/comments:

    1. Studio generates main() function that interfere with my project's main(). It will be nice to add possibility to generate sample main() function in another .c file (which is better, so I can include it into project or just use it as sample)? Now I just delete this function on each export.

    2. Modify ugfxconf.h to include user header file in it and generate empty user header file only if such file is missing on disk, so users will be able to define RTOS type, or SDRAM start address or other custom defines.

    3. Where we can expect tabset to be added to Studio? I want to use tabset for one of windows, can I do some trick and use studio for designing tabset contents or I should wait tabset to be implemented in Studio?

    Thanks!

    screen.thumb.png.4c0412eb4f2ee92531b57b3

  15. Test project is attached to this message (with picture inside rsc folder).

    I'm not customer, and 99.9% I will not be a customer, because all my projects is just a hobby.

    But if I will get uGFX lib working and will find it best for me, I will give feedback as much as I can :)

    Thanks!

    test.zip

  16. Hello! I'm looking out for GUI that I can use for STM32/LTDC and have found your uGFX library.

    It is great that so many platforms, screens and touchpanel controllers are supported from box, in one complex solution. It is great!

    But I have some questions:

    1. I have tried to install and use cygwin/studio, but unsuccesfully :(

    I got error:

    Linking .build/preview.exe
    .build/obj/ugfx_gui.o: In function `createPageMain':
    /cygdrive/d/Hardware/_projects/biolog/console/firmware-02/Console-main/preview/ugfx_gui.c:88: undefined reference to `gwinLabelCreate'
    /cygdrive/d/Hardware/_projects/biolog/console/firmware-02/Console-main/preview/ugfx_gui.c:89: undefined reference to `gwinLabelSetBorder'
    /cygdrive/d/Hardware/_projects/biolog/console/firmware-02/Console-main/preview/ugfx_gui.c:104: undefined reference to `gwinLabelCreate'
    /cygdrive/d/Hardware/_projects/biolog/console/firmware-02/Console-main/preview/ugfx_gui.c:105: undefined reference to `gwinLabelSetBorder'
    collect2: error: ld returned 1 exit status
    d:/Hardware/_projects/ugfx/tools/gmake_scripts/compiler_gcc.mk:282: recipe for target '.build/preview.exe' failed
    make: *** [.build/preview.exe] Error 1

    May be I forgot to install something?

    2. I have tried to put imagebox and assign picture file (GIF one), but it was visually disappeared with width=height=0. Is is bug of studio or bug of me? :) After assigning width and height still no picture visible.

    3. I have tried to use studio and found not so much widgets inside :( For example, no listwheel or graph widgets (in terms of emWin), to set date and time, for example, or how can I place delimiter line between interface control groups. I understand, that studio is not so old, but maybe you can provide some roadmap?

    Thank you in advance!

×
×
  • Create New...