PySerial could not open port COM4: [Error 5] Access is denied - please help

Grant Edwards invalid at invalid.invalid
Wed Jun 27 18:06:54 EDT 2012


On 2012-06-27, Adam <adam at no_thanks.com> wrote:
> "Grant Edwards" <invalid at invalid.invalid> wrote:
>> On 2012-06-27, Adam <adam at no_thanks.com> wrote:
>>
>>> The Python script needed a call to ser.close() before ser.open() in
>>> order to work.
>>
>> IOW, the port opened OK, but when you tried to open it a second time
>> without closing it first, _that's_ when the .open() call failed.
>>
>> That's a restriction built in to Win32.  You can't open a serial port
>> that's already open.  [Linux doesn't have that restriction.]
>>
>> Why do you need to open it a second time?
>
> As far as I can tell, the wireless hardware connected to the
> USB-to-serial converter is receiving data (which may have the serial
> port open?).  I can see the data being received in TeraTerm (using
> COM4).  After closing TeraTerm, I start up the Python script and get
> the following error message ...
>
> C:\Wattcher>python wattcher.py
> Traceback (most recent call last):
>   File "wattcher.py", line 56, in <module>
>     ser.open()
>   File "C:\Python25\Lib\site-packages\serial\serialwin32.py", line 56, in
> open
>     raise SerialException("could not open port %s: %s" % (self.portstr,
> ctypes.WinError()))
> serial.serialutil.SerialException: could not open port COM4: [Error 5]
> Access is denied.
>
>
> Searching for similar encounters of this error message, some people
> said that calling ser.close() before ser.open() solved the problem.
> And, it worked for me as well.
>
> Is this considered a chicken & egg situation?

Can you post a small example showing what you're doing?

If you're getting that error (and calling ser.close() makes that error
go away), then it's because you're trying to re-open a port that you
already have open.

What happens if you just get rid of both the ser.close() and
ser.open() calls?  IOW, the port is apparently already open -- why do
you want to close() and then re-open() it?

-- 
Grant Edwards               grant.b.edwards        Yow! I wonder if I should
                                  at               put myself in ESCROW!!
                              gmail.com            



More information about the Python-list mailing list