Home AMX User Forum AMX Technical Discussion

SONY PROJECTOR WIERDNESS

Hi all,
I am wondering if anyone out there has encountered this before. I have 2 similar SONY VPL-EX175 projectors connected to a Ni-3000. Both are configured the same:
dvPROJ1 = 5001:2:1 // Sony VPL-EX175
dvPROJ2 = 5001:3:1 // Sony VPL-EX175
..and...after some trial and error...
send_command dvPROJ1,'SET BAUD 38400,N,8,1 485 DISABLE'
send_command dvPROJ2,'SET BAUD 38400,N,8,1 485 DISABLE'
works...BUT...
PROJ1 responds to commands but has does not reply
PROJ2 on port 3 does not respond to commands, but when PROJ2 is pluged into port 2 it does respond and replies
when PROJ1 is placed on port 3 it does not respond to commands
same goes for other serial ports on the NI3000 - no response.

The cables are wired up the same, and should be ok since when PROJ2 is shifted to port 2 it responds.

SONY has no documentation on setting up the serial port settings. Does anyone have any advice on these projectors? Or am I working with a flakey Ni3000?

Regards,
Brian

Comments

  • DHawthorneDHawthorne Posts: 4,584
    Send all your ports a HSOFF command, in case handshaking got turned on in them somewhere along the line. If you still see the described behavior, I'd say the NI3000 is flaking out.
  • also try out this setting on your serial ports.. maybe works...

    SET BAUD 38400,E,8,1 485 DISABLE

    this is the setting i use to control a VPL-VW100
  • As papadouk mentioned, the baud is 38400 E81 I have used this settings for many Sony projectors.
    I have also attached the protocol manual for the EX175.
  • HSOFF..and SERIAL port testing

    Thanks Dave,
    The HSOFF seemed to do the trick. Now the projectors can both be controlled. But I am still not getting replies from PROJ1. PROJ2 seems to reply (Rx flashes) but nothing in the buffer. I am still a little suspicious about the flakey ports...does anyone have a good serial port testing procedure/program?

    I might try a direct connect to my laptop to see if they behave the same way.

    These are the strings that I found on the forums to control the projectors.
    strProjPowerOn[] = {$A9,$17,$2E,$00,$00,$00,$3F,$9A} //Power on ** Must be sent twice **
    strProjPowerOff[] = {$A9,$17,$2F,$00,$00,$00,$3F,$9A} //Power off
    strProjVideo[] = {$A9,$17,$2A,$00,$00,$00,$3F,$9A} //Composite
    strProjSVideo[] = {$A9,$17,$5F,$00,$00,$00,$5F,$9A} //SVideo
    strProjVGA[] = {$A9,$17,$2B,$00,$00,$00,$3F,$9A} //Input A
    strProjComponent[]= {$A9,$17,$2C,$00,$00,$00,$3F,$9A} //Component
    strProjHDMI1[] = {$A9,$17,$6F,$00,$00,$00,$7F,$9A} //HDMI 1
    strProjHDMI2[] = {$A9,$17,$70,$00,$00,$00,$77,$9A} //HDMI 2
    strProjBlank[] = {$A9,$00,$30,$00,$00,$01,$31,$9A} //Picture Mute on
    strProjUnblank[] = {$A9,$00,$30,$00,$00,$00,$30,$9A} //Picture Mute off
    strProjGetPower[] = {$A9,$01,$02,$01,$00,$00,$03,$9A}
    strProjGetInput[] = {$A9,$00,$01,$01,$00,$00,$01,$9A}
    strProjGetBlank[] = {$A9,$00,$30,$01,$00,$00,$31,$9A}
    strProjGetError[] = {$A9,$01,$01,$01,$00,$00,$01,$9A}
    strProjGetLamp[] = {$A9,$01,$13,$01,$00,$00,$13,$9A}

    // Replies from the SONY projector
    pwrIsStandby[] = {$A9,$01,$02,$02,$00,$00,$03,$9A}
    pwrIsStartUp[] = {$A9,$01,$02,$02,$00,$01,$03,$9A}
    pwrIsStartUpLamp[] = {$A9,$01,$02,$02,$00,$02,$03,$9A}
    pwrIsPowerOn[] = {$A9,$01,$02,$02,$00,$03,$03,$9A}
    pwrIsCooling1[] = {$A9,$01,$02,$02,$00,$04,$07,$9A}
    pwrIsCooling2[] = {$A9,$01,$02,$02,$00,$05,$07,$9A}
    DHawthorne wrote: »
    Send all your ports a HSOFF command, in case handshaking got turned on in them somewhere along the line. If you still see the described behavior, I'd say the NI3000 is flaking out.
  • Thanks

    Thanks for the attachment. The codes I used was from someone else on another forum post before this.
    I wonder if they are any different from the ones you sent.
    bmitchell wrote: »
    As papadouk mentioned, the baud is 38400 E81 I have used this settings for many Sony projectors.
    I have also attached the protocol manual for the EX175.
  • DHawthorneDHawthorne Posts: 4,584
    Here's a quick and dirty little program I use to test controllers. Adjust whatever parameters that are necessary, and load it, then plug your PC into the ports one at a time with Hyperterminal running and run the test. As written, it uses Telnet to initiate commands, and to receive test results, so you will want to connect to the master when it's loaded and Telnet in, then issue a "msg on" so you can see the responses. Also, as written, this code modifies the port settings, and you may want to take that out and leave them as running to make sure it the chip isn't breaking down at different rates.

    Also note that anything you type into Hyperterminal will be reported on the Telnet screen to test communication in that direction.
    PROGRAM_NAME='Controller'
    
    (***********************************************************)
    (*          DEVICE NUMBER DEFINITIONS GO BELOW             *)
    (***********************************************************)
    DEFINE_DEVICE
    
    dvSerial_1	= 5001: 1: 0
    dvSerial_2	= 5001: 2: 0
    dvSerial_3	= 5001: 3: 0
    dvSerial_4	= 5001: 4: 0
    dvSerial_5	= 5001: 5: 0
    dvSerial_6	= 5001: 6: 0
    dvSerial_7	= 5001: 7: 0
    
    dvRelays	= 5001: 8: 0
    
    dvIO		= 5001:17: 0
    
    vdvInterface	= 33001: 1: 0
    
    (***********************************************************)
    (*               CONSTANT DEFINITIONS GO BELOW             *)
    (***********************************************************)
    DEFINE_CONSTANT
    
    IO_TEST		= 1
    RELAY_TEST	= 2
    SERIAL_TEST	= 3
    
    (***********************************************************)
    (*               VARIABLE DEFINITIONS GO BELOW             *)
    (***********************************************************)
    DEFINE_VARIABLE
    
    VOLATILE LONG nIterate[] = {1000} ;
    
    VOLATILE DEV dvSerialPorts[] = {dvSerial_1, dvSerial_2, dvSerial_3, dvSerial_4, dvSerial_5, dvSerial_6, dvSerial_7} ;
    VOLATILE DEVCHAN dvIO_Ports[] = {{dvIO, 1}, {dvIO, 2}, {dvIO, 3}, {dvIO, 4}, {dvIO, 5}, {dvIO, 6}, {dvIO, 7}, {dvIO, 8}} ;
    VOLATILE DEVCHAN dvRelay_Ports[] = {{dvRelays, 1}, {dvRelays, 2}, {dvRelays, 3}, {dvRelays, 4}, {dvRelays, 5}, {dvRelays, 6}, {dvRelays, 7}, {dvRelays, 8}} ;
    
    (***********************************************************)
    (*                 STARTUP CODE GOES BELOW                 *)
    (***********************************************************)
    DEFINE_START
    
    (***********************************************************)
    (*                  THE EVENTS GO BELOW                    *)
    (***********************************************************)
    DEFINE_EVENT
    
    DATA_EVENT[vdvInterface]
    {
        COMMAND :
        {
    	STACK_VAR CHAR sCmd[255] ;
    	
    	sCmd = UPPER_STRING(DATA.TEXT) ;
    	
    	SELECT
    	{
    	    ACTIVE(sCmd == "'START IO TEST'")     : TIMELINE_CREATE(IO_TEST, nIterate, 1, TIMELINE_ABSOLUTE, TIMELINE_REPEAT) ;
    	    ACTIVE(sCmd == "'START RELAY TEST'")  : TIMELINE_CREATE(RELAY_TEST, nIterate, 1, TIMELINE_ABSOLUTE, TIMELINE_REPEAT) ;
    	    ACTIVE(sCmd == "'START SERIAL TEST'") : TIMELINE_CREATE(SERIAL_TEST, nIterate, 1, TIMELINE_ABSOLUTE, TIMELINE_REPEAT) ;
    	    ACTIVE(sCmd == "'STOP IO TEST'")      : TIMELINE_KILL(IO_TEST) ;
    	    ACTIVE(sCmd == "'STOP RELAY TEST'")   : TIMELINE_KILL(RELAY_TEST) ;
    	    ACTIVE(sCmd == "'STOP SERIAL TEST'")  : TIMELINE_KILL(SERIAL_TEST) ;
    	}
        }
    }
    
    CHANNEL_EVENT[dvIO_Ports]
    {
        ON : SEND_STRING 0, "'IO Port ', ITOA(CHANNEL.CHANNEL), ' ON'" ;
        OFF: SEND_STRING 0, "'IO Port ', ITOA(CHANNEL.CHANNEL), ' OFF'" ;
    }
    
    DATA_EVENT[dvSerialPorts]
    {
        ONLINE : SEND_COMMAND DATA.DEVICE.PORT, "'SET BAUD 9600,N,8,1'" ;
        STRING : SEND_STRING 0, "'Serial Port ', ITOA(DATA.DEVICE.PORT), ' sent: ', DATA.TEXT" ;
    }
    
    TIMELINE_EVENT[IO_TEST]
    {
        LOCAL_VAR CHAR nPass ;
        
        IF(nPass < 8)
    	nPass ++ ;
        ELSE
    	nPass = 1 ;
    	
        PULSE[dvIO_Ports[nPass]] ;
    }
    
    TIMELINE_EVENT[RELAY_TEST]
    {
        LOCAL_VAR CHAR nPass ;
        
        IF(nPass < 8)
    	nPass ++ ;
        ELSE
    	nPass = 1 ;
    	
        PULSE[dvRelay_Ports[nPass]] ;
    }
    
    TIMELINE_EVENT[SERIAL_TEST]
    {
        LOCAL_VAR CHAR nPass ;
        
        IF(nPass < LENGTH_ARRAY(dvSerialPorts))
    	nPass ++ ;
        ELSE
    	nPass = 1 ;
    	
        SEND_STRING dvSerialPorts[nPass], "'Test string out from serial port ', ITOA(nPass)" ;
    }
    
    (***********************************************************)
    (*            THE ACTUAL PROGRAM GOES BELOW                *)
    (***********************************************************)
    DEFINE_PROGRAM
    
    
    
Sign In or Register to comment.