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

Adam adam at no_thanks.com
Thu Jun 28 22:31:48 CEST 2012


"Grant Edwards" <invalid at invalid.invalid> wrote in message 
news:jshotj$s55$1 at reader1.panix.com...
> On 2012-06-28, Adam <adam at no_thanks.com> wrote:
>
>> Obviously pySerial considers the serial port open
>
> Because it's already been opened by the Python program.
>
>> and will not open an already open serial port.
>
> Pyserial will happily try if you call the open() of a port that's
> already open, but Windows will return an error.
>
>> However, why is it that TeraTerm can open the serial port?
>
> Because TeraTerm only opens it once.
>
>> Here's the link where I read about calling ser.close() before
>> ser.open() ...
>>
>> Trying to open a serial port with pyserial on WinXP -> "Access denied"
>>
>> http://stackoverflow.com/questions/2063257/trying-to-open-a-serial-port-with-pyserial-on-winxp-access-denied
>
> That code is broken.
>
> The port is opened by this line:
>
> self.ser=serial.Serial(port='\\.\COM1', baudrate=9600, 
> bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, 
> stopbits=serial.STOPBITS_ONE, timeout=1)
>
> And then the author tries to _open_it_a_second_time_ here:
>
> self.ser.open()
>
>> Here's the Python scripts ...
>> https://github.com/adafruit/Tweet-a-Watt/downloads
>> Click on the "Download as ..." button for the Python scripts
>
> Like I kept telling you, those programs are trying to re-open a port
> that they've already open.  Here's the erroneous code:
>
> wattcher.py:
>
>    53
>    54  # open up the FTDI serial port to get data transmitted to xbee
>    55  ser = serial.Serial(SERIALPORT, BAUDRATE)
>    56  ser.open()
>    57
>
> Line 55 opens the serial port.
>
> Line 56 tries to _open_it_again_.  _The_port_is_already_open_.
> Windows doesn't allow a serial port to be opened twice, therefore the
> ser.open() call raises an exception.
>
> Just delete line 56.
>
>
> The same thing happens here:
>
> gmeter-wattcher.py
>
>    83
>    84  # open up the FTDI serial port to get data transmitted to xbee
>    85  ser = serial.Serial(SERIALPORT, BAUDRATE)
>    86  ser.open()
>    87
>
> Just delete line 86.
>
> See how simple it was to get the problem solved once you posted the
> actual code?
>
> -- 
> Grant Edwards               grant.b.edwards        Yow! HUMAN REPLICAS are
>                                  at               inserted into VATS of
>                              gmail.com            NUTRITIONAL YEAST ...


Thanks, Grant !




More information about the Python-list mailing list