0

I'm using a Python script to read data from the USB com port and write it to a file. This is a snippet from the same.

enter code here
def read_gps():
  ser = serial.Serial()
  ser.port = "COM3"# "/dev/ttyUSB0"
  ser.baudrate = 38400
  # 19200

  ser.open()

  ts = str(time.time()).split('.')[0]
  gps_file = open("./proxrt_gps_input_"+ts+".txt", 'w')
  line_cnt = 0
  stop_cap = False

  # Read from serial port and write to file till stopped
  while (1):
    cur_pos  = ser.readline()
    line_cnt += 1

    print(cur_pos, file=gps_file)

The script with an older Trimble receiver used to write something like this to the output file in the NMEA format, $GPGGA,013249,2938.6513,N,08220.7101,W,0,00,0.0,26.2,M,30.1,M,015,0000*52

Currently, with the ProXRT receiver, it writes lines similar to the following,

b'\x00\x03\x00\xe3\x00V\x00\x00\x00\x0f\x00\x03\x00\xd0\x01e\x00\x00\x00\x11\x00\x03\x00\xeb\x00\xd5\x00\x00\x00\x13\x00\x03\x00\xda\x00\xda\x00\x00\x00\x0c\x00\x03\x00\xb9\x00\xa9\x00\x00\x00\x0e\x00\x03\x00\xe6\x00\x91\x00\x00\x00\x87\x01\x03\x005\x00\xc8\x00\x00\x00\x8a\x01\x07\x00-\x00\xdf\x8d\x00\x00\xd1\x03\x02(@\xf9J\x00\x01\x10\t\x14f\xfe\x9c\x08\'\x00\x00\x00\x0c&\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x19\x03\x83\x0c\x00\x00\x00\x00\x00\x00\x0b\x13\x00\x00\x00\x00\x00\x00\x8a\x1b\x00\x00\x00\x00\x00\x00"\x19\x1c\t\x02\x03\x00*\x01V\x00\x00\x00\x08\x00\x03\x00M\x00~\x00\x00\x00\x17\x00\x03\x003\x00\xcb\x00\x00\x00\x13\x02\x03\x002\x00`\x00\x00\x00\x01\x02\x03\x00\xa6\x00\x00\x00\x00\x00\x06\x02\x03\x00\x0e\x00\xcf\x92\x00\x00\x03\x02\x03\x00\xcb\x00L\x00\x00\x00\x12\x02\x03\x00\x19\x00\'\x00\x00\x00\x04\x02\x03\x00\xd5\x00\x84\x00\x00\x00\x11\x02\x03\x00\xf4\x00\x0e\x00\x00\x00\n'

b'\x02\x03\x00\x02\x01$\x00\x00\x00\t\x00\x03\x00:\x00\xfa\x00\x00\x00\x83\x01\x07\x00&\x00\xea}\x00\x00\x85\x01\x03\x00\x1c\x00\xf5\x00\x00\x00\x01\x00\x03\x00\x03\x00\xa8\x00\x00\x00\x0b\x02\x03\x00\xeb\x01\x12\x00\x00\x00\x10\x00\x03\x00\x16a\x03\x02(@vJ\x01\x01\x002\x00\x00\x00\x0e\x02\x03\x00\xd8\x00z\x00\x00\x00\x10\x02\x03\x00\x1d\x00?\x00\x00\x00\x0b\x00\x07\x00\x1b\x00\xa9\xa4\x00\x00\n'

Tried decoding it thinking it was ASCII but it gives a weird output. I just want to get the latitude and longitude from the receiver in either Python or C++.

I am new to using these tools and formats.

