Parsing Projector Feedback Data
TUTech
Junior Member
I have some Feedback data that I have to parse. First I have the Running Sense that tells me if the projector is idling, on, warming or cooling and the Input and then I have the Lamp information.
The Running Sense looks like this. $20,$85,$00,$D0,$01,$SS,$II,CKS where $SS is the Power Status and $II is the Input.
$SS $00=Idle, $03=Warming, $04=Power On, $05=Cooling
$II $01=HDMI, $11=Component, $06=Video, $0B=S-Video
I can do
DATA_EVENT [dvProj]
{
STRING:
{
IF (LENGTH_STRING(data.text))
{
SELECT
{
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$00",1)):
PPwr=P_OFF
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$03",1)):
PPwr=P_Warming
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$04",1)):
PPwr=P_On
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$05",1)):
PPwr=P_Cooling
}
}
}
}
That will tell me the running sense, but to check the input I would have to do the Select / Active 16 times. Is there an easier way to sort out the input by looking at the 7th bit? Can I put a wild card or something in for bit 6?
Select
{
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$??, $01",1)): //Input HDMI
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$??,$11",1)): //Input Component
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$??,$06",1)): //Input Video
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$??,$0B",1)): //Input S-Video
}
Then I have to do the Lamp Time, which looks like this. $23,$8C,$00,$04,$XX,$XX,$XX,$XX, CKS Where $XX is the Lamp Time in Seconds. I have to take bits 5 to 8 and reverse them, convert from Hex to Decimal and add them up.
$23,$8C,$00,$04,$30,$2A,$00,$00,CKS to 00 00 2A 30 equals 10800 seconds or 3 hours.
The Running Sense looks like this. $20,$85,$00,$D0,$01,$SS,$II,CKS where $SS is the Power Status and $II is the Input.
$SS $00=Idle, $03=Warming, $04=Power On, $05=Cooling
$II $01=HDMI, $11=Component, $06=Video, $0B=S-Video
I can do
DATA_EVENT [dvProj]
{
STRING:
{
IF (LENGTH_STRING(data.text))
{
SELECT
{
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$00",1)):
PPwr=P_OFF
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$03",1)):
PPwr=P_Warming
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$04",1)):
PPwr=P_On
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$05",1)):
PPwr=P_Cooling
}
}
}
}
That will tell me the running sense, but to check the input I would have to do the Select / Active 16 times. Is there an easier way to sort out the input by looking at the 7th bit? Can I put a wild card or something in for bit 6?
Select
{
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$??, $01",1)): //Input HDMI
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$??,$11",1)): //Input Component
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$??,$06",1)): //Input Video
ACTIVE (FIND_STRING(data.text,"$20,$85,$00,$D0,$01,$??,$0B",1)): //Input S-Video
}
Then I have to do the Lamp Time, which looks like this. $23,$8C,$00,$04,$XX,$XX,$XX,$XX, CKS Where $XX is the Lamp Time in Seconds. I have to take bits 5 to 8 and reverse them, convert from Hex to Decimal and add them up.
$23,$8C,$00,$04,$30,$2A,$00,$00,CKS to 00 00 2A 30 equals 10800 seconds or 3 hours.
Comments
-
Odd... Looks an aweful lot like the programming practical
-
Ok, exam's can be a little 'weird', but normally there is no reason why you should want to know the input while the projector is off, warming or cooling.
One way would be to use the SELECT ACTIVE for the power on, remove that string (REMOVE_STRING) and use the next byte (GET_BUFFER_CHAR) for a switch case to determine the input.
I'm not going to provide code: that's cheating...
-
It is. I'm making progress and got a lot of it to work. I don't expect someone to do it for me. Looking for a hint.
When looking at feedback strings can I put something in there where I don't care what bit 6 is but I need to know what 7 is?
This is going to take some time to figure out how to process the Lamp Time.
David
-
Richard, Thanks again. Of course, Why didn't I think of that. Who cares what the input is if the projector is off!
I overlook the obvious.
-
Sounds like the old LightThrower 3000!
Here is my suggestion: You notice that there is a constant set of bytes that is the header for the returned string. Look for these bytes and when you find them remove them from data.text. At that point you know the response is one that you are looking for and the data you want is only a byte or two away. There are lots of string manipulation commands available to use other than just Find_String.
-Danny -
richardherman wrote: »but normally there is no reason why you should want to know the input while the projector is off, warming or cooling.
Why not? The input and power are completely different and unrelated states. If the projector is off, and someone turns it on, it may be useful to know what the current input is so you don't need to change it if its already on that input, thus preventing a screen blank/refresh, or input OSD menu, etc. My policy is always get and store as much data as you can about whatever device you are controlling.
Paul -
Why not? The input and power are completely different and unrelated states. If the projector is off, and someone turns it on, it may be useful to know what the current input is so you don't need to change it if its already on that input, thus preventing a screen blank/refresh, or input OSD menu, etc. My policy is always get and store as much data as you can about whatever device you are controlling.
Paul
Because most projectors don't response to much else than a power query when not on. And even if they did it wouldn't be of much use, since your not projecting anything. Of course you should ask the input state as soon as the projectors allows for it, that's when it turn on, or soon thereafter.
Richard
Categories
- All Categories
- 2.5K AMX General Discussion
- 922 AMX Technical Discussion
- 514 AMX Hardware
- 502 AMX Control Products
- 3 AMX Video Distribution Products
- 9 AMX Networked AV (SVSI) Products
- AMX Workspace & Collaboration Products
- 3.4K AMX Software
- 151 AMX Resource Management Suite Software
- 386 AMX Design Tools
- 2.4K NetLinx Studio
- 135 Duet/Cafe Duet
- 248 NetLinx Modules & Duet Modules
- 57 AMX RPM Forum
- 228 MODPEDIA - The Public Repository of Modules for Everyone
- 943 AMX Specialty Forums
- 2.6K AMXForums Archive
- 2.6K AMXForums Archive Threads
- 1.5K AMX Hardware
- 432 AMX Applications and Solutions
- 249 Residential Forum
- 182 Tips and Tricks
- 146 AMX Website/Forums