serial communication error for loop

Chris Angelico rosuav at gmail.com
Tue Mar 13 21:13:18 EDT 2018


On Wed, Mar 14, 2018 at 11:23 AM, Dhileepan Kumar <dhilip04211 at gmail.com> wrote:
>
> #!/usr/bin/python
>
> import serial
> import MySQLdb
> while True:
> #establish connection to MySQL. You'll have to change this for your database.
>         dbConn = MySQLdb.connect("localhost","root","1234","ifet") or die ("could not connect to database")

Ah, you've come from Perl I see.

>         #open a cursor to the database
>         cursor = dbConn.cursor()
>
>         device = 'com3' #this will have to be changed to the serial port you are using
>         arduino = serial.Serial(device, 9600)

You're opening the database AND the serial port every time you go
through the loop. Is that intentional?

>         try:
>           data = arduino.readline()  #read the data from the arduino
>           if not data.strip():
>            continue
>           pieces = data.split("\t")  #split the data by the tab
>           #Here we are going to insert the data into the Database
>           try:
>                 cursor.execute("INSERT INTO answer1 (voltage,current) VALUES (%s,%s)", (pieces[0],pieces[1]))
>                 dbConn.commit() #commit the insert
>                 cursor.close()  #close the cursor
>           except MySQLdb.IntegrityError:
>                 print "failed to insert data"
>           finally:
>                 cursor.close()  #close just incase it failed
>         except:
>           print "Failed to get data from Arduino!"

Ouch. Any exception, you just print out a generic message and move on?
You're blinding yourself. Let the exception get properly displayed. It
might help you.

> ................................................................................
> it is my program.if do not use while true loop successfully run but can't get a continues data from arduino so i have decide to using while loop  but if using while loop shows some error
>
>
> (project) C:\Users\DHILEEPAN\project\project>python mysql.py
> Traceback (most recent call last):
>   File "mysql.py", line 13, in <module>
>     arduino = serial.Serial(device, 9600)
>   File "C:\Users\DHILEEPAN\Envs\project\lib\site-packages\serial\serialwin32.py", line 31, in __init_
>     super(Serial, self).__init__(*args, **kwargs)
>   File "C:\Users\DHILEEPAN\Envs\project\lib\site-packages\serial\serialutil.py", line 240, in __init_
>     self.open()
>   File "C:\Users\DHILEEPAN\Envs\project\lib\site-packages\serial\serialwin32.py", line 62, in open
>     raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError()))
> serial.serialutil.SerialException: could not open port 'com3': WindowsError(5, 'Access is denied.')
>
> please any one fix this
>

This looks like possibly the device is already in use. Try opening the
device _just once_, or if you have to reopen it every time through the
loop, make sure you close it.

ChrisA



More information about the Python-list mailing list