On 09/05/2013 16:35, chandan kumar wrote:
Hi all,
I'm new to python and facing issue using serial in python.I'm facing the
below error
* ser.write(port,command)*
*NameError: global name 'ser' is not defined*
*
*
Please find the attached script and let me know whats wrong in my script
and also how can i read data from serial port for the same script.
Best Regards,
Chandan.
RunScripts.py
import time
import os
import serial
import glob
ER_Address = [[0x0A,0x01,0x08,0x99,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB]]
"""
----------------------------------------------------------------------------------------------------------------------------
Function Name: RunSequence
----------------------------------------------------------------------------------------------------------------------------
Function Description:
---------------------
A RunSequence function has Multiple calls to the RunSuite function, each call
is a single testcase consisting of all the parameters
required by the RunTesSuite.
-----------------------------------------------------------------------------------------------------------------------------
"""
def WriteSerialData(command):
'ser' isn't a local variable (local to this function, that is), nor is
it a global variable (global in this file).
ser.write(port,command)
def SendPacket(Packet):
str = chr(len(Packet)) + Packet #Concatenation of Packet with the
PacketLength
print str
WriteSerialData(str)
def CreateFrame(Edata):
It's more efficient to build a list of the characters and then join
them together into a string in one step than to build the string one
character at a time.
Also, indexing into the list is considered 'unPythonic'; it's much
simpler to do it this way:
return chr(0x12) + "".join(chr(d) for d in Edata)
evt = chr(0x12)
evt = evt + chr(Edata[0])
for i in range (1, len(Edata)):
evt = evt + chr(Edata[i])
return evt
def SetRequest(data):
print data
new = []
new = sum(data, [])
Addr = CreateFrame(new)
SendPacket(Addr)
print "SendPacket Done"
ReadPacket()
def OpenPort(COMPort,BAUDRATE):
"""
This function reads the serial port and writes it.
"""
comport=COMPort
BaudRate=BAUDRATE
try:
ser = serial.Serial(
port=comport,
baudrate=BaudRate,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
timeout=10,
xonxoff=0,
rtscts=0,
dsrdtr=0
)
if ser.isOpen():
print "Port Opened"
ser.write("Chandan")
string1 = ser.read(8)
print string1
This function returns either ser ...
return ser
else:
print "Port CLosed"
ser.close()
... or 3 ...
return 3
except serial.serialutil.SerialException:
print "Exception"
ser.close()
... or None!
if __name__ == "__main__":
CurrDir=os.getcwd()
files = glob.glob('./*pyc')
for f in files:
os.remove(f)
OpenPort returns either ser or 3 or None, but the result is just
discarded.
OpenPort(26,9600)
SetRequest(ER_Address)
#SysAPI.SetRequest('ER',ER_Address)
print "Test Scripts Execution complete"
--
http://mail.python.org/mailman/listinfo/python-list