| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | 
							- import crcmod, copy, struct, sys, os, fcntl
 
- from datetime import datetime
 
- from serial import *
 
- import socket
 
- import debug
 
- class PortgwSerial(object):
 
- 	def __init__(self, _serial_port, _baudrate, _bytesize=8,
 
- 			_parity='N', _stopbits=1):
 
- 		self.serial_port = _serial_port
 
- 		self.baudrate = _baudrate
 
- 		self.bytesize = _bytesize
 
- 		self.parity = _parity
 
- 		self.stopbits = _stopbits
 
- 		self.serial_resume()
 
- 		self.name = "UART"
 
- 	def serial_pause(self):
 
- 		if self.serial != None:
 
- 			self.serial.close()
 
- 		self.serial = None
 
- 	def serial_resume(self):
 
- 		self.serial = serial_for_url(self.serial_port, self.baudrate, bytesize=self.bytesize, 
 
- 			parity=self.parity, stopbits=self.stopbits, rtscts=False, xonxoff=False, timeout=0.12)
 
- 		return self.serial != None
 
- 	def open(self):
 
- 		if self.serial == None:
 
- 			return self.serial_resume()
 
- 		else:
 
- 			return True
 
- 	def close(self):
 
- 		self.serial_pause()
 
- 	def read(self, nbytes, timeout = 1):
 
- 		data = ''
 
- 		self.serial.timeout = timeout
 
- 		while len(data) < nbytes:
 
- 			ret = self.serial.read(nbytes)
 
- 			if len(ret) == 0:
 
- 				break
 
- 			data += ret
 
- 		return data
 
- 	def write(self, data):
 
- 		self.serial.flushInput()
 
- 		self.serial.flushOutput()
 
- 		ret = self.serial.write(data)
 
- 		# self.serial.flush()
 
- 		return ret
 
- class PortgwTcp(object):
 
- 	def __init__(self, _ip, _port):
 
- 		self.ip = _ip
 
- 		self.port = _port
 
- 		self.name = "TCP"
 
- 	def open(self):
 
- 		self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
- 		try:
 
- 			self.sock.connect((self.ip, self.port))
 
- 			# fcntl.fcntl(self.sock, fcntl.F_SETFL, os.O_NONBLOCK)
 
- 		except socket.error, e:
 
- 			print "\r\nConnection to %s:%s failed. Exit" %(self.ip, self.port)
 
- 			return False
 
- 		time.sleep(0.1)
 
- 		return True
 
- 	def close(self):
 
- 		self.sock.close()
 
- 	def read(self, nbytes, timeout = 1):
 
- 		data = ''
 
- 		self.sock.settimeout(timeout)
 
- 		while len(data) < nbytes:
 
- 			try:
 
- 				ret = self.sock.recv(nbytes)
 
- 			except socket.error, e:
 
- 				err = e.args[0]
 
- 				if err == 'timed out':
 
- 					break
 
- 			data += ret
 
- 		return data
 
- 	def write(self, data):
 
- 		sent = self.sock.send(data)
 
- 		if sent == 0:
 
- 			raise RuntimeError("socket connection broken")
 
- 		return sent
 
 
  |