974 views
in GUI Development by

Hello

Before going to the question, please make the following assumptions.

1. Strings, which i wanted display at the LCD are stored at the external flash.

2. I have working APIs to fetch those strings.

3. I also have APIs to change the Language.

4. I can fetch the strings using an enum.(I will pass enum as a parameter to the function, it will return me respective string from the choosen language)

5. What ever the string I have given at the canvas in Embedded Wizard are all dummy strings.

6. I have implemented the device class(to fetch the strings) and it works.

Following are my questions.

1) I don't want to display the string, which i have given at the screen design / canvas. Instead, it has to fetch string from my API(which access the string from the external flash). How can i do that ? What is the right way ?

Ans : ???

2. I wanted some how to link the strings at canvas to an enum, so that i can fetch the respective string from the external flash using my API. How can i do that ? Or is there any suggestion on this ?

Ans: ???

3. I also have strings from Arabic, Chinese, Japanese, Russian, Greek , etc.. languages and obviously I have TTF font installed at my system. How can I ensure that those font characters are taken into the generated code ? In the end, all strings from different languages has to be visible.

Ans: ???

----

Maharaja

1 Answer

+1 vote
by
 
Best answer

Hello Maharaja,

first of all, let me emphasize, that you plan to replace a lot of functionality which is already available and build-in within Embedded Wizard. If you implement your own string management, you have to implement your own code for initialization of text items and your own logic for language selection and language changes. All these aspects are completely covered by the Code Generator if you manage your strings within Embedded Wizard.

Before answering your questions, let me refer to the following articles:

Of course, if your strings are located within a flash (e.g. serial flash, I2C flash) that is not accessible within the address range of the CPU, you have to implement your own management of the strings. I assume that this is the case in your environment.

Now let me answer your questions:

1.) Within the different components that contains text items, you can implement an Init() method to load the strings via your API and to assign the result to the different text items. By using the macro $prototyper you can ensure that your API calls are only executed on the target. So you can still prototype your application with the dummy strings. 

2.) If you generate your strings by using an excel document, you can also generate enums for all strings. Maybe the VBA macro within this article gives you some ideas how to generate that. 

3.) If you manage your strings within an excel document (e.g. the one provided in the above link) you can use the generated font ranges for the font resources within your project.

I hope this helps...

Best regards,

Manfred.

by
Thanks for your support, I've got some idea.

It was helpful.

But, giving font range doesn't seems to work.

I have given range as "0x20-0xFF", but when I receive the string as "Störung", It displays "Stâ–¯rung" at LCD.

I am expecting all the fonts in range from 0x20 to 0xFF are already present at the code. Other than range should I take care of anything else ?
by

Maybe you can first try to display the string "Störung" by setting the default value of the text view to this string. If you can see the string correctly within the Composer, then the font contains the accented character - otherwise the original true type font does not provide the character or the font range is not properly set.

Maybe the string provided by your API is not converted correctly - please have a look to the section 'Be careful when exchanging strings".

Additionally, let me refer to the article "How to exchange strings between GUI and a device?" which explains all these aspects in detail. 

Embedded Wizard Website | Privacy Policy | Imprint

...