Home AMX Forum AMXForums Archive Threads AMX Applications and Solutions
Options

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
    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
    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.
  • 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
    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
    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)
    
  • 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
    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!

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file