On May 7, 2010, at 2:08 PM, MRAB wrote: > William R. Wing (Bill Wing) wrote: >> Hello World - >> I'm new to both Python and this list, but here's hoping someone can spot my >> problem. >> System: Mac OS-X, 10.6.3 (Intel dual quad processor) >> Using Python 2.6.1, and pyserial-2.5_rc2-py2.6 >> The following snippet of code is designed to open a port via a KeySpan >> USB-to-serial converter and communicate with an X10 power line signaling >> system. Before you look at the code, let me mention that my frustration is >> the it executes perfectly if i enter it line by line at the Python prompt, >> and executes perfectly if I run it under the Wing IDE. It fails silently >> (no errors) if I run it as a standalone script. Clearly, I'm missing >> something. > What do you mean "It fails silently"? It might be unable to find the > modules if you double-click on the script. You could check for that by > printing a message if the import statement raises an ImportError.
Maybe I should have been more explicit. The first line in the Python file is: #!/usr/bin/env Python (alternatively #!/usr/bin/Python - same results either way). and what I meant was that when I invoke it from a UNIX CLI window, it fails. If the import were failing, wouldn't I get failures on the serial operations? In particular, the ser object is exactly what it should be. If I print it out, I get the same value for ser from either the UNIX CLI or in the debugger, and in both cases it says "open=True" The various status print statements give exactly the same (expected) results in both cases. But when invoked from the terminal window, the X10 controller doesn't get commands. If I invoke python from the same window, and enter the script code interactively one line at a time - it works just fine. >> TIA, >> Bill Wing >> import serial, string >> port = '/dev/tty.KeySerial1' >> ser = serial.Serial(port, 9600, timeout=1) # Set up handle to serial port >> stat1 = ser.write('\x02') # Write "Attention" to PowerLink >> print(' Stat1 is:', stat1) ack = ser.read(2) >> # Check to see if PowerLink is ready >> if ack == '\x06\r': # It returns ACK (\x06) \r if >> it is >> stat2 = ser.write('\x63\x4E\x5C\x45\x41')# send "On" to module at House >> Code B, device code 2 >> print(' Stat2 is:', stat2) >> stat3 = ser.close() # Close serial port >> print(' Stat3 is:', stat3) >> elif ack =='\x15': # PowerLink sends NAC (hex 15) >> if it isn't. >> print('Received NAK after first open') >> else: print("Something's wrong at 1.\n") >> dummy = raw_input(' Hit any key to continue: ') > > -- > http://mail.python.org/mailman/listinfo/python-list
-- http://mail.python.org/mailman/listinfo/python-list