/
GeigerCOMService.py
65 lines (55 loc) · 1.88 KB
/
GeigerCOMService.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from IService import IService
from SerialPort import SerialPort
from SerialPort import SerialPortHandler
from HitEntity import HitEntity
import time
import Globals, Constants
#-------------------------------------------------------------------------------
# Name: GeigerCOMService
# Purpose: Communication service between the Geiger counter and the serial
# port
#
# Author: LoadLow
#
# Created: 11/05/2014
# Copyright: (c) LoadLow 2014
#-------------------------------------------------------------------------------
global Application
class GeigerCOMService(IService, SerialPortHandler):
def __init__(self):
self.serialPort = None
pass
def start(self, config):
self.serialPort = SerialPort(self, config.get('port_address'), Constants.SERIAL_MESSAGE_DELIMITER)
self.serialPort.openPort()
pass
def stop(self):
if(self.serialPort != None):
self.serialPort.abortPort()
pass
def commit(self):
pass
def port_opened(self, SerialPort):
"""When the port is opened."""
print("Port linked!")
pass
def port_read(self, SerialPort, Data):
"""When str data has been recvd."""
#Data starting by "N =" characters
if(Data.startswith(Constants.SERIAL_MESSAGE_HEAD)):
hitsCount = int(Data[Constants.SERIAL_MESSAGE_HEAD:])
hits = HitEntity().set(int(time.time()), hitsCount)
Globals.Application.transact(hits)
pass
def port_closed(self, SerialPort):
"""When the port is closed."""
print("Port closed")
self.serialPort.openPort()
pass
def port_error(self, SerialPort, Error):
"""When error has been encountered."""
pass
def port_abort(self, SerialPort):
"""When the port has been aborted."""
print("Port aborted")
pass