Zalman HD135 VFD (VlSys Mplay) (2 Viewers)

cybrmage

Portal Pro
May 30, 2007
498
86
Home Country
Canada Canada
00 00 00 ...
AD 00 00 10 18 04 00 00 00 00 00 00 00 0C 1B 14 *...............
08 00 00 00 00 06 1B 05 02 00 00 01 03 07 09 00 ................
00 00 00 04 18 10 00 00 00 12 10 14 13 08 04 03 ................
00 09 01 05 19 02 04 18 00 00 09 07 03 01 00 00 ................
00 .


This seems to be important....

Well... maybe...

I have determined that the 0xAD command is used to set the custom characters (Oh... By the way... The display supports custom characters!)...

They are used by MHC to display the large numbers that it uses for it's clock display, radio channel display, etc.

For the time being, the custom characters are not needed, nor are they used by the driver.


so... here is the command set so far:

0xA0 - Clear Screen
0xA1 { 0xZZ - 1 byte of column position data } - Set cursor to line 1, column 0xZZ (where z = 0x00 to 0x13)
0xA2 { 0xZZ - 1 byte of column position data } - Set cursor to line 2, column 0xZZ (where z = 0x00 to 0x13)
0xA4 0x76 { 8 bytes of date/time data } - Set the displays internal clock ??
0xA4 0x7D - Initialize fan controller
0xA5 { 1 byte of display brightness data } - Set display brightness
0xA7 { 20 bytes of character data } 0x00 - Send data to display
0xAA 0xAA - Identify device. mr300 returns "MZ4", mr700 returns "MZ5" (different command set)
0xAC { 2 bytes of speed data } - Set fan speed
0xAD { 64 bytes of custom character data } - Define custom characters
0xAF - Request temperature readings ?? (returns two bytes of data)

0x00 0x00 0x00 - sync?? break???
0xA4 0xA4 - ????? part of restart after hibernate
0xA4 0x7E - set power mode to "passthrough" ?????? part of shutdown
0xAE 0xAE - set power mode to "ACPI" ????? part of display shutdown


MODEL IDENTIFICATION STRINGS
-----------------------------------------
LE2 - M.Play 202
ME4 - M.Play 202 Plus
ME5 - M.Play 202 Plus R2
ME7 - M.Play MP300
MP4 - M.Play 202
MP5 - M.Play 202 Plus
MP7 - M.Play Blast
MR2 - M.Play Blast
MZ4 - M.Play MP300
MZ5 - M.Play MP700 (not supported by M.Play Home Center)

Regards,
CybrMage
 

Herr R aus B

