Skip to content

Commit b9ac4dd

Browse files
author
Myles Metzler
committed
fixing names
1 parent 4adc764 commit b9ac4dd

File tree

9 files changed

+5685
-0
lines changed

9 files changed

+5685
-0
lines changed

chamberconnectlibrary/P300.py

Lines changed: 1530 additions & 0 deletions
Large diffs are not rendered by default.

chamberconnectlibrary/__init__.py

Whitespace-only changes.

chamberconnectlibrary/controllerinterface.py

Lines changed: 1142 additions & 0 deletions
Large diffs are not rendered by default.

chamberconnectlibrary/espec.py

Lines changed: 638 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
'''
2+
Handle the actual communication with Espec Corp. Controllers
3+
4+
:copyright: (C) Espec North America, INC.
5+
:license: MIT, see LICENSE for more details.
6+
'''
7+
#pylint: disable=W0703
8+
import socket
9+
import serial
10+
import time
11+
12+
class EspecError(Exception):
13+
'''
14+
Generic Espec Corp controller error
15+
'''
16+
pass
17+
18+
class EspecSerial(object):
19+
'''
20+
Handles low level communication to espec corp controllers via serial (RS232/485)
21+
'''
22+
def __init__(self, **kwargs):
23+
self.address = kwargs.get('address', None)
24+
self.delimeter = kwargs.get('delimeter', '\r\n')
25+
self.serial = serial.Serial(
26+
port=kwargs.get('port'),
27+
baudrate=kwargs.get('baud', 9600),
28+
bytesize=kwargs.get('databits', 8),
29+
parity=kwargs.get('parity', 'N'),
30+
stopbits=kwargs.get('stopbits', 1),
31+
timeout=kwargs.get('timeout', 3)
32+
)
33+
34+
def __del__(self):
35+
try:
36+
self.close()
37+
except Exception:
38+
pass
39+
40+
def close(self):
41+
'''
42+
Close the connection the the chamber
43+
'''
44+
self.serial.close()
45+
46+
def interact(self, message):
47+
'''
48+
Send a message to the chamber and get its response
49+
50+
params:
51+
message: the message to send (str)
52+
returns:
53+
string: response from the chamber
54+
raises:
55+
EspecError
56+
'''
57+
message = message.encode('ascii', 'ignore')
58+
if self.address:
59+
self.serial.write('%d,%s%s'%(self.address, message, self.delimeter))
60+
else:
61+
self.serial.write('%s%s' % (message, self.delimeter))
62+
recv = ''
63+
while recv[0-len(self.delimeter):] != self.delimeter:
64+
rbuff = self.serial.read(1)
65+
if len(rbuff) == 0:
66+
raise EspecError('The chamber did not respond in time')
67+
recv += rbuff
68+
if recv.startswith('NA:'):
69+
msg = 'EspecError: command:"%s" genarated Error:"%s"' % (
70+
message, recv[3:0-len(self.delimeter)]
71+
)
72+
raise EspecError(msg)
73+
return recv[:-1*len(self.delimeter)]
74+
75+
class EspecTCP(object):
76+
'''
77+
Handles low level communication to espec corp controllers via serial TCP
78+
'''
79+
def __init__(self, **kwargs):
80+
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
81+
self.socket.setblocking(True)
82+
self.socket.connect((kwargs.get('host'), kwargs.get('port', 10001)))
83+
self.address = kwargs.get('address', None)
84+
self.delimeter = kwargs.get('delimeter', '\r\n')
85+
86+
def __del__(self):
87+
try:
88+
self.close()
89+
except Exception:
90+
pass
91+
92+
def close(self):
93+
'''
94+
Close the connection the the chamber
95+
'''
96+
self.socket.close()
97+
time.sleep(0.1)
98+
99+
def interact(self, message):
100+
'''
101+
Send a message to the chamber and get its response
102+
103+
params:
104+
message: the message to send (str)
105+
returns:
106+
string: response from the chamber
107+
raises:
108+
EspecError
109+
'''
110+
message = message.encode('ascii', 'ignore')
111+
# TCP forwarder doesnt handle address properly so we are ignoring it.
112+
# if self.address:
113+
# self.socket.send('%d,%s%s'%(self.address, message, self.delimeter))
114+
# else:
115+
# self.socket.send('%s%s'%(message, self.delimeter))
116+
self.socket.send('%s%s'%(message, self.delimeter))
117+
recv = ''
118+
while recv[0-len(self.delimeter):] != self.delimeter:
119+
recv += self.socket.recv(1)
120+
if recv.startswith('NA:'):
121+
msg = 'EspecError: command:"%s" generated Error:"%s"' % (
122+
message, recv[3:0-len(self.delimeter)]
123+
)
124+
raise EspecError(msg)
125+
return recv[:-2]

0 commit comments

Comments
 (0)