When the LCDProc server comes up some of the previous text that was on the display is still there.
Some because it seems that any leading white spaces that are sent show up and overwrite whatever character was there from the previous screen, but not any trailing spaces.
example:
I start LCDd and I see the boot screen for the 635.
The server screen then appears but the trailing character are unchanged.
I editing the Goodbye message in LCDd.conf to pad the line with white spaces but they don't show up. However if I use another character say "*" for example they do show up and write out.
I pulled down the CystalFontz CLI code from their website and modified the output so that it would send out white spaces at the end of the line (instead of "<<<") and that works.
My conclusion then is that the CFontzPacket driver isn't handling trailing white spaces. Has anyone else run into this?
Thanks.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have just checked with my CFA-635 and do not see this behaviour.
LCDd uses two buffers for drawing that are filled with space characters initially. LCDd only sends changed portions of a line skipping any leading / trailing identical parts (with are spaces on startup).
But if the skipped portions of the screen are actually not empty, they are not erased.
But this should not happen because LCDd does issue a 'hardware_clear' command before drawing anything on the screen. If I remove that line from the code, I see the behaviour you describe.
So, which version of LCDproc are you using? And how old is your device?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I pulled down the source and followed the instructions to build a .deb file. My os is Linux version is Debian 7.0 Wheezy.
I'm now running:
LCDd - LCDproc Server Daemon, 0.5.5
However I'm still experiencing the same issue. All I changed in the config was:
Driver=CFontzPacket...##CrystalFontzpacketdriver(forCFA533,CFA631,CFA633&CFA635)##[CFontzPacket]#SelecttheLCDmodel[default:633;legal:533,631,633,635]Model=635#Selecttheoutputdevicetouse[default:/dev/lcd]Device=/dev/ttyUSB0#Settheinitialcontrast[default:560;legal:0-1000]Contrast=350#Settheinitialbrightness[default:1000;legal:0-1000]Brightness=1000#Settheinitialoff-brightness[default:0;legal:0-1000]#Thisvalueisusedwhenthedisplayisnormally#switchedoffincaseLCDdisinactiveOffBrightness=50#ReinitializetheLCD's BIOS on driver start. [default:no;legal:yes,no]Reboot=yes# Enable the USB flag if the device is connected to an USB port. For# serial ports leave it disabled. [default:no;legal:yes,no]USB=yes# Very old 633 firmware versions do not support partial screen updates using# 'SendDatatoLCD'command(31).Forthosedevicesitmaybenecessaryto#enablethisflag.[default:no;legal:yes,no]#OldFirmware=yes#OverridetheLCDsizeknownfortheselectedmodel.Usuallysettingthis#valueshouldnotbenecessary.#Size=20x4#Overridethedefaultcommunicationspeedknownfortheselectedmodel.#Defaultvaluedependsonmodel[legal:19200,115200]#Speed=115200
There was an issue with the init.d script where grep wanted [] not however for my testing I was just executing /usr/sbin/LCDd -f
Thanks for your help :)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
So there's some progress:
I'm back the version in the Debian repository 0.5.2.
I have two init scripts that run on start up. One is the LCDd and the other is a script for my client perl script.
After a reboot I see the LCD boot screen and then it goes right into the client screen with the same issue with some characters not starting.
Now a work around was to enable the Hello message and put a character in ever spot of the LCD. If I start my script after the Hello screen appears then characters get written correctly and no character from the previous screen stick around.
However on bootup this message never gets a chance to show up before my client screen starts drawing right away.
One more thing is that I change the ServerScreen to blank and if I stop my client script some of the character from the boot menu remain even on the blank screen! It seems that the ONLY character that like to stick around are the ones from the LCD boot screen. Are they special?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Putting something in the Hello message is one way of doing this by configuration. It should be sufficient to put some other character then 'space' into the very first and very last column.
If you can build LCDproc from source you may also change in file 'server/drivers/CFontzPacket.c' the line
1. Install any necessary driver for the display.
2. Go to http://www.crystalfontz.com/software/635WINTEST.html and dowload 635_WinTest.exe
3. When running the program, it will tell you the hardware / firmware version of your device.
4. In the 'Packet Debugger' you can select '6 = Clear LCD Screen' command and send that packet.
This is the command that LCDproc issues after initializing the driver. If this command does not clear the screen then something is wrong with display settings or even worse.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'll try these suggestions in the next few weeks to see if they fix the issue. So far displaying a Hello message is working for now.
If anyone else has this issue and are trying to get their client screen to execute on startup using update-rc.d it doesn't work to well. It seems like although LCDd starts and the client screen gets added shortly after I was still getting characters sticking around because the Hello message wouldn't be displayed in time before the first screen showed up.
My solution was just remove the startup service "update-rd.d -f LCDd remove" which I did to my script as well. Then I just added them to the rc.local file with some generous sleeps in between to be sure the Hello message displayed before the first screen showed up.
I'll report back when I've tried your suggestions.
Thanks!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
When the LCDProc server comes up some of the previous text that was on the display is still there.
Some because it seems that any leading white spaces that are sent show up and overwrite whatever character was there from the previous screen, but not any trailing spaces.
example:
I start LCDd and I see the boot screen for the 635.
The server screen then appears but the trailing character are unchanged.
I editing the Goodbye message in LCDd.conf to pad the line with white spaces but they don't show up. However if I use another character say "*" for example they do show up and write out.
I pulled down the CystalFontz CLI code from their website and modified the output so that it would send out white spaces at the end of the line (instead of "<<<") and that works.
My conclusion then is that the CFontzPacket driver isn't handling trailing white spaces. Has anyone else run into this?
Thanks.
I have just checked with my CFA-635 and do not see this behaviour.
LCDd uses two buffers for drawing that are filled with space characters initially. LCDd only sends changed portions of a line skipping any leading / trailing identical parts (with are spaces on startup).
But if the skipped portions of the screen are actually not empty, they are not erased.
But this should not happen because LCDd does issue a 'hardware_clear' command before drawing anything on the screen. If I remove that line from the code, I see the behaviour you describe.
So, which version of LCDproc are you using? And how old is your device?
LCDd - LCDproc Server Daemon, 0.5.2
Let me pull down the source and build it. Also I just purchases this device. v1.1 is printed on the board.
I pulled down the source and followed the instructions to build a .deb file. My os is Linux version is Debian 7.0 Wheezy.
I'm now running:
LCDd - LCDproc Server Daemon, 0.5.5
However I'm still experiencing the same issue. All I changed in the config was:
There was an issue with the init.d script where grep wanted [] not however for my testing I was just executing /usr/sbin/LCDd -f
Thanks for your help :)
So there's some progress:
I'm back the version in the Debian repository 0.5.2.
I have two init scripts that run on start up. One is the LCDd and the other is a script for my client perl script.
After a reboot I see the LCD boot screen and then it goes right into the client screen with the same issue with some characters not starting.
Now a work around was to enable the Hello message and put a character in ever spot of the LCD. If I start my script after the Hello screen appears then characters get written correctly and no character from the previous screen stick around.
However on bootup this message never gets a chance to show up before my client screen starts drawing right away.
One more thing is that I change the ServerScreen to blank and if I stop my client script some of the character from the boot menu remain even on the blank screen! It seems that the ONLY character that like to stick around are the ones from the LCD boot screen. Are they special?
Putting something in the Hello message is one way of doing this by configuration. It should be sufficient to put some other character then 'space' into the very first and very last column.
If you can build LCDproc from source you may also change in file 'server/drivers/CFontzPacket.c' the line
to something like
If possible you can do another test on windows:
1. Install any necessary driver for the display.
2. Go to http://www.crystalfontz.com/software/635WINTEST.html and dowload 635_WinTest.exe
3. When running the program, it will tell you the hardware / firmware version of your device.
4. In the 'Packet Debugger' you can select '6 = Clear LCD Screen' command and send that packet.
This is the command that LCDproc issues after initializing the driver. If this command does not clear the screen then something is wrong with display settings or even worse.
I'll try these suggestions in the next few weeks to see if they fix the issue. So far displaying a Hello message is working for now.
If anyone else has this issue and are trying to get their client screen to execute on startup using update-rc.d it doesn't work to well. It seems like although LCDd starts and the client screen gets added shortly after I was still getting characters sticking around because the Hello message wouldn't be displayed in time before the first screen showed up.
My solution was just remove the startup service "update-rd.d -f LCDd remove" which I did to my script as well. Then I just added them to the rc.local file with some generous sleeps in between to be sure the Hello message displayed before the first screen showed up.
I'll report back when I've tried your suggestions.
Thanks!