Welcome to the new FlexRadio Community! Please review the new Community Rules and other important new Community information on the Message Board.
If you are having a problem, please check the Help Center for known solutions.
Need technical support from FlexRadio? It's as simple as Creating a HelpDesk ticket.

SmartSDR API question

Tom WorthingtonTom Worthington Member ✭✭
edited February 23 in SmartSDR API
I would like to write a simple program to record the S meter value over time.  Is there a way to use the API to ask for this kind of data from the radio?  I want to monitor noise and eventually do things like map the noise (at a particular frequency) as a function of antenna direction.


  • Mark_WS7MMark_WS7M Member ✭✭
    edited November 2018
    Yes. You should look into the FlexLib API It can aslo be done via direct TCP comm but more difficult. The FlexLib makes it almost simple
  • Ted  VE3TRQTed VE3TRQ Member ✭✭
    edited December 2019
    I wrote a quick-and-dirty C program a while ago that uses the TCP/IP API to discover the radio, connect to the radio, find all slices and dump the S-meter values as they are reported by the radio. I simply output all values to the terminal for all slices. It is not cleaned up, but you are welcome to the code I wrote. It was the prototype to allow comparing the signal levels from two simultaneously connected antennas. I intend to eventually output a csv file for Excel to manipulate and plot when I'm done. Written for Debian Linux , but should work on any system supporting C and sockets. Written and tested with the latest radio software.
  • Doug - K3TZRDoug - K3TZR Member
    edited November 2018

    Unfortunately, I'm not aware of any simple "how-to" guide that would tell you what to do. I've spent the last few years learning the API and writing code to use it (but from a Mac, not a Windows PC).

    You can download the source code for the API (i.e. FlexLIb) from the Flex web site. With a little programming experience I think you can find what is needed. By calling functions in the API you can make a "non-GUI" connection to the Radio and then send it commands to subscribe to meter data. The API sends commands to the Radio and receives back responses over TCP. Stream data (meters are one type of stream) is sent over UDP in Vita-49 packets. The API provides functions to make all of this happen and creates objects (meters being one type of object) that your code can interact with. 

    Take a look at the API source code. If you have specific questions, I would be glad to try to help.

    Good luck.
  • Ray Andrews, K9DURRay Andrews, K9DUR Member ✭✭
    edited November 2018

    The SmartSDR client uses the API to communicate with the radio.  Therefore, any function or data, such as S-Meter readings, that is available to the client, is available to any 3rd party software.  As Mark stated, you can communicate with the radio directly with low-level API commands, but using the FlexLib is much easier as long as you are developing using the .NET environment.  All of my programs use FlexLib.

    73, Ray, K9DUR
  • Tom WorthingtonTom Worthington Member ✭✭
    edited November 2018
    Thank you all for your suggestions.  I was hoping it would be simple but evidently I really need to immerse myself in the C# FlexLib...maybe we'll have a have a big snowstorm and I'll be stuck inside for a week...73 and Aloha
  • Warren MerkelWarren Merkel Member
    edited July 2019

    If you would like to try Python, I crafted up this little ditty a few years ago.  It connects to a CAT exposed serial port and reads the S meter reading for 15 seconds, and writes a reading each second to an output file.  You can easily modify it to run longer.

    We used this on a 6700 to read the S meter values from a drone mounted CW transmitter.  It was used to characterize the antenna pattern of a receive antenna.  Save this code out as a python script -- such as rssiLogger.py   I don't see a "code" tag in this messaging system, so you might have to clean it up a bit.  In Python, indentation is important!

    Warren, KD4Z

    import serial
    import time
    import datetime

    # sample filename  'rssi_120508_171442'
    basename = "rssi"
    suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
    ext = ".csv"

    filename = "_".join([basename, suffix]) + ext
    print "Opening file " + filename

    # typical windows com0com virtual port
    # port = "\\.\CNCA0"

    # USB port in linux
    # port ='/dev/ttyUSB1'

    # change the port to a valid port on your system.
    # it will be either the physical port of the radio
    # is connected to, or the Virtual port exposed by virtual
    # com port sharing software or Flex CAT.  Be sure
    # configure the port baudrate here.

    ser = serial.Serial(
    timeout = 1)

    outfil = open(filename,"w")

    # ZZS1
    starttime = time.time()
    stim = "Start at " + time.asctime(time.localtime())
    print stim
    while time.time() - starttime < 15.0:
       print time.time() - starttime
       reading = ser.read(8)
       ctime = time.strftime("%H:%M:%S")
       ostring = ctime + ","+ reading +"


  • Tom WorthingtonTom Worthington Member ✭✭
    edited March 2019
    Thanks very much for sharing this.  I'll give it a try.
    73 and Aloha, NH6Y
  • KevinKevin Member
    edited March 2019
    Why isn't cool stuff like this not document in a magazine like QEX or something. I've been thinking of using a drone for getting antennas high up into the trees. I just received the release mechanism for it. Never thought about using it for mapping radiation patterns.

    Speaking of QEX, I think I let my subscription expire. :/ 

    Kev K4VD
  • bobbybobby Member ✭✭
    edited February 23
    Tom Flexmeter version 1.2 or 1.3beta does exactly what you want and its free, google is your friend.

Leave a Comment

Rich Text Editor. To edit a paragraph's style, hit tab to get to the paragraph menu. From there you will be able to pick one style. Nothing defaults to paragraph. An inline formatting menu will show up when you select text. Hit tab to get into that menu. Some elements, such as rich link embeds, images, loading indicators, and error messages may get inserted into the editor. You may navigate to these using the arrow keys inside of the editor and delete them with the delete or backspace key.