Vinay
Vinay

Reputation: 11

python3.5: serial port reading gives error

While reading serial port from COM4 port using python, i get the following error:

 ----------------------------------------------------------------------------
F:\Invsense\motion_driver_6.12\eMPL-pythonclient>python.exe eMPL-client.py 4
Traceback (most recent call last):
File "eMPL-client.py", line 543, in <module>
data_delegate = data)
File "eMPL-client.py", line 23, in __init__
self.s = serial.Serial(port,115200)
File "C:\Users\admin\AppData\Local\Programs\Python\Python35-32\lib\site-
 packages\pyserial-3.1.1-py3.5.egg\serial\serialwin32.py", line 31, in   __init__

File "C:\Users\admin\AppData\Local\Programs\Python\Python35-32\lib\site- packages\pyserial-3.1.1-py3.5.egg\serial\serialutil.py", line 162, in init File "C:\Users\admin\AppData\Local\Programs\Python\Python35-32\lib\site- packages\pyserial-3.1.1-py3.5.egg\serial\serialutil.py", line 206, in port ValueError: "port" must be None or a string, not

F:\Invsense\motion_driver_6.12\eMPL-pythonclient>


This error is coming from serialutil.py. Can you please help me to resolve this problem. I checked COM4 port seperately using putty tool and it worked fine.

Regards Vinay

Upvotes: 0

Views: 1021

Answers (1)

armitage
armitage

Reputation: 1

The problem is with the Invensense python script.

  1. Open eMPL-client.py in text editor and search for the line: comport = int(sys.argv[1]) - 1

  2. change it to: comport = sys.argv[1]

The script was trying to cast the string 'COM4' into an integer before passing it to the serial function, which wants a string anyway. I think maybe they were using an old version of pyserial because there are some other errors in the script.

  1. Comment out (or delete) these lines:

    self.s.setTimeout(0.1)
    self.s.setWriteTimeout(0.2)
    
  2. Run the client with python eMPL-client.py COM4

After all this my python client is showing the MPU data correctly. I hope this isn't too late!

Upvotes: 0

Related Questions