def __init__(self,*args,**kwargs):
        if 'debug' in kwargs:
            self.debug = kwargs['debug']
        else:
            kwargs.update({'debug': DEBUG})
            self.debug = DEBUG
        if 'baudrate' not in kwargs:
            kwargs.update({'baudrate': BAUDRATE})
        elif (kwargs['baudrate'] is None) or (str(kwargs['baudrate']).lower() == 'default'):
            kwargs.update({'baudrate': BAUDRATE})
        if 'timeout' not in kwargs:
            kwargs.update({'timeout': self._TIMEOUT})
        if 'write_write_delay' not in kwargs:
            kwargs.update({'write_write_delay': self._WRITE_WRITE_DELAY})
        if ('port' not in kwargs) or (kwargs['port'] is None):
            err_string = 'Specify port.\n'
            raise RuntimeError(err_string)
        else:
            self.port = kwargs['port']

        t_start = time.time()
        self._serial_device = SerialInterface(*args,**kwargs)
        atexit.register(self._exit_mettler_toledo_device)
        time.sleep(self._RESET_DELAY)
        t_end = time.time()
        self._debug_print('Initialization time =', (t_end - t_start))
예제 #2
0
    def connectDevice(self):
        if not self.iface:
            self.iface = self.ifaces[self.listDevices.currentRow()]

        if self.iface:
            if not self.iface.isConnected():
                self.iface = SerialInterface(self.port, self.baud)
                self.iface.connectToArduino()

            if not self.iface.serial_conn.isOpen():
                self.iface.serial_conn.open()

            if self.iface.isConnected():
                if self.iface_thread:
                    del self.iface_thread

                self.iface_thread = SerialThread(self.iface)
                self.iface_thread.n_samples = 1000
                self.iface_thread.gotSamples[tuple, int].connect(
                    self.plotWindow.plotSamples)
                #self.iface_thread.deviceDisconnected.connect(self.disconnectFromCurrentDevice)

                self.startSampling()

                return True

        return False
예제 #3
0
    def __init__(self, server_com_port, baudrate):
        
        # Setup serial interface.
        self._serial_interface = SerialInterface(server_com_port, baudrate, 50)
        self._serial_interface.set_read_callback(self._on_serial_read)

        # The byte parser analyses the byte string from the sensor
        # and divides it into individual sentences.
        self._byte_parser = ByteParser()

        self._current_sentence = bytearray()

        # If set, all raw data from serial port will be stored to this file.
        self._log_file = None 

        # Locks
        #self._ack_lock = threading.Condition()	
        self._wait_for_sentence_lock = threading.Condition()
        self._wait_for_sentence_type = None
        self._wait_for_sentence_data = None

        # Callbacks for NMEA sentences.
        self._GGA_cb = None
        self._RMC_cb = None
        self._GSV_cb = None
        self._GST_cb = None

        # Callbacks for ASCII sentences.
        self._BESTPOS_cb = None
        self._BESTVEL_cb = None
        self._TIME_cb = None
        self._PSRDOP_cb = None

        # Special callbacks.
        self._reset_cb = None
        
        # GSV information is sometimes split up into multiple sentences.
        # Need to gather all informations before calling callback.
        self._GSV_data = None

        # Total number of sentences until the GSV data we are currently
        # waiting for is complete
        self._received_GSV_sentences = 0
예제 #4
0
    def run(self):
        while True:
            for port in self.ports:
                if port in self.found: continue
                try:
                    serial = SerialInterface(port, 115200)
                    serial.connectToArduino()
                    if serial.isConnected():
                        serial.serial_conn.timeout = 0.2 # read timeout of 200 millisecond
                        samples = serial.getSamples(20)
                        
                        if samples:
                            serial.serial_conn.timeout = None
                            self.foundDevice.emit(port, serial)
                            self.found.append(port)
                        else:
                            serial.disconnect()

                except Exception, e:
                    #print port, e
                    continue
                finally:
                    if serial.isConnected() and not port in self.found:
import serial
import socketio
import struct
import eventlet
from serial_interface import SerialInterface

# If no params reply with G

# TIME OUT SET TO NONE SO when reading, will only read once done.
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=None)
sio  = socketio.Server()
app = socketio.WSGIApp(sio)
thread = None

PORT = 5000
serial_interface = SerialInterface(ser, sio)

@sio.on('connect')
def connect(sid, message):
  global thread
  global serial_interface
  print('connected')
  if thread == None:
    thread = sio.start_background_task(target=serial_interface.background_process)

def set_params_to_send(sid, params):
  parameter_names = [
    "mode",
    "fiO2",
    "peep",
    "inspiratoryPressure",
예제 #6
0
from serial_interface import SerialInterface

PORT_NAME = '/dev/panachrome'
BAUD_RATE = 115200

# Set this variable to "threading", "eventlet" or "gevent" to test the
# different async modes, or leave it set to None for the application to choose
# the best option based on installed packages.
async_mode = None

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app, async_mode=async_mode)
thread = None

serial_port = SerialInterface()


def serial_event(data):
    """
    Data received form the serial port
    """

    if data:
        socketio.emit('rx_data', {'data': data}, namespace='/test')


def serial_listener():
    """
    Continuously poll the serial port, replies from the controller
    """
예제 #7
0
import wx
import thread
import time
import Queue
from Tkinter import Tk, Canvas, Frame, BOTH

from serial_interface import SerialInterface

ser = SerialInterface("/dev/ttyUSB0")

packets = Queue.Queue()
commands = Queue.Queue()

root = Tk()


# FE FE E0 94 27 00 00 02 11
# 		3D 41 3E 39 40 47 4B 3D 32 3A 3E 34 31 40 3B 4D 4A 48 38 3A 43 52 4D 38 2C
#		33 3D 3C 2E 24 40 33 25 11 31 3C 3E 3F 33 2D 48 5E 6D 5E 3B 27 41 3C 42 47 FD
def task():
    canvas.delete("all")
    root.after(1000, task)
    #print "frame"
    while (not packets.empty()):
        pkt = packets.get()
        print(' '.join("{:02X}".format(ord(i)) for i in pkt))

        if (pkt[0:4] == "\xfe\xe0\x94\x27"):
            if pkt[6] != chr(0x01):
                a = pkt.split(chr(0x11))[1]
                values = [ord(i) for i in a]
예제 #8
0
    def setUp(self):
        # Create instance
        self.serial_interface = SerialInterface("test")

        # Start
        self.serial_interface.start()
import sys
import error

#sds python libraries
sys.path.append('..\libraries')
from logger import _print, _print_bytes, APP, ERROR, WARNING, DEBUG
from serial_interface import SerialInterface

SERIAL_PREAMBLE = b'\xee'
SERIAL_TRAILER = b'\x0a\x0d'

g_serial = SerialInterface()


class SerialPacket:
    """
    Serial Packet Structure:
        Serial Preamble
        Notification Length
        Notification Data
        Trailer
    """
    def __init__(self):

        self.bytes = None

    def set(self, _bytes):

        #calculate length of remaining bytes
        length = len(_bytes)
        length_hex = length.to_bytes(1, byteorder='little')