Home AMX User Forum AMX Technical Discussion

Sony VPL-PX41 RS232 Commands..

Does anyone have a working RS232 command list for the
Sony VPL-PX41 Projector?
I have some formulas for calculating the checksum, but still I'm not able to control it?!!

Comments

  • thomas.judthomas.jud Junior Member Posts: 38
    Vpl-px41

    Hey owainah,

    Here an exaple. It works with a CALL function.
    The soulution is: work with a BOR (bitwise OR)

    //Define CALL

    DEFINE_CALL 'BEAM_1_SEND' (DC_BS_1_STR[20])
    LOCAL_VAR
    DC_BS_1_COUNT (* COUNTER *)
    DC_BS_1_CHKSM (* RESULTAT CHECKSUMME *)
    {
    SET_LENGTH_STRING(DC_BS_1_STR,LENGTH_STRING(DC_BS_1_STR))
    DC_BS_1_COUNT=1
    DC_BS_1_CHKSM=0
    WHILE (DC_BS_1_COUNT<=LENGTH_STRING(DC_BS_1_STR))
    {
    DC_BS_1_CHKSM=DC_BS_1_CHKSM BOR DC_BS_1_STR[DC_BS_1_COUNT]
    DC_BS_1_COUNT=DC_BS_1_COUNT+1
    }
    SEND_STRING BEAM___1,"$A9,DC_BS_1_STR,DC_BS_1_CHKSM,$9A"
    }


    // Command ?

    DC_BC_1_STR = VPL_CMD[(Do)]
    CALL 'BEAM_1_SEND' (DC_BC_1_STR)

    // List with all commands (one example..)

    VPL_CMD[03]="$00,$01,$00,$00,$00" (* INPUT VIDEO *)


    I hope to help you....
    Greez
  • Thomas HayesThomas Hayes Junior Member Posts: 1,164
    If you can't get it to work I have an old AMX file that they gave me for the SONY PX-30, may do the trick.
  • John FranceJohn France Junior Member Posts: 14
    Hi

    For all projector Sony , you can use on simple code AXI
    http://www.domedia.net/forums/viewtopic.php?t=12


    I make all comparaison between all protocol i found ( only concerning projector of course ) and i write all constant for all functions

    it"s working ;-)


    but if you need some help ....

    i hope that's help you

    regards
  • VLCNCRZRVLCNCRZR Senior member Posts: 216
    Sony Command Strings

    Here are some strings that I use for the Sony VPL-PX35

    Hope they help.


    (* VERIFIED OPERATIONAL CONTROL STRINGS *)
    // SEND_STRING PROJECTOR,"$A9,$17,$2E,$00,$00,$00,$3F,$9A" // PROJECTOR ON
    // SEND_STRING PROJECTOR,"$A9,$17,$2B,$00,$00,$00,$3F,$9A" // INPUT A
    // SEND_STRING PROJECTOR,"$A9,$17,$2F,$00,$00,$00,$3F,$9A" // PROJECTOR OFF
    // SEND_STRING PROJECTOR,"$A9,$17,$2A,$00,$00,$00,$3F,$9A" // VIDEO
    // SEND_STRING PROJECTOR,"$A9,$17,$2C,$00,$00,$00,$3F,$9A" // INPUT B
    // SEND_STRING PROJECTOR,"$A9,$17,$6F,$00,$00,$00,$7F,$9A" // INPUT C
    // SEND_STRING PROJECTOR,"$A9,$17,$5F,$00,$00,$00,$5F,$9A" // SVIDEO
    // SEND_STRING PROJECTOR,"$A9,$00,$30,$00,$00,$00,$30,$9A" // PIC MUTE OFF
    // SEND_STRING PROJECTOR,"$A9,$00,$30,$00,$01,$00,$31,$9A" // PIC MUTE ON
  • DigiMeDigiMe Junior Member Posts: 59
    Additional Support Strings

    I have been working with most of the Sony Projector line for a few years now. Here are some additional strings that may help:

    define_call 'Projector Error Status'{
    send_string dvVPROJ,"$A9,$01,$01,$01,$00,$00,$03,$9A"; // Sony Error Status
    wait 10 'Projector Buffer Check'{
    remove_string(VPROJ.BUFFER,"$A9,$01",1);
    select{
    active(find_string(VPROJ.BUFFER,"$00,$01",1)):{
    VPROJ.ERROR = cERR_LAMP;
    send_string vdvVPROJ,'ERROR=1';
    }
    active(find_string(VPROJ.BUFFER,"$00,$02",1)):{
    VPROJ.ERROR = cERR_FAN;
    send_string vdvVPROJ,'ERROR=2';
    }
    active(find_string(VPROJ.BUFFER,"$00,$04",1)):{
    VPROJ.ERROR = cERR_COVR;
    send_string vdvVPROJ,'ERROR=3';
    }
    active(find_string(VPROJ.BUFFER,"$00,$08",1)):{
    VPROJ.ERROR = cERR_TEMP;
    send_string vdvVPROJ,'ERROR=4';
    }
    active(find_string(VPROJ.BUFFER,"$00,$10",1)):{
    VPROJ.ERROR = cERR_D5V;
    send_string vdvVPROJ,'ERROR=5';
    }
    active(find_string(VPROJ.BUFFER,"$00,$20",1)):{
    VPROJ.ERROR = cERR_PWR;
    send_string vdvVPROJ,'ERROR=6';
    }
    active(find_string(VPROJ.BUFFER,"$00,$40",1)):{
    VPROJ.ERROR = cERR_WARN;
    send_string vdvVPROJ,'ERROR=7';
    }
    active(find_string(VPROJ.BUFFER,"$00,$00",1)):{
    VPROJ.ERROR = cERR_NONE;
    send_string vdvVPROJ,'ERROR=0';
    }
    }
    clear_buffer VPROJ.BUFFER;
    }
    }
    define_call 'Projector Power Status'{
    send_string dvVPROJ,"$A9,$01,$02,$01,$00,$00,$03,$9A"; // Sony Power Status
    wait 10 'Projector Buffer Check'{
    remove_string(VPROJ.BUFFER,"$A9,$01,$02,$02,$00",1);
    select{
    active(find_string(VPROJ.BUFFER,"$00,$03",1)):{
    VPROJ.POWER = cPWR_OFF;
    send_string vdvVPROJ,'POWER=0';
    }
    active(find_string(VPROJ.BUFFER,"$03,$03",1)):{
    VPROJ.POWER = cPWR_ON;
    send_string vdvVPROJ,'POWER=1';
    }
    active(find_string(VPROJ.BUFFER,"$04,$07",1)):{
    VPROJ.POWER = cPWR_COOL;
    send_string vdvVPROJ,'POWER=2';
    }
    active(find_string(VPROJ.BUFFER,"$02,$03",1)):{
    VPROJ.POWER = cPWR_WARM;
    send_string vdvVPROJ,'POWER=3';
    }
    }
    clear_buffer VPROJ.BUFFER;
    }
    }

    I have a module I wrote for Sony Projectors VPL-PX35/40/41. If you want it, let me know.
  • jweatherjweather Junior Member Posts: 320
    Does anyone else think this is the most pointless checksum they've ever seen? (bitwise or of all data bytes) I'm having difficulty thinking of another checksum method that could allow so many single-bit errors to slip through unnoticed... maybe one based solely on the packet length.

    Jeremy
  • DHawthorneDHawthorne Old Timer Posts: 4,584
    jweather wrote:
    Does anyone else think this is the most pointless checksum they've ever seen? (bitwise or of all data bytes) I'm having difficulty thinking of another checksum method that could allow so many single-bit errors to slip through unnoticed... maybe one based solely on the packet length.

    Jeremy
    On the level we are working, I think all checksums are pointless. They should just ignore invalid commands, or respond with an error code. Checksums were intended to make up for cheesy serial port hardware that dropped data sporadically, or transmissions of data files that could have corrupt packets. We are dealing with tiny control packets and modern serial port chips, and the need for them is pretty much zero.
  • jweatherjweather Junior Member Posts: 320
    DHawthorne wrote:
    On the level we are working, I think all checksums are pointless. They should just ignore invalid commands, or respond with an error code. Checksums were intended to make up for cheesy serial port hardware that dropped data sporadically, or transmissions of data files that could have corrupt packets. We are dealing with tiny control packets and modern serial port chips, and the need for them is pretty much zero.

    I'm not going to go that far... I can think of plenty of devices where corrupted data or command bytes could be very inconvenient, if not actually dangerous. Security systems are one example that come to mind that have some rather inconvenient commands. The 'panic' command could be just one bit different from another command, for instance. However, a simple sum of the bytes is at least likely to catch most serial transmission errors. Maybe that's why they're called checksums? Hmm..

    The only place checksums are completely silly is in IP control protocols, at least assuming they're using TCP/IP. TCP has its own checksum built in, and it's guaranteed to either deliver the packet correctly or not deliver it at all.

    Jeremy
  • nicola@tv3.it[email protected] Junior Member Posts: 7
    Stupid simple Projector sony control

    Hi I am a developer to the first weapons, for which it programs them it is very elementary!!! but it works.
    It has the feedback of the power, input, hours, errors, are of lighting and cooling
Sign In or Register to comment.