gaetano-guerriero / pypjlink

PJLink is a standard for controlling data projectors.
Apache License 2.0
10 stars 16 forks source link

CLSS command non-standard reply #1

Open alisonken1 opened 8 years ago

alisonken1 commented 8 years ago

FYI - I maintain the pjlink code for OpenLP (http://openlp.org) and one thing that has come up is on certain projectors (Optima was the projector reported), do not completely follow the spec.

PJLink specification:

(send) %1CLSS ? (reply) %1CLSS=1

Optima X351 reply:

(send) %1CLSS ? (reply) %1CLSS=Class 1

Gummibeer commented 7 years ago

Isn't this an issue that should be reported to Optoma?

The pjlink protocol has a very accurate specification:

In both the %1CLSS ? command should just return a single integer.

alisonken1 commented 7 years ago

I believe Optoma would have had to make a manager-level decision on that reply - so not sure if contacting Optoma would result in anything. Especially on any equipment they've already sold.

Since OpenLP is volunteer staffed, I'm not sure how much we would be able to affect Optoma (or rather, their parent company) policy on conforming. I also don't know if contacting JBMIA would be any better.

In our case, I just coded a second check on that just to work around it and made a note in the code.

p.s. - Thanks for the heads up on PJLink 2 - I've been waiting for them to publish so I can start updating OpenLP with the new standards.

On Fri, May 5, 2017 at 2:58 AM, Tom Witkowski notifications@github.com wrote:

Isn't this an issue that should be reported to Optoma?

The pjlink protocol has a very accurate specification:

In both the %1CLSS ? command should just return a single integer.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/gaetano-guerriero/pypjlink/issues/1#issuecomment-299426684, or mute the thread https://github.com/notifications/unsubscribe-auth/AAu2kI4B_ovQ0xddr0suTzkHCwphIBxaks5r2vKpgaJpZM4JitGC .

--

Gummibeer commented 7 years ago

I was able to reproduce the problem and also informed Optoma about this, and also another bug.

To affect the sold ones you have to install the latest firmware for your model - you can get it from Optoma (I think just via direct contact).

In our fork (https://github.com/absolutehh/pypjlink) I've setuped the basic things for pjlink Class2 - you also can use it, atm just vie the get method itself - there are no aliases cause our model here just supports Class1. If you have a Class2 one I would be thankful to get feedback if this change works in general, if yes I can add the missing aliases.

alisonken1 commented 7 years ago

I don't have access to class 2 projector yet, so I'm kinda stuck with the default spec (like I did with class 1).

I also have a class 1 emulator in python I created to test my pjlink code - if you want to have a look at it https://github.com/alisonken1/pyProjector

I'll be updating it with class 2 functionality in the near future as well.

On Fri, May 5, 2017 at 6:20 AM, Tom Witkowski notifications@github.com wrote:

I was able to reproduce the problem and also informed Optoma about this, and also another bug.

To affect the sold ones you have to install the latest firmware for your model - you can get it from Optoma (I think just via direct contact).

In our fork (https://github.com/absolutehh/pypjlink) I've setuped the basic things for pjlink Class2 - you also can use it, atm just vie the get method itself - there are no aliases cause our model here just supports Class1. If you have a Class2 one I would be thankful to get feedback if this change works in general, if yes I can add the missing aliases.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/gaetano-guerriero/pypjlink/issues/1#issuecomment-299462712, or mute the thread https://github.com/notifications/unsubscribe-auth/AAu2kFkdEjKB5PDV5W1hWETPviqlR7tlks5r2yI1gaJpZM4JitGC .

--

alisonken1 commented 7 years ago

Hello Tom - got another one for you.

apparently, BenQ projectors return "CLSS=Version1" so we have another manufacturer that is a deviant from the standard.

I've modified my code in OpenLP to just use a regex to filter out non-digits to account for the differences.

import re

prefix, class, cmd, data = received[0], received[1], received[2:6], received[7:]

try: pjlink_version = re.findall('\d', data)[0] except IndexError:

In case of no digits found

<... process no valid version found here ...>

--