diff options
author | Wolfgang Draxinger <Wolfgang.Draxinger@draxit.de> | 2011-11-16 15:51:49 +0100 |
---|---|---|
committer | Wolfgang Draxinger <Wolfgang.Draxinger@draxit.de> | 2011-11-16 15:51:49 +0100 |
commit | a888ebb5b557bbe5ad1964f5f8106b85aa4a0f0b (patch) | |
tree | 8c29f21c2ab01d56eab682ed1d8806910f7801cc | |
parent | 374241100b88117b040498516da103723a80dd67 (diff) | |
download | PyPhytron-a888ebb5b557bbe5ad1964f5f8106b85aa4a0f0b.tar.gz PyPhytron-a888ebb5b557bbe5ad1964f5f8106b85aa4a0f0b.tar.bz2 |
Short timeout for enumeration
-rw-r--r-- | Phytron.py | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -161,7 +161,7 @@ class IPCOMM: self.conn.rtscts = False self.conn.dsrdtr = False self.conn.xonxoff = False - self.conn.timeout = 0.1 + self.conn.timeout = 0.5 self.axisByID = dict() self.axisByName = dict() self.enumerate(axisnames) @@ -172,20 +172,22 @@ class IPCOMM: return self.axisByID[int(nameOrID)] def enumerate(self, names=None): + # Use a only short timeout for enumeration. + oldtimeout = self.conn.timeout + self.conn.timeout = 0.05 self.axisByID.clear() self.axisByName.clear() for ID in range(0x10): try: - assert self.execute(ID, 'IS?').ID == ID - axis = Axis(self, ID) - self.axisByID[ID] = axis - - if (isinstance(names, dict) and names.haskey(ID)) or (isinstance(names, list) and ID < len(names)): - assert names[ID].isalpha() - self.axisByName[str(names[ID])] = axis - + if self.execute(ID, 'IS?').ID == ID: + if ((isinstance(names, dict) and names.haskey(ID)) or (isinstance(names, list) and ID < len(names))) and names[ID].isalpha(): + axis = self.axisByName[str(names[ID])] = Axis(self, ID, names[ID]) + else: + axis = Axis(self, ID) + self.axisByID[ID] = axis except ReceiveTimeout: continue + self.conn.timeout = oldtimeout def send(self, data): self.conn.write('\x02' + data + ':' + ('%02X' % checksum(data + ':')) + '\x03') |