class vspe: def __init__(self): self.vs = Dispatch("VSPE.VSPEApi") self.activationKey = 'SRBGMZSYPuIHWILsmLjF5CDyBL3GQYD0IPIEvcZBgPQg8gS9xkGA9CDyBL3GQYD0IPIE' + \ 'vcZBgPQg8gS9xkGA9CDyBL3GQYD0IPIEvcZBgPQg8gS9xkGA9CDyBL3GQYD0IPIEvcZB' + \ 'gPQg8gS9xkGA9CDyBL3GQYD0IPIEvcZBgPRJEEYxlJg+4gdYguyYuMXkIPIEvcZBgPQg' + \ '8gS9xkGA9CDyBL3GQYD0IPIEvcZBgPQg8gS9xkGA9CDyBL3GQYD0IPIEvcZBgPQg8gS9' + \ 'xkGA9CDyBL3GQYD0IPIEvcZBgPQg8gS9xkGA9CDyBL3GQYD0IPIEvcZBgPQg8gS9xkGA' + \ '9JyUaC2ZWE1DZV2+wYWlRm7FFYrW3MDbZg8MkQsOQ8r1IPIEvcZBgPQg8gS9xkGA9Lzr' + \ 'hjimHDiMlKqr6pSiw9CDl9n+0bAgFr2ho7nXjCoTMHYzt4tsbEkJGNktLGVG42SZ63Ub' + \ 'mIUNcKmfhSzXldVCLhfvZv3StR9c/vkYG471Nh62eC1qIYuBUvm+a3BK8iR0POD8w5ov' + \ 'tuYr0T8aQP3eh4b8lUwnPHG9NRJxerttq/+/zX7c++9LDSQym3ThbWesK+A+X/vNw9qD' + \ 'gYt1dsJxDEEytsCRiT7bTiV5Djh1RlpIwETXWA089hiE9OYd7GpjKLq5dQOqSVcA3Fg1' + \ 'Wfdbqn/yn8q0/AIDOd0iZlbVeLY68zKh1Di4gGEoa1kR8EOBp2mxeaFrfwUm3DsJ5Pc0' + \ '4f7aEw9XljfBUwl/bAs3LVH5HRii8lXZvUVvnnfpcQ==1F250CF0960AE1C09E9450C8' + \ '16DE1232'; def initialize(self): self.vs.vspe_activate(self.activationKey) self.vs.vspe_initialize() self.vs.vspe_destroyAllDevices() self.vs.vspe_stopEmulation() self.vs.vspe_release() self.comlst = [] #com ports already being used print 'vspe initialized' def findNextCOM(self): next = True num = 1 used = [] for each in self.comlst: used.append(each[1]) for port in comports(False): used.append(port[1]) while next: name = 'COM' + str(num) try: used.index(name) num += 1 except ValueError: next = False return num if num == 99: next = False return None def createCOM(self, comstr=''): #comstr must be COM#... ex. COM3 if comstr != '': num = int(comstr[3:comstr.__len__()]) else: num = self.findNextCOM() self.vs.vspe_stopEmulation() self.vs.vspe_release() self.vs.vspe_initialize() # create Connector (COM#, no baud rate emulation) com = str(num)+';0' dev = self.vs.vspe_createDevice('Connector',com) #int to be closed by vspe.vspe_destroyDevice # start emulation self.vs.vspe_startEmulation() name = 'COM' + str(num) #name to be opened/closed by serial vcom = Serial(name, 38400, timeout=.5) tpl = (dev, name, vcom) self.comlst.append(tpl) return name def removeCOM(self, tpl): '''tpl = (dev, name, vcom)''' tpl[2].close() self.vs.vspe_destroyDevice(tpl[0]) self.comlst.remove(tpl) def write(self, line): for com in self.comlst: com[2].write(line) def close(self): for each in self.comlst: self.removeCOM(each) self.vs.vspe_stopEmulation() self.vs.vspe_release()