5
  • The docs suggest that you can configure it to output NMEA over USB, on page 100
    – mikewatt
    Jan 10 '20 at 1:01
  • You mention USB - can you clarify, are you using USB on PC and on ProXRT or just on PC side with a USB-to-serial adapter then serial port on the ProXRT side?
    – Trams
    Jan 16 '20 at 0:15
  • @Trams Using USB-to-serial adapter. USB just on PC side.
    – Jay Patel
    Jan 21 '20 at 20:52
  • A few more questions (I'm pretty sure there's an easy solution, trying to get it right first time): (1) Do you have the multiport adapter which plugs onto the high-density D-type connector on the back of the ProXRT? (2) Are you connecting the serial cable to the high-density D-type or do you have a serial cable connected to the round Lemo connector? (3) Do you have a laptop or other Windows device with Bluetooth?
    – Trams
    Jan 23 '20 at 3:02
  • My "easy solution" used the Trimble GPS Controller application - but I've checked and this doesn't talk to ProXRT receivers. Back to the drawing board.
    – Trams
    Jan 23 '20 at 21:04
0

I recommend downloading a manual for the ProXRT - do a google search for "trimble proxrt user manual" and choose a link from the Trimble.com site for User Guide - the PDF manuals for firmware 4.44 or 4.71 should be suitable (I don't think operation changed much).

One caution is that NMEA Output was an optional extra for ProXRT receivers - it was common but not all ProXRT receivers were sold with this enabled. And if you don't have the NMEA output option installed, no method is going to turn it on (unless you buy the NMEA Option and I'm sure that will cost a silly amount).

I've given two methods below - the first is much easier but it will only work with a recent firmware version (I guess firmware earlier than 5.10 will not work and I suspect it will not work on units labelled ProXRT, only on those labelled ProXRT2). The second approach is more general, but it requires a network connection, and for that you need the ProXRT Multiport Adapter.

First step - reset to factory settings

Before you do anything else, reset the ProXRT to factory settings. To do this, turn the ProXRT on, and once it has started up (the screen will show an SV count and power level, etc), press and hold the power button for about 30 seconds (a 5 second press turns the receiver off, a 15 second press clears all satellite data, a 30 second press Clears the FS = File System which resets it to factory defaults.)

Method 1 - Use Trimble GNSS Status to connect to ProXRT via Bluetooth and set up NMEA on a Bluetooth serial port

This will only work with recent firmware, probably only on ProXRT-2, and can only set up NMEA on Bluetooth, not the physical serial ports.

Because this method depends on Bluetooth, you should be aware that ProXRT has truly terrible Bluetooth - try to have the ProXRT within 1M of your PC, preferably in an environment with low RF noise!

  • Start the ProXRT
  • On the PC where you are going to run your script, search for the ProXRT on Bluetooth (it will usually be listed as "ProXRT, 1234K56789: SomeName" where the number in the middle is the serial number) and pair with it. The default Bluetooth pairing code is 0000 (four zeroes)
  • Under Settings / Devices / Bluetooth and other devices, click on "More Bluetooth options"
  • A "Bluetooth Settings" dialog box opens, with 3 tabs. Click on the "COM Ports" tab.
  • Look through the list of ports to find the ProXRT, make a list of the Port numbers in the left-hand column which correspond to "ProXRT, 1234K56789: SomeName 'COM1' ", "ProXRT, 1234K56789: SomeName 'COM3' ", "ProXRT, 1234K56789: SomeName 'COM3' "
  • Search for the GNSS Status application on the Trimble.com web site, download this and install on your PC
  • Run GNSS Status, select Source, under Position Source, select Bluetooth
  • The ProXRT (and any other Bluetooth devices which are nearby) should be listed - select the ProXRT and click Select
  • If GNSS Status connects, wonderful. If not, try a few more times then give up - your ProXRT is probably not compatible with GNSS Status
  • Assuming GNSS Status connected to the ProXRT. . . .
  • Select the GNSS Status NMEA page
  • Select the NMEA sentences you want to use - for your example select just GGA
  • Click on the Save button (not essential but then GNSS Status will remember your NMEA selection for next time)
  • Click on the Apply button
  • GNSS Status will give a list of ports - probably "Bluetooth SPP1 (Connected)", "Bluetooth SPP2", "Bluetooth SPP3"
  • Select Bluetooth SPP2 - GNSS Status will tell you that the settings have been applied

That's it for the setup, you can exit from GNSS Status, ProXRT will remember its configuration even if you turn it off then on

Now update this line in your script ser.port = "COM3"# "/dev/ttyUSB0" so it refers to the Port number corresponding to "ProXRT, 1234K56789: SomeName 'COM3' " (see the 4th step above)

Run your script - GGA should come through on Bluetooth (which is unreliable on ProXRT, as I said)

Method 2 - Use the ProXRT WebUI via network

This is a more general solution than Method 1.

I have a suspicion that some ProXRT were shipped with WebUI disabled, making this unuseable. I'm not sure how you'd know except by trying it.

And this method requires the ProXRT multi-port adapter to give a network port.

Here goes:

  • Connect the ProXRT to the same network as your PC (or if your PC is not on a network, you may be able to connect a network cable directly between the ProXRT and your PC, most modern network adapters will handle this)
  • Press the up-arrow on the front of the ProXRT until it displays the IP address for the ProXRT.
  • If the IP address is 0.0.0.0, wait a bit - at most a few minutes. If it doesn't give a non-zero value you probably don't have a DHCP server on the network, try adding a network Hub / Network Switch
  • If you still don't manage to get an IP address, maybe the ProXRT doesn't have network ability (I thought they all had but I'm not sure). Or the multi-port adapter is damaged. Or something else. Hard to diagnose this without swapping out bits.
  • Now you've got a network connection, fire up a browser on your PC (I use Edge or Chrome, other browsers should also work)
  • In the browser address line, enter the IP address displayed by the ProXRT then hit Enter
  • You should get a Trimble splash screen, then it will ask for username and password. Because we did the factory reset, I expect the default settings with the user "admin" and the password "password".
  • Now we've got to the "WebUI", click on the I/O Configuration label, this will give a list of ports and say what is enabled on each port
  • Because you reset the ProXRT to factory settings, no messages / data types should be listed as Input or Output for any of the ports
  • If you are using the round "Lemo" connector for serial, click on the line for "Lemo"
  • If you are connecting using the multi-port adapter, click on the "Modem 1" line
  • The top-right drop-down list allows selection of protocol (CMR, RTCM, RT17/RT27, NMEA, etc.) - select the NMEA option
  • If you see some of the other options I've listed but not NMEA, this means the ProXRT doesn't have the NMEA option, so stop right there, NMEA is not available!
  • On the NMEA screen, confirm the Baud rate and Parity match what you want ("38400" & "N" from your script sample)
  • Select 1Hz for GGA
  • Click OK In the IO Configuration screen, it should list "NMEA-GGA(1Hz)" against Lemo or Modem 1

That's it for the setup, you can close the WebUI and disconnect the network cable from the ProXRT, it will remember its configuration even if you turn it off then on

Your script should now be able to see NMEA from the ProXRT serial port

NOTE: If you use WebUI to configure Bluetooth ports, turn on the "maintain configuration when connection dropped" checkbox otherwise the ProXRT may discard your settings

3
  • Trying the second method of connecting it with an Ethernet cable, and pressing the Up button on the receiver, as mentioned, the receiver does not show any screen displaying IP address. The only screens that are visible are Serial #, Firmware, ProXRT version, Antenna Height, Ellipsoid Height, N E coordinates, Base(N/A), Code(N/A), Id(N/A), Link(N/A), No Fix H V, and SV # of satellites. I also tried the first method but I'm on Ubuntu and it does not allow me to enter the 0000 pass code in the process of pairing bluetooth.
    – Jay Patel
    Feb 4 '20 at 17:32
  • On "my" ProXRT, the IP address is one up-arrow press from the SV count screen and before the Serial number screen. I guess your unit doesn't have the network option installed. I'm out of ideas for now - I'll post again if I think of anything.
    – Trams
    Feb 6 '20 at 21:08
  • I was talking about ProXRT receivers with a colleague who has used Trimble gear for more than 20 years, he thinks that the same extra-cost option which lets you access the network and WebUI also enables NMEA output. So if you don't have network access, you won't have NMEA either, even if you managed to connect to the ProXRT via Bluetooth you would never be able to enable NMEA output.
    – Trams
    May 19 '20 at 2:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.