2

When initializing serial connection using python pyserial without any baud-rate, It goes to the default 9600 baud configuration

ser = serial.Serial('/dev/ttyUSB0')

Does this pyserial have any option that it read / write to the serial port with the already configured settings that which configured through another application or stty linux command ?

asked Nov 18, 2015 at 13:49
1
  • Could you please clarify your question by adding more details as an explanation? I did not get, what you're asking... Commented Nov 18, 2015 at 14:02

1 Answer 1

1

I've investigated pySerial's source code. It seems this is not possible. PySerial has a set of defaults. And if I'm not mistaken, when you call open() method it will always configure port to these defaults or whatever setting you changed them to.

This is the relevant bit from the implementation of Serial::open() method:

def open(self):
 """\
 Open port with current settings. This may throw a SerialException
 if the port cannot be opened."""
 # ... ...
 # open
 try:
 self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
 except OSError as msg:
 self.fd = None
 raise SerialException(msg.errno, "could not open port %s: %s" % (self._port, msg))
 #~ fcntl.fcntl(self.fd, fcntl.F_SETFL, 0) # set blocking
 try:
 # **this is where configuration occurs**
 self._reconfigure_port(force_update=True)
 except:
 try:
 os.close(self.fd)
 except:
 # ignore any exception when closing the port
 # also to keep original exception that happened when setting up
 pass
 self.fd = None
 raise
 else:

https://github.com/pyserial/pyserial/blob/master/serial/serialposix.py#L299

I see two alternatives for you; get the settings that you are interested from the system (using stty maybe) before calling Serial::open() and set these settings explicitly.

Another option is to subclass PySerial's Serial class, re implement ::open() method, skip the configuration part:

 # self._reconfigure_port(force_update=True)

I'm not sure if that would work though. It may cause problems, because other parts of the implementation are expecting port to be in a specific configuration, but it isn't.

UPDATE: I think a better implementation of open() method would read the settings from the opened port and set necessary attributes/properties of the Serial object to reflect these settings.

answered Nov 18, 2015 at 15:10
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.