• Recent
    • Tags
    • Popular
    • Register
    • Login

    Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.

    Radix IoT Website Mango 3 Documentation Website Mango 4 Documentation Website Mango 5 Documentation Website

    How does the virtual serial port over IP work?

    How-To
    2
    8
    2.1k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • MattFoxM
      MattFox
      last edited by

      Looking at implementing a means to send serial data over the web to a mango unit in a different geographical location. My first question is: Is there a specific format the data needs to be or some kind of handshake to make it talk?
      Have tried with a RAW ser2net socket which does connect but no data comes through.
      Would like to be able to implement something like the MangoTCP link if it were possible just as it would make transferring and updating of data much easier.

      Thanks

      Fox

      Do not follow where the path may lead; go instead where there is no path.
      And leave a trail - Muriel Strode

      1 Reply Last reply Reply Quote 0
      • phildunlapP
        phildunlap
        last edited by

        Hi Mr. Fox,

        I'm not sure I completely know what you're asking about.

        The TCP/IP data source can be used as a bridge for arbitrary TCP/IP conversations as the client.

        The Serial Data Source, coupled with a Virtual Serial Server Socket (configured on the system settings page in the virtual serial port section) is the most arbitrary incoming TCP/IP data source option.

        Neither of those has any specific adherence to a protocol and both can be made to work for all sorts of things.

        1 Reply Last reply Reply Quote 0
        • MattFoxM
          MattFox
          last edited by

          Hi Phil, thanks for the quick reply. I'll do some more investigation - could possibly be the format of my data or something of the like. Will let you know of my findings - watch this space!

          Do not follow where the path may lead; go instead where there is no path.
          And leave a trail - Muriel Strode

          1 Reply Last reply Reply Quote 0
          • MattFoxM
            MattFox
            last edited by

            I have successfully got data firing to the mango unit, ha ha!
            One problem, data isn't being loaded into the datapoint. the test string option under the datapoint shows my regex is working. checked the error logs and all I appear to be having are datasource errors:

            ERROR 2017-12-18T03:15:49,518 (com.infiniteautomation.mango.io.serial.virtual.SerialServerSocketBridge$SerialServerSocketThread.run:224) - IOException buffer reading for Fox_SerialTest java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.8.0_144] at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[?:1.8.0_144] at java.net.SocketInputStream.read(SocketInputStream.java:171) ~[?:1.8.0_144] at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[?:1.8.0_144] at com.infiniteautomation.mango.io.serial.virtual.SerialServerSocketBridgeInputStream.bufferRead(SerialServerSocketBridgeInputStream.java:38) ~[mango-3.2.2.jar:?] at com.infiniteautomation.mango.io.serial.virtual.SerialServerSocketBridge$SerialServerSocketThread.run(SerialServerSocketBridge.java:209) [mango-3.2.2.jar:?] 
            

            It keeps timing out! Any thoughts? I'm only sending 7 characters plus a carriage return as the terminator. I know the data is coming due by turning the datasource off and using netcat to listen on the network port. Data is definitely reaching.
            So I'm confused...

            Do not follow where the path may lead; go instead where there is no path.
            And leave a trail - Muriel Strode

            1 Reply Last reply Reply Quote 0
            • phildunlapP
              phildunlap
              last edited by

              Hmm. You could share your configuration if you wanted. Are you using a catchall point? I find if you turn off the terminator, set the regex to ().* and have a point with an empty identifier, a point identifier index of 1, a value regex of .* index 0 you will get all data into that point.

              Have you given your virtual serial port a timeout? You could try setting this back to 0 if you wanted, and then you would be relying on the client to close the connection. Or you can increase your timeout.

              1 Reply Last reply Reply Quote 0
              • MattFoxM
                MattFox
                last edited by MattFox

                Still nothing, Here are my settings:

                Fox virtual serial:
                Type: serial server
                buffersize:2048
                port: 2001
                timeout (ms): 0

                Datasource:
                Port: Fox Virtual Server
                Bitrate: 115200
                Flow Control In: none
                Flow Control out: none
                Databits:8
                stopbits: 1
                parity:none
                Read Timeout:20000
                use terminator :false
                regex: ().*
                point identifier group:1
                config in hex: false
                max size of message:1024

                Datapoint:
                name: test2
                datatype: alphanumeric
                point identifier:
                value group: 0
                regex:(.*)

                Logging type: all data
                text rendering: plain;

                There must be something not handshaking to take my proverbial data and swallow it...
                edit! wait I tell a lie! I have data coming in! Now why the hell isn't the regex registering...

                Do not follow where the path may lead; go instead where there is no path.
                And leave a trail - Muriel Strode

                1 Reply Last reply Reply Quote 0
                • phildunlapP
                  phildunlap
                  last edited by

                  I would guess it has something to do with the carriage returns or line feeds. Maybe you can try (?:.|\r|\n)* as your data point's regex.

                  1 Reply Last reply Reply Quote 0
                  • MattFoxM
                    MattFox
                    last edited by MattFox

                    Got it, but i had to disable the datasource's regex for it to work. Datapoint regex works fine.
                    for some reason datasource just wouldn't work with (.* )=(.* )\r
                    Strange as it works with normal serial data datasources just fine....
                    disabled datasource regex, set timeout to 30 seconds, changed point regex to
                    test=(.*)(?:|\r|\n) with identifier being test and bang, in goes my values....

                    Do not follow where the path may lead; go instead where there is no path.
                    And leave a trail - Muriel Strode

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post