No announcement yet.

Newbie Using Workshop 4

This topic is closed.
  • Filter
  • Time
  • Show
Clear All
new posts

  • #76
    Hey Paul

    had a look at

    very impressed so many applications thanks heaps

    so is there a tutorial for these messages genie messages mentioned yesterday

    for example let’s say the serial message o want to create contains the speed zone value of 70 and so I want to create the message that tells the display to place the value of 70 at the location where the zone digit container is place.


    • #77

      This may help

      If you read from page 16 it gives an explanation on how the message is built

      In your project the bytes to send for Leddigits1 to display 100 would be

      0x01 0x2F 0x01 0x00 0x64 0x4B

      Broken down, 0x01 means WriteObject, 0x2F is the object type (Leddigits), 0x01 is the Leddigits index, 0x00 0x64 is the 16bit value to be sent and 0x4B is the checksum

      The checksum in this command is calculated as 0x01 XOR 0x2F XOR 0x01 XOR 0x00 XOR 0x64

      I hope this helps

      Best regards



      • #78
        I will be trying out your tweek for the editor

        before I do. I note I cannot change the font style / size in the GUI ??? Also wanting to sent the text to bold as bold if will increase brightness slightly and every little bit helps


        • #79
          Hi Do you have a component that will allow for the detection of the angle of the display eg if its placed flat on a surface ( screen facing to the sky ) vs 1 screen on an angle lets say 45-90 degrees (laying flat is 0 degrees)

          Reason for asking is if the super bright screen is not bright enough i am thinking of having it mounted on a backing plate that will allow the driver to lift the screen so its facing them during the day ( not needing for content to be mirrored ) and then when it detects its laid flat the the content is mirrored so it can reflect into the windscreen at night and operate as a HUD


          • James_4DSystems
            James_4DSystems commented
            Editing a comment
            Use a tilt sensor, or mercury switch, or similar and feed it into a GPIO of the module and switch your views accordingly based on its trigger. Its not something we sell, but entirely possible to do with some coding. Or just make a push button on your display to change the view and store it on the uSD card or something and read it back at startup as to what orientation it needs to be.

        • #80
          Click image for larger version  Name:	4807D53E-B7F4-4657-A33B-E2A94B93EFED.jpeg Views:	0 Size:	93.3 KB ID:	73137Click image for larger version  Name:	E805BA02-FF31-42EA-BDDE-70D6C5D575D4.jpeg Views:	0 Size:	90.8 KB ID:	73136 I have just tested the SuperBright and it’s not readable in direct sunlight please see 2 images

          my question is 1. Is it possibly the cigarette lighter USB I am connecting to is not strong enough 5v

          2. that super bright setting is not displaying at max
          despite code showing max

          please see 2 photos

          The number on the screen you see is a cheap $30 head up display from China connected to my obd2 port and clearly the brightness of that display is strong enough to be readable in full sun

          the second photo shows the display facing me where you can clearly see the information

          regrettably not so when it’s facing the windscreen

          are there any plans for a significantly bright display that would suit HUD in daylight full sun ???

          Attached Files
          Last edited by SpeedlessAustralia; 13 August 2020, 02:02 PM.


          • #81
            Is it possibly the cigarette lighter USB I am connecting to is not strong enough 5v
            Unlikely. Check the specs of it vs the Datasheet current requirements for the display and see if it provides enough, but given its working it would seem unlikely. Try a bench supply of 5V and if its brighter with that, that will give you full information then.

            that super bright setting is not displaying at max despite code showing max
            What 'superbright' setting are you referring to? There is no superbright setting. Superbright just means the LEDs are brighter or there are more LED's in the backlight of the display than a standard brightness display. The range of output is still 0-15 like other modules, just that setting 15 on a SB display is brighter than setting 15 on a standard display.

            The Chinese display you are comparing to is an LED Segmented display, not a TFT LCD. You are comparing 2 totally different technologies.


            • #82
              Hi James I was meaning thr display i am using is a SuperBright display in your range and the setting I meant it was set at 15 contrast in the code


              • James_4DSystems
                James_4DSystems commented
                Editing a comment
                Yes I understand, but you said its not displaying at max despite the code showing max. What do you mean by this. How do you know its not displaying max, what are you comparing it to? If you have your code set to 15, then that is the max. If you have a Superbright display, then that is the maximum brightness it is capable of outputting.
                If your comparison is solely the Chinese LED Segment display, and the fact its not as bright as that, then this is not a valid comparison.

                I am curious why you think the display is not showing max despite your code showing max - I don't understand this statement you made.

            • #83
              Hi James sorry I was simply posing a question re of its possibly not displaying its max brightness. I was hoping that SuperBright display would have been as bright as the segmented led as clearly the segmented one offers the level of brightness I need for the HUD.

              so in short I am seeking a solution that will allow me to design my own hud layout that will be bright enough to be readable in full sunlight as the cheaper Chinese segmented hud shown.

              Any words of wisdom as to what path I may need to take to achieve this would be greatly appreciated.


              • James_4DSystems
                James_4DSystems commented
                Editing a comment
                I'm sorry, but we have never used a TFT LCD to shine its reflection into a car windscreen in full sunlight before - I am not sure how you will achieve the result you are after, which is why this was going to be a bit of a test to see if it would work out on your part.

                I assume you purchased the gen4-uLCD-43D-SB module, is that correct? I have looked over the whole thread and I havent actually seen it mentioned what you actually purchased.
                Can you take a clear picture front side and then back side of it, just to ensure there is nothing untoward going on there which might reduce brightness.

                That said, when you take a photo of a powered display, its very difficult to know what you are actually looking at as cameras adjust brightness levels etc.

                I personally would have thought you would be able to see a reflection, as using my cell phone screen in the off state as a reflective surface, and a standard 43D display running your application, I can clearly see the reflection - but this is not in the sun.

            • #84
              Hi Paul

              With respect to the genie messages is it possibly to send a series of them in a single packet or does it’s message need to be sent to the display separately

              if they can be grouped together what is the max number of messages can be grouped together and what is the delimeter character used to separate the messages


              • James_4DSystems
                James_4DSystems commented
                Editing a comment
                The Genie Protocol is clearly defined in the ViSi-Genie documentation, as well as the Application Note which Paul linked. In response to the 6 bytes you send, the display will reply with an ACK or NAK accordingly. It is best to wait for the response before sending the next packet. There is no delimiter, these are individual packets with a response to the packet. If you were to send a bunch of packets without waiting for a reply, if you had a problem with one in the middle, you would not know what went wrong and the whole system could get out of sync.

                If you make a new project in ViSi-Genie as an example, and then have it connected to your PC and use the GTX tool, you can send messages to the display and see the response you get and how the protocol works right before your eyes.

            • #85
              Thanks James

              As my project is heads up display I am hoping to have the display respond with vehicle speed in real time at the same level of responsiveness as the digital speedo on the vehicle dashboard.

              Can the display process the messages back and forth at the speed necessary to be responsive as a digital speedo on a dash.

              i appreciate your time and advice given to date and that of Paul.


              • #86
                Hi Jame the photos as requested

                yes it’s the 43 SB unit

                also when the display is in shade during the day it’s readable as a hud bright enough.

                Attached Files


                • #87
                  Hi Paul

                  Have spent most of the weekend working through this project and application notes samples

                  Reviewing the template code i think there seems to a fare bit of generic code that could be removed given it seems to reference touch screen and button functionality

                  Not game enough to remove the code relating to that as i am not sure if i will end up removing code that's needed for my basic project

                  i have been able to figure out how to add code that reads the digital inputs and depending on hi / low it changes an object by creating separate test projects

                  i am needing to incorporate the digital input into this project and have it change the form being displayed when digital input high is detected and returns back to main form when digital input is low

                  I am wondering if its best to keep working on your template or would it be easier for me to start from scratch to create the same layout, add the secondary form (that only displays when digital high is detected), add the serial input functionality via the custom messages to be sent to the display via rs232 adaptor.

                  Once all is operational then apply the necessary the necessary code to mirror the output.

                  Please see attached zip for current state of project.

                  Thanks for your assistance as well as James to date i would not have been able to get to this point without your help MUCH APPREIATED

                  Regards Claude

                  Attached Files


                  • SpeedlessAustralia
                    SpeedlessAustralia commented
                    Editing a comment
                    i have spend all day () 8 hrs + ) trying to follow the app notes dealing with form swaps and reading serial data and the samples in the app notes do not represent anything like the code i am using that has gotten me to this point.

                    i have tried starting from scratch in designer but then cannot find how to save in genie or visi genei so i can then see the code for me to work form basics

                    So i am at a loss how to progress any further i understand want i need to do but getting to beyond where i am at seems beyond me despite me determination to do so

                    I need to be able to swap between 2 forms dependant on digital input as the trigger to display second form whislt digital input is high then returning to default main form

                    have genei formated messages (i understand the format needed to indicated where each value is placed on the screen to be sent to the display via serial input (using the rs232 adaptor) attached to the display

                    not sure how to proceed given the code i am viewing is far more complex than the samples and does not appear to contain similar syntax such as Func Form(0) and Func Form(1) yet i have those 2 forms being displayed ??? how i cannot see the func form syntax in the code yet the forms display it totally confusing.

                  • James_4DSystems
                    James_4DSystems commented
                    Editing a comment
                    Hi Claude

                    Sadly this is the price you pay for starting with Genie and going to ViSi. Genie does a bunch of stuff for you automatically, this is why when you save the code as ViSi it is extremely complex, as the system generates the code automatically for you in the most efficient way, it was never designed to be used as a project base to then modify, but its one tool we have if it is required.

                    You cannot go from Designer to Genie, it doesn't work like that. Designer is a non graphical environment, where you don't have a WYSIWYG type editor to show what you might see on the screen and then handle the code for that. In Designer, you literally write everything from the Functions found in the Internal Functions Manual. ViSi is a step forward and gives you the WYSIWYG editor, does some of the work for you, but then its up to you to paste the code it generates for the graphics accordingly in your project. You still need to know where to put the pasted code and how to handle it.
                    Genie then goes a step further again and gives you no code to edit (unless you buy PRO and use Genie Magic), so everything is done for you, and is designed to talk to a Host over the Genie protocol.

                    So the position you are in now is not a normal position. You have decided you want Genie to do most of the work for you, and to use the Genie protocol to talk to your host, but you want to add extra code. So really, you should be buying PRO and using Genie Magic. However, the other option is you start from Visi and you work from Application Notes and examples and build your project up that way, but it does mean you need to write a serial protocol yourself to talk to your host using Functions from the Internal Functions Manual, as there will not be any Genie to do it for you.

                    You need to figure out what path you want to take, which ever way you do it, you need to understand what is going on. There is going to be manual code required no matter which path you go down, as Genie cannot do everything you want automatically, and ViSi cannot do everything you want in terms of doing the Serial Protocol for you, or handing the forms/pages for you automatically. Even with Genie Magic, you need to understand what is going on and where to insert the manual code to achieve what you want.

                    With respect to the Form/Page handling, again Genie does all this for you, but in reality there is no such thing as a Form/Page, you have 1 screen which has widgets and graphics on it, and to change those items to show something else you need to clear what you had on there and put new graphics on it, and disable the previous ones.
                    Genie does all this for you, which then makes handling new Forms easy. But with ViSi you need to do this manually.
                    You effectively have 1 'piece of paper' and you want to change what you are showing on that 'piece of paper', so you need to erase what you have drawn, and draw the next items, etc.
                    Basically you have graphics on top of graphics, and you need to write the code to show the ones you want at any given time, which effectively gives you the notion of having multiple pages.
                    The application note aims to help achieve this, but when you are dealing with a Genie converted ViSi project, you are in a complex position to start with, and its not really something I would recommend for someone new to 4DGL.

                    All I can suggest is you start another project and try in ViSi, place your graphics/widgets, understand how the code works for these and where you need to place the code snippets, what you need to parse to each of them etc, and then move on to building a serial handler to suit your serial device and get some basic comms working and Data flowing.

                    Everything you should need is in the Application notes and the Manuals, but its just a case of understanding what is going on now I think, and starting on a slate which you can understand, rather than starting from a complex auto generated ex-Genie project and trying to understand that, and trying to relate that back to examples. Also have a look at the ViSi Samples supplied with Workshop to get an understanding on how to do the stuff you need to do, and then separately look closely at the genie main loop serial handling code in your current project, to see how the serial handling works. Ignore the rest, just look at the main loop and how the serial handing works for genie. This might give you some more ideas as to how it all works.

                • #88
                  Wow, thanks for your time, patience and dedication to write such a very detailed response to the dilemma I find myself in.

                  i will do as you suggest start a new project in visi and progress from there.