Android Question B4A : TCP Client To RS232 (FTDI USB to RS232)

Discussion in 'Android Questions' started by sales, Oct 23, 2017.

  1. sales

    sales Member Licensed User

    Hi All,

    Is there any manual or sample code for TCP Client To RS232 (FTDI USB to RS232)?

    I need to make a connection betwen my power meter with the reading software in server,
    the power meter used rs232 for comunication baudrate=2400 parity=even stopb=1 ,
    then the reading meter software used tcp server(listen).

    Regards
     
  2. JordiCP

    JordiCP Well-Known Member Licensed User

    Not that I am aware of.

    You need to set them up separately in the same app: TCP connection to a server and USB-232 terminal

    Once each one of them works separately, just link what you get from one to the other and the opposite (taking care that both connections are open and such things)
     
  3. nwhitfield

    nwhitfield Active Member Licensed User

    This sounds sort of like what one of my apps does.

    I have an app that is designed to link to an eStim unit, which has a serial port. The connection from the Android device is via a cable with the FTDI chip in it (and a USB host adaptor). To allow remote access, the app also listens on a TCP port for incoming connections, and when one is received, it passes all data from the TCP port to the serial, and vice versa.

    Does that sound fairly similar to what you're doing?

    Obviously, there's a lot of extra bits going on in my code (not least because the app can be used to connect to as a client via TCP, as well as a server), but the fundamentals aren't too tricky.

    I use AsyncStreamsText to process the data, and the USBSerial library to drive the cable.

    I have two services in the app - one is called 'estim', and handles the communication between device and the estim unit over the local cable. This is how it works (and sets up the server option, which is via the 'listener' service
    Code:
    Dim stimStream As AsyncStreamsText
    Dim connected As Boolean = False
     
    Dim estimUSB As UsbSerial
    Code:
    If estimUSB.open(9600) = estimUSB.USB_DEVICE Then
               stimStream.Initialize(Me,
    "stimStream",estimUSB.GetInputStream,estimUSB.GetOutputStream)
               connected = 
    True
              
               
    ' start the listener, if necessary
               If StateManager.GetSetting2("enableServer","") = "yes" Then
                 
    ' start the server if necessary
                 Select StateManager.GetSetting("listenVia")
                   
    Case "BROKER"
                     startBroker
                   
    Case "PEBBLE"
                     
    If pk.isWatchConnected = True Then
                       pk.startAppOnPebble(APP_UID)
                     
    End If
                   
    Case Else
                     
    StartService(listener)
                 
    End Select
               
    End If          
             
    Else
               connected = 
    False
               
    ToastMessageShow("Error opening USB connection",True)
             
    End If
    In the service start sub for the listener, I initialise the connection like this:

    Code:
    serverTCP.Initialize(portNumber,"tcpServer")
         serverTCP.Listen
         serverIP = serverTCP.GetMyWifiIP
         
    ToastMessageShow("Listening for connections on " & serverIP,True)
    And in the NewText sub for the tcp stream, I pass the received data back to the estim service, where a function called sendStimCommand passes it to the USB stream with the .write function for the AsyncStreamText object

    Code:
    CallSub2(estim,"sendStimCommand",Text)
    Similarly, in the NewText sub for the serial stream, I call a sub in the listener to push the data back through the TCP port:

    Code:
    If listener.serverConnected Then
         
    CallSub2(listener,"sendResponse",stimData)
      
    End if
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice