Serial Port Communication

In java we are using serial port.port.kusb on a 9600 baudrate with a nvidia tegra serial port. When we try testing the tegra serial with an arduino it returns garbage askII characters. eg.(Python)ser.write(‘hello’.encode(‘utf-8’)). The communication port returns this ░:: and then goes to a newline.

Any help would be very welcome.

Couple of thoughts:

  1. Are you able to decode UTF-8 correctly and why not use ASCII?
  2. Stop bits? Data bits? Flow control?
  3. How are you deriving your clock for the serial on the Arduino?
  4. Which equipment is setup for DTE and which DCE?

Know nothing about serial :wink: hides the Trellis modems under the couch.

  1. If we encode it or not it still returns garbage ascii characters
  2. stopbits 1
  3. The hardware it setup with only Tx, Rx, and Gnd. Does the Rio have the other lines? Do you know if Arduino has the other lines as well?

our setup is the serial port on the tegra into the arduino using the tx rx and gnd from there a usb cable into a computer with putty to monitor the com port

simple serial code (python)


    import serial
    ser = serial.Serial(
        port='/dev/ttyS0',
        baudrate = 115200,
        parity=serial.PARITY_NONE
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS
        )
    if(ser.isOpen()):
        ser.close()
    ser.open()
    ser.write('hello'.encode('utf-8'))
    

Uhm your first post said 9600 baud.
Are you using 115200 to the Arduino but only 9600 between the Arduino and the Tegra?

sorry forgot to update the post, no we are using the same baudrate

Your code says you’re transmitting at 115200. That would definitely give you the kind of short garbled results that you describe.

When we try testing the tegra serial with an arduino it returns garbage askII characters. eg.(Python)ser.write(‘hello’.encode(‘utf-8’)). The communication port returns this ░:: and then goes to a newline.

Why are you encoding as UTF-8? It does end up being the same actual byte stream for straight ASCII* characters, but anything outside the ASCII range will be sent as multiple bytes that your terminal might not understand.

  • American Standard Code for Information Interchange, pronounced “ask-ee”

sorry im new to serial coms would it be better to not encode at all?
if I run at 9600 baudrate and no encoding with the same setup (tegra serial port to arduino and arduino to computer then open com port on putty) it only returns ░:: h̶o̶w̶e̶v̶e̶r̶ ̶a̶f̶t̶e̶r̶ ̶t̶e̶s̶t̶i̶n̶g̶ ̶a̶d̶d̶i̶t̶i̶o̶n̶a̶l̶l̶y̶ ̶w̶h̶e̶n̶ ̶t̶h̶e̶ ̶s̶a̶m̶e̶ ̶s̶e̶t̶u̶p̶ ̶i̶s̶ ̶r̶a̶n̶ ̶o̶n̶ ̶t̶h̶e̶ ̶r̶o̶b̶o̶r̶i̶o̶ ̶i̶t̶ ̶w̶i̶l̶l̶ ̶r̶e̶t̶u̶r̶n̶ ̶w̶h̶a̶t̶ ̶I̶ ̶a̶s̶s̶u̶m̶e̶ ̶i̶s̶ ̶r̶a̶n̶d̶o̶m̶ ̶b̶y̶t̶e̶s̶ ̶e̶g̶.̶ ̶̶B̶@̶8̶c̶f̶4̶c̶6̶̶B̶@̶e̶d̶c̶d̶2̶1̶̶B̶@̶c̶4̶5̶d̶c̶a̶ ̶e̶t̶c̶ ̶e̶t̶c̶ ̶w̶i̶t̶h̶ ̶n̶o̶ ̶p̶a̶t̶t̶e̶r̶n̶ ̶
̶U̶P̶D̶A̶T̶E̶ ̶I̶ ̶a̶l̶s̶o̶ ̶n̶o̶w̶ ̶g̶e̶t̶ ̶e̶r̶r̶o̶r̶s̶ ̶i̶n̶ ̶m̶y̶ ̶r̶i̶o̶l̶o̶g̶ ̶w̶h̶i̶c̶h̶ ̶s̶a̶y̶ ̶W̶A̶R̶N̶I̶N̶G̶:̶ ̶R̶o̶b̶o̶t̶s̶ ̶d̶o̶n̶’̶t̶ ̶q̶u̶i̶t̶

Okay fixed a couple errors, hooked it up to the roborio and initiated a serial connection there at 9600 baudrate now it prints out to the riolog when I do a system.out.println(serial.readString()) however I am doing no encoding so just ser.write(‘hello’) I am now getting in my riolog ?::

This thread might help you

Thank you everyone, after going to http://www.chiefdelphi.com/forums/showthread.php?t=132680 (special thanks to orangelight for the link) we learned that another team solved this by using the usb port instead of the serial port and then used a usb prolific rs-232 converter directly into the rio. Thank you all for your help!

So you worked around it.
It seems like a timing issue.