Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!solaris.cc.vt.edu!news.vt.edu!newsfeed-00.mathworks.com!panix!not-for-mail From: Grant Edwards Newsgroups: comp.lang.python Subject: Re: PySerial could not open port COM4: [Error 5] Access is denied - please help Date: Thu, 28 Jun 2012 14:15:15 +0000 (UTC) Organization: PANIX Public Access Internet and UNIX, NYC Lines: 75 Message-ID: References: NNTP-Posting-Host: dsl.comtrol.com X-Trace: reader1.panix.com 1340892915 28837 64.122.56.22 (28 Jun 2012 14:15:15 GMT) X-Complaints-To: abuse@panix.com NNTP-Posting-Date: Thu, 28 Jun 2012 14:15:15 +0000 (UTC) User-Agent: slrn/pre1.0.0-18 (Linux) Xref: csiph.com comp.lang.python:24614 On 2012-06-28, Adam 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 ...