LCD-Smartie / LCDSmartie

The New Official LCD Smartie Repository (LCD Smartie Lazarus port)
GNU General Public License v2.0
33 stars 5 forks source link

Text fields are not recognizing foreign characters. #7

Closed limbo666 closed 1 year ago

limbo666 commented 1 year ago

In my previous LCD Smartie installation I used plugins to display foreign characters by creating custom character on their configuration file. e.g by using the Search and Replace plugin

The textboxes on LCD SMARTIE was able to recognize the characters probably using UTF formatting. Now the these texts is not recognized thus, the connection with these plugins is "broken".

stokie-ant commented 1 year ago

I think I might have sorted this but can you give me an example of the characters that don't display properly so I can test them

limbo666 commented 1 year ago

Tested on 5.5.3.6 again. Greek characters are not recognized Way to replicate: Extract the dll from zip into LCD Smartie plugins folder. Place the omit.ini to C: drive (that's shoudl be C:\omit.ini) Use the following line in your configuration: $dll(sandr,2,ΑΒΓΔΘΛΞΠΣΥΦΨΩ,)

If this works this should display this should display ΑΒΓΔΘΛΞΠΣΥΦΨΩ on virtual display or your LCD screen, In my case a line of question marks are displayed. This probably because the LCD Smartie doesn't get the correct character from the line and this cannot trigger the correct translation on the sandr.dll to generate the custom characters assigned to each letter.

questionmarks

SEARCH AND REPLACE.zip

stokie-ant commented 1 year ago

It seems the problem was with DNBridge.dll but the omit.ini you sent has no mapping for the characters ΑΒΓΔΘΛΞΠΣΥΦΨΩ so I quickly made some edits

image_2023-04-22_025841003

My display has mappings for Σ and Ω but the virtual display doesn't so they show as 6 and 4. I have extended the virtual font set but not filled in the data so let me know if there is any that should be in there.

Try this out. Let me know if it works DNBridge_x32.zip DNBridge_x64.zip

limbo666 commented 1 year ago

Yes! these DNBridge files are fixing the problem. Now we have the expected result. (BTW the ini is correct, it works in pairs of Search and Replace and I have all the Greek letters assigned to their equivalent character or custom character). GREAT WORK - KEEP ON!

limbo666 commented 1 year ago

Well It seems that I spoke too early. The situation is still tricky and now I don't really know where problem lies. While the new DNBrdge seems to solve the issue on the program interface and display correctly the characters when I'm using physical display the result is different under the same system with the very same configuration. Please note that the physical display can display these character (under the very same line) in old versions of LCD Smartie.

Program: untitled

Actual Result: 20230422_161734

Furthermore testing the same settings on my laptop the situations is completely different. Even on the program dispaly the result is not correct. Screenshot 2023-04-22 161506

Any ideas?

stokie-ant commented 1 year ago

Lets see if we can narrow this down. This smartie exe will output a debug.log for plugin loads and variable resolves. Run it for the minimum time as the file will grow very fast LCDSmartie-dbg-x64.zip

limbo666 commented 1 year ago

I have used the dbg executable to get the logs and I'm back with the results. First of all the issue with LCD Smartie hanging on my desktop PC (reported here https://github.com/stokie-ant/lcdsmartie-laz/issues/9) is gone with this executable.

  1. On my desktop PC the translation seems to be done correctly the characters are displayed as expected on program interface. image The log file is here: debug1(desktop).log System specs: Desktop

  2. On my laptop the character translation still fails although I used the same settings and the same pieces of software. Screenshot 2023-04-23 120522 The log file is here: debug2(laptop).log System specs: Laptop

Unfortunately the I'm not able to verify that these characters are displayed correctly on LCD hardware since both display types (FTDI and WiFi based on ESP8266 μC) I have handy are not supported by the executable. (FYI the dll files are here: displays.zip) The project page of WiFi driver is here: https://github.com/eeyrw/LcdTcpDll

Trying to use them I get warning messages about compatibility not compatible Wireless not compatible FTDI

stokie-ant commented 1 year ago

Sorry about the late reply. I've been really busy lately. I'll take a look and see if it could be some optimisation causing the issue. The incompatible dll message usually means smartie is 64 bit but the plugins is 32 bit. I'll see about changing the message to reflect that and I'll clone that repo and see about porting it to 64 bit

stokie-ant commented 1 year ago

From laptop.log Param 1: ΑΒΓΔΘΛΞΠΣΥΦΨΩ Param 2: Result: ΑΒΓΔΘΛΞΠΣΥΦΨΩ

Obviously the plugin should have replied with custom char lines

From desktop.log Result: $CustomChar(1,31,16,16,16,16,16,16,0)$Chr(176)$CustomChar(2,4,10,10,17,17,17,31,0)$Chr(158)$CustomChar(3,4,10,17,21,17,10,4,0)$Chr(131)$CustomChar(4,4,10,10,17,17,17,17,0)$Chr(132)$CustomChar(6,31,17,17,17,17,17,17,0)$Chr(134)$CustomChar(8,17,21,21,14,4,4,4,0)$Chr(136)$CustomChar(8,14,17,17,17,14,0,31,0)$Chr(136)$CustomChar(7,31,16,8,4,8,16,31,0)$Chr(135)

There might still be a problem with DNBridge so here is DNBridge.dll compiled with a different charset support. I don't know if that will make a difference. If not I'll have to have DNBridge dump the character bytes it is processing.

I've built LCD_TCP_MINGW_DLL 64 bit. It seems to work but I can't test it. Do you know where the FTDI_LCD.dll is from?

Lastly LCDSmartie.exe with the optimizations turned down a notch to see if that fixes your hang/crash DNBridge.zip LCD_TCP_MINGW_DLL_x64.zip LCDSmartie_exe.zip

limbo666 commented 1 year ago

Well this is surely a step forward. While the virtual display give the correct result (which I believe means that LCD Smartie detects the characters and plugin functionality) image the physical display running under the LCD_TCP_MINGW_DLL_x64.zip display plugin fails to display the characters. image

Even the following simple custom characters calling are not displaying anything on the physical screen (while the LCD smarftie emulated screen displays the custom characters) $CustomChar(1,17,17,14,0,10,0,17,14)$Chr(176) $CustomChar(1,17,17,14,0,10,0,17,14)$Chr(176) $CustomChar(3,14,17,10,0,21,17,14,4)$Chr(131) image

Any change to fix the plugin ?

stokie-ant commented 1 year ago

I think I know what's wrong here. There was some code in the display write procedure that wouldn't compile under lazarus. It mapped custom locations to a display dll defined location. LCD_TCP needs that mapping. Let me see what I can come up with to replace it

stokie-ant commented 1 year ago

Give this one a spin for me please LCDSmartie_exe.zip

limbo666 commented 1 year ago

I just tested the x64 flavor. SUCCESS! image

Thank you for you efforts. Now i have to fix my sandr.dll since I just discovered a tiny bug on its functionalities :-)