MP Donator
  • Premium Supporter
  • December 22, 2007
    241
    28
    Berlin
    Home Country
    Germany Germany
    Great - that releases me from the suspicion to be some nerd ;)

    Ummm... NO COMMENT!! 8-}

    WOT?!?!?!?!? :eek:

    :D

    Can you provide a snoop on the serial port showing both data sent to the display and data received from the display when the MHC software starts up? It would be nice to know what data is sent back from the display during the initialization.
    It's already there. It's one of these COM port logs i attached earlier -> MHC initializing VFD complete.txt

    The brightness should be controllable by setting the contrast slider on the ExternalDisplay configuration screen.
    I'm gonna test this tomorrow as I actually hvae some recordings going on... Didn't realize it, it seems :)

    Now of course it would be great if the driver would be able to set fan speeds

    Do the fan speed control sliders on the advanced configuration screen not work?
    They are disabled - no matter what check box I check or uncheck.

    I think, that reading the temperatures is done sending the VFD a 0xAF and get two bytes in return, where the first byte seems to be the second sensor and the second byte the first sensor.

    The question is, how do we distinguish between data sent from the display in response to a tempurature request, and data send by the display as the result of a remote button being pressed?
    That should be easy. As I wrote in that file setting fan speeds.txt the temperature values seem to be linear and reflect degrees celsius. Thus, there must be a certain range of valid temperature values. The simplest assumption might be, that the highest remote value which is less than 0xB5 (seems to represent 31°C) marks the lower border of that range and the lowest remote value which is greater than 0xBB (seems to represent 37°C) marks th upper border of that range. Now if we look at the remote codes they all are less then 0xA0 and I would rather guess, that everything between 0x00 and probably 0x9F marks a remote code and everything over 0xA0 is a temperature. Maybe. On the other hand side one could also think, what kinda tmperature values might be intersting. I would excude everything under 0°C (freezing point of water) unless we are taking inuit with HTPCs into respect :D Assuming, the temperature values are linear and match degree celsius values a range from 0°C through 100°C (water turns to steam), than this would result in a range between 0x96 and 0xFA - if my analyzing of data and temperatures displayed by MHC is correct :D Worst case scenario would be, that I take some icce cubes and a hair dryer und find out about the capacities of these temperature sensors... I mean it - but as the pictures below show, getting the case out of the rack and opened would be a little bit annoying due to all the cables and stuff :D

    Ich weiss nicht lesen oder schreiben Deutsch!!
    Can't be - your grammar is somewhat adventurous, but i clearly understood you :D

    All I'm doing right now is ignoring the 0x7E returned with the button code.

    From what I could determine from your logs... Each remote button press generates two bytes... the key code and 0x7E. So the question is... does holding down a button result in two bytes of 0x7E, or a single byte of 0x7E after getting the initial two bytes for the button press?
    Good question... next question? :D

    That's probably the best way to handle the "repeat" of remote buttons...
    :D

    But... I need to know exactly what is sent by the display...

    Please install the new driver (I have added increased logging to the received data routines)... Then run mediaportal... The press and hold one button on the remote... then shutdown MediaPortal and post the mediaportal.log. Thanks.
    No problem at all - but I will have to wait until tomorrow, as there are recordings running at the moment. And also I think I should move my butt towards some friends to have some champaign and get into that new year - its still far away from you, but it's some 3 hours left over from 2007 here now :D

    Yeah... Good luck with that!!... The IR receivers that come with some TV and Satellite cards are very problematic... many will only work with the remote that they are bundled with.... You are better off with a cheap Microsoft MCE remote bundle (The old version... silver colored remote not the one with a Vista-Only black remote) if you want ease of use.
    This must be the same as the one shipped with the old XBox - unfortunately one can't use it at the PC. Does this MCE remote bundle have an external IR receiver? Thanks for the hint - I'am gonna crawl ebay...

    It could be... The quick test I did indicates that the ExternalDisplay handler is sending the text to the display driver with the umlauts already changed to "?"... I haven't yet found where this translation is taking place... still looking.
    Good look - oops - luck! :D

    Your long comments are NOT taken as complaining or nagging... The information presented is very helpful and appreciated... (much better that the usual "the driver doesn't work... fix it" comments that I usually get!)
    Well - I am the one who needs help - so it's a noral thing to supply as much information as possible... And remember - I have been coding 7 or 8 years - and I had a lot of customers and bosses who said, there's a problem, I can't describe it, but you have to fix it - and you better also fix all problems that I might have later on... :D

    And - i am learning and it's interesting :)

    Btw interesting - why am I always replacing thes process DLL? There is a subdirectory LCDDrivers - I assumed there would be all the device specific drivers and the ProcessPlugin DLL just is intended to call the selected display driver and provides funcionality to administrate the respective drivers. Shouldn't there be a MR300.DLL or MPLAY.DLL in this subdirectory?

    Anyways... here is a new version...

    I've added the extra commands to the shutdown procedure and extra logging to the serial receive routine... Hopefully it will give the info needed to get the button repeat to work.
    Great I will test everything tomorrow when you're assumably still asleep maybe with a headache due to new year activities. I'll report as usual and also will do this testing for the 0x7E stuff.

    Until then have fun with the year change and we'll talk next year again (time again for these flat kinda "let's defer it to next year" jokes)!

    Axel
     

    cybrmage

    Portal Pro
    May 30, 2007
    498
    86
    Home Country
    Canada Canada
    It's already there. It's one of these COM port logs i attached earlier -> MHC initializing VFD complete.txt

    Ok... There were so many... I guess I missed it 8-}

    They are disabled - no matter what check box I check or uncheck.

    That is now fixed... (I made a last minute change [ put the box around the fan sliders] that broke the UI and missed it in testing) Sorry.. 8-}


    That should be easy. As I wrote in that file setting fan speeds.txt the temperature values seem to be linear and reflect degrees celsius.

    Sure... Hide temperature data in a file marked Fan speed!!! ( I didn't look at that file because you provided the info in your post)...

    That makes sense now.

    Can't be - your grammar is somewhat adventurous, but i clearly understood you :D

    Ahhh.... The wonders of Google translation 8-}

    No problem at all - but I will have to wait until tomorrow, as there are recordings running at the moment.
    WHAT?!?!?!?!? - You actually use MediaPortal??? Shameful!!! 8-}

    This must be the same as the one shipped with the old XBox - unfortunately one can't use it at the PC. Does this MCE remote bundle have an external IR receiver?

    The XBox remote may be similar... but I don't think the IR receiver will work with a PC. The kit comes what a remote and a USB IR receiver. There are two versions of the remote, US and International... You can find both on eBay... You'll probably want the international one... It has the extra "Teletext" buttons (Red, Green, Yellow, Blue buttons below the number keys).

    why am I always replacing thes process DLL? There is a subdirectory LCDDrivers

    The ProcessPlugins.dll contains ALL the process plugins (AudioScrobbler, Disk Management, External Display, MusicDB, etc) and ALL the native drivers. The process plugins are a dintinct project within the MediaPortal source code, and are compiled into a single DLL.

    One of those drivers is the LCDHype wrapper. The wrapper scans the LCDDrivers directory, and loads the libraries that it finds there. These libraries are drivers for specific displays for the third-party LCDHype program.

    Trust me... you do not want the Mplay driver as a LCDHype DLL... Having a native driver allows for far more functionality.


    Great I will test everything tomorrow

    Well.. then I should probably try to remember to attach the updated version. 8-}

    Regards, And HAPPY NEW YEAR!!
    CybrMage
     

    Herr R aus B

    MP Donator
  • Premium Supporter
  • December 22, 2007
    241
    28
    Berlin
    Home Country
    Germany Germany
    It's already there. It's one of these COM port logs i attached earlier -> MHC initializing VFD complete.txt

    Ok... There were so many... I guess I missed it 8-}
    Me terribly sorry, sa! :)

    That is now fixed... (I made a last minute change [ put the box around the fan sliders] that broke the UI and missed it in testing) Sorry.. 8-}
    Nevva! :D Seems to work! At least setting one fan to 100% gave me nice sounds... And these are Zalman fans - shouldn't they be extremely quiet???

    Sure... Hide temperature data in a file marked Fan speed!!! ( I didn't look at that file because you provided the info in your post)...
    Well yes - I am a worm in the dust, not worth being mentioned at all, I am nothing, a joke, etc...

    like that? ;)

    Can't be - your grammar is somewhat adventurous, but i clearly understood you :D

    Ahhh.... The wonders of Google translation 8-}
    See - I am doing the whole thing here using google. Honestly I have not the slightest idea what I am typing here... :D

    WHAT?!?!?!?!? - You actually use MediaPortal??? Shameful!!! 8-}
    This seems to be the post of apologies, confessions and whatever -

    YES, I CONFESS! I AM A MEDIAPORTAL USER!!!

    Albeit I am still struggling a litle bit, because I am still used to XBMC which is a little bit more stable and offers a lot more functionality except you cant use it for recording TV.

    why am I always replacing thes process DLL? There is a subdirectory LCDDrivers

    The ProcessPlugins.dll contains ALL the process plugins (AudioScrobbler, Disk Management, External Display, MusicDB, etc) and ALL the native drivers. The process plugins are a dintinct project within the MediaPortal source code, and are compiled into a single DLL.

    One of those drivers is the LCDHype wrapper. The wrapper scans the LCDDrivers directory, and loads the libraries that it finds there. These libraries are drivers for specific displays for the third-party LCDHype program.

    Trust me... you do not want the Mplay driver as a LCDHype DLL... Having a native driver allows for far more functionality.
    OK - now I am enlightened - I thought it was more modular. Is this putting everything in one box due to performance? Or did it just grow organically? I think I've read on the MP home page, that they will redesign the entire plugin interface and so on. Interesting... I would have a bunch of uestions... :) But maybe that's something for a different thread...

    Regards, And HAPPY NEW YEAR!!
    CybrMage
    Same to you - hope you made it in one piece :)

    I read all your comments and will answer in separated posts as these here get so long that I somehow lose the overview of what is where :)

    Axel

    Great - I didn't count on the power of auto merge... OK - one post then...

    Custom Characters

    00 00 00 ...
    AD 00 00 10 18 04 00 00 00 00 00 00 00 0C 1B 14 *...............
    08 00 00 00 00 06 1B 05 02 00 00 01 03 07 09 00 ................
    00 00 00 04 18 10 00 00 00 12 10 14 13 08 04 03 ................
    00 09 01 05 19 02 04 18 00 00 09 07 03 01 00 00 ................
    00 .


    This seems to be important....

    Well... maybe...

    I have determined that the 0xAD command is used to set the custom characters (Oh... By the way... The display supports custom characters!)...
    Thanks for the hint. I think I already found out how this is being done. I will do some testing, sniffing and comparing and then write a short documentation - should be coming up soon.

    The standby problem

    ... is still not fixed. Sending windows to sleep works perfectly. I had to change your default definition a little bit:

    Code:
    <button name="PwrOff" code="65">
    	<action layer="0" condition="*" conproperty="-1" command="POWER" cmdproperty="STANDBY" sound="back.wav" />
    </button>
    But then the display is switched off completely and of course wouldn't react any longer. Getting windows alive again with the "regular" actions works perfectly and as soon as MP is on screen the display goes online as well.

    Now - I dunno, what exactly you are doing. But following the COM port log sending pc to standby 1.txt, the MHC software seems to release the COM port - maybe this is crucial. And if you are releasing the COM port, maybe that's wrong :) Now what? :D I interpret the log file as if they really close it:

    015813: I/O Request (DOWN), 30.12.2007 17:01:29.437 +0.0
    IOCTL_SERIAL_PURGE: Purge requests
    Purge mask=TXABORT: Read requests, RXABORT: Receive buffer

    015814: I/O Request (UP), 30.12.2007 17:01:29.437 +0.0
    IOCTL_SERIAL_PURGE: Purge requests

    015815: I/O Request (DOWN), 30.12.2007 17:01:29.437 +0.0
    IOCTL_SERIAL_SET_WAIT_MASK: Set current event mask
    WaitMask=None

    015817: I/O Request (UP), 30.12.2007 17:01:29.437 +0.0
    IOCTL_SERIAL_SET_WAIT_MASK: Set current event mask

    015818: I/O Request (DOWN), 30.12.2007 17:01:29.437 +0.0
    IOCTL_SERIAL_PURGE: Purge requests
    Purge mask=TXCLEAR: Write requests, RXCLEAR: Write buffer

    015819: I/O Request (UP), 30.12.2007 17:01:29.437 +0.0
    IOCTL_SERIAL_PURGE: Purge requests

    015820: Close Request (DOWN), 30.12.2007 17:01:29.437 +0.0
    Buffer size: 0x0 bytes

    015821: Close Request (UP), 30.12.2007 17:01:29.546 +0.109
    Buffer size: 0x0 bytes
    Status: 0x00000000


    The result is a dimmed display showing the standby message (see attached picture) - but that is definately set before releasing the COM port. Any idea? :D

    Repeated remote codes

    I did it like you asked me for and attached the log file to this post here. Btw - your interpretation of hex codes in the log file is quite interesting :D

    Your command listing

    Great! :D One is missing. I sometimes find things like this:

    015779: Write Request (DOWN), 30.12.2007 17:01:28.796 +2.125
    Buffer size: 0x3 bytes
    00 00 00 ...

    015780: Write Request (UP), 30.12.2007 17:01:28.796 +0.0
    Buffer size: 0x3 bytes
    Status: 0x00000000

    015781: Write Request (DOWN), 30.12.2007 17:01:29.203 +0.406
    Buffer size: 0x2 bytes
    AE AE ®®

    015782: Write Request (UP), 30.12.2007 17:01:29.203 +0.0
    Buffer size: 0x2 bytes
    Status: 0x00000000

    This is taken from the log of setting the PC to standby. The three 0x00 are the first three bytes after the MHC software got the standby command (if you look in the original log you'll find a "PwrOff" followed by a "OK" - that is, because when MHC is running, it displays a query dialogue, that has to be acknowledged with OK, before windows is being sent to standby - one of those "are you sure? I mean, are you really sure??? REALLY?????" lets-annoy-the-user-dialogues...) These three 0x00 occur in several situations - didn't make up my mind about that yet. Maybe some reset?

    Additional stuff

    Just a few questions:

    • How do I configure MP that in video playback mode the OK button could be used to toggle the display mode (i.e. stretched, normal, original, zoom, etc - like the S key on the keyboard does)
    • How do I watch streaming TV given an URL? I don't mean these scripts to watch apple trailers or whatever - I just want to tell MP a plain URL (http, mms, whatever) and then watch the stream. In XBMC this is simply done by putting a file containing the URL and having the ending *.strm. Opening this file in "My videos" will pass the URL to MPlayer and that one will display the stream then. Is there some similar mechansm in MP?
    _____________________________________________

    And now I am going to take care of these custom characters :D

    Axel
     

    cybrmage

    Portal Pro
    May 30, 2007
    498
    86
    Home Country
    Canada Canada
    Just a quick post for now... 8-}

    Please try this new driver... see if it still works... (and please post the mediaportal.log if it doesn't)...

    I changed the shutdown to more closely resemble the MHC log.
    I changed the serial processing routines. (using some of the assumptions we discussed last year). Hopefully this will allow extraction of the temperature data as well as remote control data... I also added more logging of the received data (hopefully this will allow a better picture of the datastream from the device...

    I also added another experimental feature... Automatic fan control (based on temperature)... (this goes along with the changes to the serial routine...

    I'll do a better replay later today!! 8-}

    Regards,
    CybrMage


    PS: you haven't posted the "sending pc to standby 1.txt" log file! 8-}
     

    Herr R aus B

    MP Donator
  • Premium Supporter
  • December 22, 2007
    241
    28
    Berlin
    Home Country
    Germany Germany
    Custom chracters

    Here is what I've found out about the custom characters:

    • the VFD allows for defining eight custom characters
    • each character is displayed in a matrix of eight rows and five columns
    • to define one row, one byte is used
    • within this byte the five lowest bits are used to switch on and off pixels
    The attached file dolby.txt (plain ascii text) which came with the MHC software contains the definition for the user defined display content as shown in the attached picture. Following the above statements, the given hex code values for the eight characters can be transformed to respective bitmaps:
    Code:
    [FONT="Courier New"]
    #1 #2 #3 #4 #5 #6 #7 #8  |  #1    #2    #3    #4    #5    #6    #7    #8
    00 1F 1F 07 1F 1F 1F 1F  |  ····· ●●●●● ●●●●● ··●●● ●●●●● ●●●●● ●●●●● ●●●●●
    00 13 19 04 00 00 00 01  |  ····· ●··●● ●●··● ··●·· ····· ····· ····· ····●
    00 11 11 05 13 14 08 15  |  ····· ●···● ●···● ··●·● ●··●● ●·●·· ·●··· ●·●·●
    00 11 11 05 0A 14 0E 09  |  ····· ●···● ●···● ··●·● ·●·●· ●·●·· ·●●●· ·●··●
    00 11 11 05 0A 14 0A 09  |  ····· ●···● ●···● ··●·● ·●·●· ●·●·· ·●·●· ·●··●
    00 11 11 05 13 17 0E 09  |  ····· ●···● ●···● ··●·● ●··●● ●·●●● ·●●●· ·●··●
    00 13 19 04 00 00 00 01  |  ····· ●··●● ●●··● ··●·● ····· ····· ····· ····●
    00 1F 1F 07 1F 1F 1F 1F  |  ····· ●●●●● ●●●●● ··●●● ●●●●● ●●●●● ●●●●● ●●●●●
    
    character definition        character bitmap representation
    [/FONT]

    And this matches exactly the special characters shown in the picture I took of the VFD.

    According to the COM port log your guess for the command was almost right. But it seems as if it is just AD {64 bytes character definition}:

    000213: 01.01.2008 13:01:20.234 +3.0

    00 00 00 ...

    000215: 01.01.2008 13:01:20.250 +0.015

    AD 1F 01 15 09 09 09 01 1F 00 00 00 00 00 00 00 *...............
    00 1F 13 11 11 11 11 13 1F 1F 19 11 11 11 11 19 ................
    1F 07 04 05 05 05 05 04 07 1F 00 13 0A 0A 13 00 ................
    1F 1F 00 14 14 14 17 00 1F 1F 00 08 0E 0A 0E 00 ................
    1F .

    And once again here are these three 0x00...

    Analyzing this and comparing it to the definition it seems, as if setting the custom character definitions is done by sending the following sequence:

    00 00 00
    AD
    {8 bytes for character #8}
    {8 bytes for character #1}
    {8 bytes for character #2}
    {8 bytes for character #3}
    {8 bytes for character #4}
    {8 bytes for character #5}
    {8 bytes for character #6}
    {8 bytes for character #7}


    I wonder, why character #8 is first - but that is what I am reading from the COM port log... Writing the characters to the display then is easy as well - 0x01 represents character #1, 0x02 is character #2 and finally 0x08 is character #8. This matches the COM port log, when the logo is set:

    000217: 01.01.2008 13:01:20.281 +0.031

    A1 00 A7 02 03 04 05 06 07 08 20 44 69 67 69 74 ¡.§....... Digit
    61 6C 20 20 20 20 20 00 al .

    000219: 01.01.2008 13:01:20.281 +0.0

    A2 00 A7 35 2E 31 20 53 79 73 74 65 6D 20 20 20 ¢.§5.1 System
    20 20 20 20 20 20 20 00 .


    What I found was, that MHC transfers the character definition each time before it displays the custom characters. I wonder whether that's a must or not.

    That's all about these custom characters. Could be used to display the MP logo though :D maybe like this:

    Code:
    [FONT="Courier New"]
    #1 #2 #3 #4 #5 #6 #7 #8  |  #1    #2    #3    #4    #5    #6    #7    #8
    03 18 1F 1F 03 18 0E 0E  |  ···●● ●●··· ●●●●● ●●●●● ···●● ●●··· ·●●●· ·●●●·
    0F 1E 1F 1F 0F 1E FF 1B  |  ·●●●● ●●●●· ●●●●● ●●●●● ·●●●● ●●●●· ●●●●● ●●·●● 
    1F 1F 1F 1F 1C 07 FF 0E  |  ●●●●● ●●●●● ●●●●● ●●●●● ●●●·· ··●●● ●●●●● ·●●●·
    1F 1F 1F 1F 1C 07 FF 00  |  ●●●●● ●●●●● ●●●●● ●●●●● ●●●·· ··●●● ●●●●● ·····
    1F 1F 1F 1F 1C ß7 FF 00  |  ●●●●● ●●●●● ●●●●● ●●●●● ●●●·· ··●●● ●●●●● ·····
    1F 1F 1F 1F 0F 1E FF 00  |  ●●●●● ●●●●● ●●●●● ●●●●● ·●●●● ●●●●· ●●●●● ·····
    1F 1F 0F 1E 03 18 FF 00  |  ●●●●● ●●●●● ·●●●● ●●●●· ···●● ●●··· ●●●●● ·····
    1F 1F 03 18 00 00 0E 00  |  ●●●●● ●●●●● ···●● ●●··· ····· ····· ·●●●· ·····
    
    character definition        character bitmap representation
    [/FONT]

    Applying this to the MHC software using mediaportal.txt as definiton file produces the following COM port traffic:

    000002: 01.01.2008 18:03:07.984 +1.750

    00 00 00 ...
    000004: 01.01.2008 18:03:08.0 +0.015

    AD 0E 1B 0E 00 00 00 00 00 03 0F 1F 1F 1F 1F 1F *...............
    1F 18 1E 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 1F 0F ................
    03 1F 1F 1F 1F 1F 1F 1E 18 03 0F 1C 1C 1C 0F 03 ................
    00 18 1E 07 07 07 1E 18 00 0E 1F 1F 1F 1F 1F 1F ................
    0E .
    000006: 01.01.2008 18:03:08.031 +0.031

    A1 00 A7 01 02 01 02 05 06 20 20 20 20 20 20 20 ¡.§......
    07 07 08 20 20 20 20 00 ... .

    000008: 01.01.2008 18:03:08.031 +0.0

    A2 00 A7 03 04 03 04 20 20 20 20 20 4D 65 64 69 ¢.§.... Medi
    61 50 6F 72 74 61 6C 00 aPortal.

    The result can be watched in the attached picture of the VFD.

    (the attached files dolby.txt and mediaportal.txt must be renamed to dolby.cg and mediaportal.cg to be used for use with the MHC software)
     

    Herr R aus B

    MP Donator
  • Premium Supporter
  • December 22, 2007
    241
    28
    Berlin
    Home Country
    Germany Germany
    Just a quick post for now... 8-}

    Please try this new driver... see if it still works... (and please post the mediaportal.log if it doesn't)...
    Unfortunately the remote now is being completely ignored (see attached file MP remote is being completely ignored.log). I then sent windows to standby just using the MP menu. Of course as the remote is being ignored, i had no chance to wake it up using the remote (see the attached file MP manual standby and try to wake up.log).

    Anyway - you still switch the VFD off somehow. The remote indicator LED shows, that there are signals coming in - but that's it. I also posted the forgotten COM port log for that standby sequence... There really must be some command saying: "Listen to the remote control and if there is any activity, simulate a short press of the PwrOn button". Just to give you an impression of the VFD's wiring:

    Code:
     PwrOn button at the case   ----------->  MR300 VFD ----------> mainboard PwrOn connector

    So the VFD should simulate the PwrOn button in this scenario.

    I also added another experimental feature... Automatic fan control (based on temperature)... (this goes along with the changes to the serial routine...
    Looks fine to me. Seems to work as well - i experimented a little bit with it. On what speed will the fans run when between OFF and 100% treshold?

    PS: you haven't posted the "sending pc to standby 1.txt" log file! 8-}
    See - I am an old fart and we old farts tend to forget things :D Here it is... :) I also posted the configuration log after installing the new driver.
     

    cybrmage

    Portal Pro
    May 30, 2007
    498
    86
    Home Country
    Canada Canada
    And these are Zalman fans - shouldn't they be extremely quiet???
    ANY case fan running at full speed will make some noise... That's the reason that most of the HTPC cases have either a manual (eg: Antec fusion case) or automatic (eg: HD135 case) fan controls.

    Well yes - I am a worm in the dust, not worth being mentioned at all, I am nothing, a joke, etc...

    like that? ;)
    Well... OK.... who am I to argue 8-}


    See - I am doing the whole thing here using google. Honestly I have not the slightest idea what I am typing here... :D
    I do hope that you are kidding!!!

    Is this putting everything in one box due to performance? Or did it just grow organically?
    I don't know... I didn't program the ExternalDisplay plugin... I just write drivers...

    I think I've read on the MP home page, that they will redesign the entire plugin interface and so on. Interesting...
    I believe that would be "MediaPortal II"... It's in early alpha, and I haven't had a chance to look at it yet.



    Custom Characters

    Custom characters are simple...

    The display expects ALL custom character to be defined when sent the "define characters" command.
    Each character is a 5x8 matrix defined by 8 bytes of character data...
    Each byte defines a horizontal row of pixels... The three high order bits are ignored...

    IE:

    the data { 0x00, 0x00, 0x0E, 0x11, 0x11, 0x11, 0x11, 0x11 }
    defines a character


    ........ 0x00
    ........ 0x00
    ....***. 0x0E
    ...*...* 0x11
    ...*...* 0x11
    ...*...* 0x11
    ...*...* 0x11
    ...*...* 0x11



    So, the "define custom characters" command breaks down like this


    AD ; the "define custom characters" command
    00 00 0E 11 11 11 11 11 ; The definition data for custom character 0
    01 01 01 01 01 01 01 00 ; The definition data for custom character 1
    00 00 0E 01 01 01 01 01 ; The definition data for custom character 2
    00 00 01 11 11 11 11 0F ; The definition data for custom character 3
    00 00 0E 10 10 10 10 10 ; The definition data for custom character 4
    00 00 01 01 01 01 01 01 ; The definition data for custom character 5
    0E 10 10 10 10 10 0E 00 ; The definition data for custom character 6
    0E 01 01 01 01 01 0E 00 ; The definition data for custom character 7


    To display a custom chatacter, you send the index of the custom character { 0 - 7 } to the display with the 0xA& command.

    IE:
    sending {0x05, 0x03, 0x20, 0x41, 0x42, 0x43 } to the display will show "{custom character 5}{custom character 3} ABC".

    The MHC program displays the large clock by redefining the custom characters before sending the two lines that make up the display.

    The standby problem

    ... is still not fixed.

    Still working on it... 8-}


    I had to change your default definition a little bit:

    Code:
    <button name="PwrOff" code="65">
    	<action layer="0" condition="*" conproperty="-1" command="POWER" cmdproperty="STANDBY" sound="back.wav" />
    </button>

    That's the beauty of having a configurable remote!!!... Some people want a button to do one thing... others want something else... With it being configurable, you can "please all of the people all of the time". Would having "STANDBY" as the default be better??

    I dunno, what exactly you are doing.
    The ExteralDisplay plugin controls the driver... When it receives a standby/hibernate/shutdown message, it stops the driver... (calls the Cleanup() function)... When it gets a "resume from hibernate/standby" message, it starts the driver again... (calls the Setup() and Initialize() functions)...

    In the drivers Cleanup() function, we (try to) send the display all the commands it needs to display a shutdown message, dim the display, set it's internal clock (I do not know if it actually has one), configure it to wake the machine, etc... Then we close the port completely. The logs do dhow that the port is being closed.


    We just need to determine the correct commands to send to it to enable it to wake the machine...


    Repeated remote codes
    .
    .
    .
    Btw - your interpretation of hex codes in the log file is quite interesting :D

    I assume you are referring to the "1x26".... Don't blame me!!! That's the interpretation that the CLR is making of the data... which is extremely strange.... It means that it received a value of 0x126... but the data is only a single byte...

    Your command listing

    Great! :D One is missing. I sometimes find things like this:

    maybe... I'm not sure if the { 0x00, 0x00, 0x00 } is an actual command, an idle delay, or an end of command marker...

    It's use seems to be ambiguous... The 0xA1, 0xA2 and 0xA7 commands seem to be followed by a 0x00 end of command marker... but the other commands do not seem to be....

    The other question is about the 0xAE command... what does it do?? I see in the logs that is is sent as 0xAE, { 0xAE, 0xAE } or { 0xAE, 0xAE, 0xAE }... Are these the same command being sent multiple times, or does the number of bytes signify a different command??? (I would suspect it is the same command multiple times... but why is it sent in multiples?)



    [*]How do I configure MP that in video playback mode the OK button could be used to toggle the display mode (i.e. stretched, normal, original, zoom, etc - like the S key on the keyboard does)
    That should be rather easy... pick the button you want to use, then in the remote configuration editor, add a new action to that key (click on "new")... the click on the "no condition" entry and change it to "Window" and select the "Fullscreen Video" dropdown. The change the Action dropdown to "Key Pressed", and change the "key" (first box) to 83. Then save your changes.


    [*]How do I watch streaming TV given an URL?

    Sorry... I can't help you with that... hopefully someone else on the forum can help you with that.


    Regards,
    CybrMage
     

    cybrmage

    Portal Pro
    May 30, 2007
    498
    86
    Home Country
    Canada Canada
    I found the problem with the hex representation... I had a typo in the string format specifier...

    I also found the problem with the serial receive routine... and have rewritten it again...

    Here is a new version... The remote probably still won't work, but i've fixed the data logging and need to get information on what data is being sent to us from the display....

    Please install the new driver, run Mediaportal and then:

    1) press and release the buttons 1,2,3,4,5 and 6 on the remote (wait 1 to 2 seconds between each button press)
    2) Press and release the button 9 on the remote (then wait 1 to 2 seconds)
    3) Press and hold the button 9 on the remote... hold the button for at least 30 second.

    The shut down MediaPortal and post the logs... thanks...

    Herr R aus B: I'm going over your latest logs and will post another "fix" when i've figured something out...

    Regards,
    CybrMage
     

    Herr R aus B

    MP Donator
  • Premium Supporter
  • December 22, 2007
    241
    28
    Berlin
    Home Country
    Germany Germany
    :D why did I do all this stuff, when you already knew it - and where did you knew it from? :D anyway, there is this logo definition now :) and you seem to be wrong about the order in which the custom character definitions are transferred to the VFD. I think that's strange... (not you, but the character definition order)

    That should be rather easy... pick the button you want to use, then in the remote configuration editor, add a new action to that key (click on "new")... the click on the "no condition" entry and change it to "Window" and select the "Fullscreen Video" dropdown. The change the Action dropdown to "Key Pressed", and change the "key" (first box) to 83. Then save your changes.
    For some resaon that didn't work. I solved it like this (see also attached picture...):

    Code:
    <button name="Warp/Mouse" code="71">
      <action layer="0" condition="WINDOW" conproperty="2005" command="ACTION" cmdproperty="19" /> 
      <action layer="0" condition="WINDOW" conproperty="602" command="ACTION" cmdproperty="19" /> 
      <action layer="0" condition="WINDOW" conproperty="3001" command="ACTION" cmdproperty="19" /> 
    </button>

    Finally I realized, that clicking the CANCEL button in the remote mapping dialogue wouldn't close the dialogue...

    Anyway... Let's see what comes around from you next :D
     

    Users who are viewing this thread

    Top Bottom