RS232 Protocol for the Sony VPL FX40
Stewart
Posts: 37
We are attempting to increase user access on the touch panel for a variety of controls ( zooming/shifting etc)
My problem is I do not understand the syntax in some of these strings
I know the first one turns projector on see below:
SEND_STRING VPROJ,"$A9,$17,$2E,$00,$00,$00,$3F,$9A"
The A9 is understood and I know that the 2E is the hex to turn on projector while
SEND_STRING VPROJ,"$A9,$17,$2F,$00,$00,$00,$3F,$9A" here the 2F is used to turn off projector
My real question is what is the significance of the other hex numbers and how do I interpet them
I am hoping to be able to use cursor control also but am clueless how. I have the file that gives me some RS232 control protocols but I am really struggling with what does what.
The other strings for this projector are below and I was hoping someone could decipher those also.
choose video:
SEND_STRING VPROJ,"$A9,$00,$01,$00,$00,$00,$01,$9A"
choose input C:
SEND_STRING VPROJ,"$A9,$00,$01,$00,$00,$04,$05,$9A"
I could find no correlation in the manual
Any hints for a clueless newbie?
My problem is I do not understand the syntax in some of these strings
I know the first one turns projector on see below:
SEND_STRING VPROJ,"$A9,$17,$2E,$00,$00,$00,$3F,$9A"
The A9 is understood and I know that the 2E is the hex to turn on projector while
SEND_STRING VPROJ,"$A9,$17,$2F,$00,$00,$00,$3F,$9A" here the 2F is used to turn off projector
My real question is what is the significance of the other hex numbers and how do I interpet them
I am hoping to be able to use cursor control also but am clueless how. I have the file that gives me some RS232 control protocols but I am really struggling with what does what.
The other strings for this projector are below and I was hoping someone could decipher those also.
choose video:
SEND_STRING VPROJ,"$A9,$00,$01,$00,$00,$00,$01,$9A"
choose input C:
SEND_STRING VPROJ,"$A9,$00,$01,$00,$00,$04,$05,$9A"
I could find no correlation in the manual
Any hints for a clueless newbie?
0
Comments
You probably figured out that $A9 and $9A are the Start Code and End Code,
The next 2 bytes is the item control.
The next byte is to indicate whether yo are setting or getting information $00 or $01
Next 2 bytes is the data for the item you are controlling
Next byte is the check sum and that's it.
The power command is a Sircs 15 bit $17 with $2E for ON or $2 for OFF. There is no data with this command. The input command is Item $00,$01 $00 for Video and $04 for input C.
Lens Shift is a Sircs15 bit command $17 and $72 for up and $73 for down. All of this is in the Sony Protocol.
B3 is either "set" or "get". If you're telling the projector to do something, you'll use the "set" command which is $00.
You can lookup the commands in your protocol manual to develop the strings you want. In your example, the change input to video command is
$A9 = STX
$00 = Input Cmd Upper byte
$01 = Input Cmd Lower byte
$00 = "Set"
$00 = Data1: Video Upper byte
$00 = Data2: Video Lower byte
$01 = Checksum
$9A = ETX
--John
Way cool
Thanks for the responses
I will look over and decipher tonite
Can you give me a idea of what code would be used for Zoom and cursor control?
And is cursor control the way to go?
Seems like a lot of strings to allow users to move between menus for zoom and shift. Thanks again in advance.
Couple more questions:
What does this mean?
Sircs 15 bit $17
I have a more complex string from older projectors seems kind of long....
SEND_STRING VPROJ,"$A5,$01,$00,$01,$00,$01,$03,$00,$01,$00,$01,$17,$00,$90,$08,$00,$06,$40,$54,$2E,$00,$00,$00,$B1,$5A"
Why so long
This is the URL I was sent is this upto date I cannot seems to decipher
http://www.sony.ca/projectors/user_manuals/RS232%20Protocol%20Man.pdf
Each manufacturer/device has their own protocol for speaking to their devices. Think of it like language, you can say "Turn off the light" to anyone, but if they only speak Tagalog (a language in the Philippines) they won't do anything. You'll need to say "Patayin ang ilaw". Or if they speak italian and expect you to be polite, you'd need to say "Per favore signore, spegnere la luce". The last command looks a lot longer than the first two because the language and protocols required for them to understand and listen to the command is different, just like your older command string.
The protocol manual you linked to tells you how to speak the language of the device. Section 2 tells you how to structure the command (like the grammar), and appendix B tells you what the commands are (the vocabulary).
You're looking for how to adjust the zoom... the Zoom+ command for the FX40 is listed in table 9 on pg. 50 which is titled "20-bit category" indicating that it's a SIRCS 20 command. If you look at the table on pg. 34 it tells you how to structure a SIRCS 20 command. The upper byte of the item number is $19, the lower byte of the item number is from the table, the Data upper and lower are both $00. Here's how the command would look based on the command block they list:
"$A9, $19, $6A, $00, $00, $00, $7B, $9A"
In Netlinx it becomes SEND_STRING dvProjector, "$A9, $19, $6A, $00, $00, $00, $7B, $9A"
--John
Thanks All
John I read your response and it truly helped
I am not sure about the "7B"
It appears that "6B" would be right for (digital zoom -)
I see nothing in the 7 row
I am using access only no Netliinx
If I wanted zooming up and down would it be some push and release coding?
For example :
PUSH[TP,1] (*ZOOM_UP*)
{
SEND_STRING VPROJ,"$A9, $19, $6A, $00, $00, $00, $7B, $9A"
"
}
RELEASE[TP,1] (*ZOOM_STOP*)
{
SEND_STRING VPROJ,"$A9, $19, $6A, $00, $00, $00, $7B, $9A"
}
PUSH[TP,2] (*ZOOM_DOWN*)
{
SEND_STRING VPROJ,"$A9, $19, $6A, $00, $00, $00, $7A, $9A"
"
}
RELEASE[TP,1] (*ZOOM_STOP*)
{
SEND_STRING VPROJ,"$A9, $19, $6A, $00, $00, $00, $7A, $9A"
Would I use 6A and 6B instaed of 7A and 7B?
}
pAGE 49 HAS CURSOR CONTROL ( 15 BIT)
wHAT IS THE DIFFERENCE BETWEEN THE 20 BIT AND 15 BIT AND COULD i USE THE CODE FOR CURSOR CONTROL TO move between menus etc?
Again I really apprciate the time spent
:
The checksum is not normally what you would think as a checksum.
Normal Checksum $03 +$03 = $06
Sony Bor is $03 bor $03 = $03 because
$03 is 00000011 so
00000011 bor 00000011 is 00000011
so $19 and $6A is not $83
it 00011001 bor 01100011 = 01111011 = $7B
Remember the checksum does not include B0 the STX. The Vista Calculator can do the bor with hex values.
Oh my gawd
Now I am truly confused
No but I won't bother you with that...
will do some investigating
bor is similiar to or ?
adding hex?
bor= bitwise or?
First off take a look at the command block that I posted and it takes each piece of the command and labels them as B0, B1, B2, etc... B0 is the start code or $A9. To calculate the checksum you would just BOR bytes B1 through B5.
I?ll let you take a crack at it with Zoom -, and cursor controls. Here's the example with Zoom+ again:
The whole string is "$A9, $19, $6A, $00, $00, $00, $xx, $9A"
You can open up your calculator in windows, set it to programming or scientific, select hex and type in the value of B1. Then press OR and enter the value of B2, then press OR and enter the value for B3...etc until you get to B5, then press "=".
$19 bOR $6A bOR $00 bOR $00 bOR $00 = $7B
If you looked up the BOR command in the Access help file the example they show is kind of confusing. Google might be a better place to look for some immediate understanding, but a programming class might provide a better fundamental base. Like KBeattyAMX suggested, you'll need to understand the concepts of bitwise programming. Plus, once you know how to calculate it, you'll want to have a good method for writing your code so that it can be calculated efficiently.
--John
Thanks for your reply John. indeed i think I have it!!!
Now to decipher the zoom - and cursor control
Might be back in touch
Thanks for everything.
I am able to get to the projector Zoom function with my command strings( it show up as a projector generated image)
The projector displays "Zoom" with 4 cursor buttons below the zoom
I have programmed the cursors with correct strings but there is no response
I also can now get to the projector Menu and the cursors do work there. I do not want this as I want to limit the user to Zoom control only
I guess my question is are the zoom+ and zoom- controls "discrete' and should work by simply pushing the zoom+ or zoom- or do I have to write code that ramps the zoom up as you hold the button. Perhaps a push and release set of commands. I do not see a 'stop' feature in zoom control simply cursors
I am programming in access only
I have seen code ( different projector) that produces this but cannot decipher those strings
Getting there but it is slow.
Just a quick Thank you to all who advised me with ideas/tips and tricks
Thinking about the problem and initially getting thwarted I decided that if Rs232 control was so finicky or( I was so dense) I should have a back up plan. I decided to learn the IRs for the projector and try that way.
Sure enough after choosing the right syntax I got it to work. Well I could not stop there so i redid my RS232 command strings and I now can control zoom up and down fairly well. I changed the waits between strings being sent and it is now zooming up or down as needed. doing a push release works fairly well. The zoom was so little intially I thought is was doing nothing but indeed it was zooming up or down in very small increments.
One last question( I hope) . Can I increase the rate of the zoom function? It will zoom up or down but takes way longer then when I use IR pulses
Code for RS232 below:
curu and curd are variables
PUSH[TP,27]
{
CALL 'SONY CURSORU'
ON[CURU]
}
RELEASE[TP,27]
{
CANCEL_WAIT ?CURU?
OFF[CURU]
}
IF(CURU)
{
WAIT 5 ?CURU?
CALL 'SONY CURSORU'
}
[TP,27]=CURU
PUSH[TP,39]
{
CALL 'SONY CURSORD'
ON[CURD]
}
RELEASE[TP,39]
{
CANCEL_WAIT ?CURD?
OFF[CURD]
}
IF(CURD)
{
WAIT 5 ?CURD?
CALL 'SONY CURSORD'
}
[TP,39]=CURD
I have changed the WAIT to 1 and it works better can I make the wait even less?
Tried messing around with pulse times also
Thanks in advance
I feel I have learned more this past week around some of my programming issues then in months
I do not do this everyday as you can tell.