Home AMXForums Archive Threads AMX Applications and Solutions

Jupiter Fusion 980 - Rx Issues

I wrote a program for a video wall system that is using the Jupiter Fusion 980. I've used a Jupiter a few times before and have never had the problems I'm having now.

The first problem is that I can send strings to the Jupiter and it works fine, but I don't get any responses back from the Jupiter. I have verified the baud rate is correct, I'm sending the 'RXON' command, and I have used multiple cables which I have verified were correct. Using the same cable and hyperterminal, I hooked my laptop directly to the Jupiter and I get responses back from the Jupiter. I also connected a cable tuner to the same port on the AMX master and was able to send and receive strings. So, I'm kind of at a loss as to what the problem may be there.

The second problem is that after a period of time the Jupiter will stop responding to commands, and since I'm not receiving responses back from the Jupiter, it's making it a bit hard to figure out what the problem is. If I reboot the Jupiter, it starts responding to commands again. I think the problem might be within the Jupiter itself (Galileo Connect and the ControlPoint Server).

Any help is greatly appreciated!

Comments

  • Chip MoodyChip Moody Junior Member Posts: 727
    Are you using a serial cable that ONLY has pins 2, 3, 5, 7 & 8 passed through? If you have a cable with more than those, there's a good chance you're mucking up the com port on the Jupiter. What about handshaking?

    - Chip
  • DJPickDJPick Junior Member Posts: 12
    The cable I was using originally was just pins 2,3,5 with 2 and 3 swapped. I used the null modem cable that came with the jupiter later on and got the same results. I should also clarify that when I connected the jupiter directly to my laptop and was able to receive strings back from the jupiter, I was using the null modem cable. I couldn't use the other cable because it was tied into the rack.
    As for handshaking, I am also sending the 'HSOFF' command.
  • Danny CampbellDanny Campbell Senior Member Posts: 311
    When I was working on a Jupiter 960 I had to send a CHARD250 command to it to create a long character delay before it would work. The serial interface in the Jupiter was so bad that I eventually converted to connecting via IP.
  • DJPickDJPick Junior Member Posts: 12
    I am trying to set it up via IP now, but I'm not having very much luck. I have very little experience with communicating over IP. Does this look ok?

    DEFINE DEVICE
    dvJUP = 0:2:0
    dvNI = 0:3:0



    DEFINE START
    GET_IP_ADDRESS(0:0:0, MyIPAddr)
    IP_SERVER_OPEN(dvJUP.Port,25456,1)
    IP_CLIENT_OPEN(dvNI.Port,MyIPAddr.IPAddress,25456,1)

    I am using a Linksys wireless router w/ IP: 192.168.50.1
    The Master is: 192.168.50.254
    The Jupiter is: 192.168.50.114
    I was able to ping the master from the Jupiter.

    Also, I set up Diagnostics to monitor strings on 0:2:0 and 0:3:0 and I'm not seeing any strings being sent.
  • DHawthorneDHawthorne Junior Member Posts: 4,584
    No, that bit of code will connect the NetLinx that the master to itself ... I don't think that's what you are going for :). Get rid of the dvJUP device, and get rid of the GET_IP_ADDRESS and IP_SERVER_OPEN lines. Make a CHAR variable to store the IP address, and use that in IP_CLIENT_OPEN.
    DEFINE_DEVICE 
    dvNI = 0:2:0
    
    DEFINE_VARIABLE
    
    VOLATILE CHAR sIPAddress[]  = {'192.168.50.114'}    // Jupiter IP
    
    // Connect code ... I wouldn't put this in DEFINE_START. Attach it to an event or create a
    // Timeline that will attempt to re-connect as long as the connection does not exist.
    
    IP_CLIENT_OPEN(dvNI.Port, sIPAddress, 25456, 1)
    
  • Danny CampbellDanny Campbell Senior Member Posts: 311
    Here is the code that I used to make it work:

    (Sorry about the lack of formatting - I keep forgetting how to get it in one of those nifty little code boxes.)

    dvJUPITER1 = 0:2:0 //Jupiter 1 - TCP/IP connection

    DEFINE_START

    IP_CLIENT_OPEN(dvJUPITER1.PORT,'192.168.1.10',25456,1)

    DATA_EVENT[dvJUPITER1] // TCP/IP VERSION
    {
    ONLINE:
    {
    nJUPITER1Online = 1;
    WAIT 20
    {
    SEND_STRING dvJUPITER1,"'Admin',13,10"
    WAIT 20
    {
    SEND_STRING dvJUPITER1,"13,10"
    }
    }
    }

    OFFLINE:
    {
    nJUPITER1Online = 0;
    // Attempt to re-establish communications
    IF (nJUPITER1KeepOpen)
    {
    WAIT 300
    {
    IP_CLIENT_OPEN(dvJUPITER1.PORT,'192.168.1.10',25456,1)
    }
    }
    }
    ONERROR:
    {
    SWITCH(DATA.NUMBER)
    {
    // No need to re-open socket in response to following two errors.
    CASE 9: // Socket closed in response to IP_CLIENT_CLOSE
    CASE 17: // String was sent to a closed socket
    {
    }
    DEFAULT: // All other errors. May want to re-try connection
    {
    IF (nJUPITER1KeepOpen)
    {
    WAIT 300
    {
    IP_CLIENT_OPEN(dvJUPITER1.PORT,'192.168.1.10',25456,1)
    }
    }
    }
    }
    }
  • DJPickDJPick Junior Member Posts: 12
    Ha! I eventually figured it out (I tried modifying an example from the AMX programmer's course guide). I haven't done IP since the programmer II course, but I always knew I'd have to do it eventually. It's working great now, no more hang ups and I'm getting responses back. Thanks for the help!
Sign In or Register to comment.