Skip to content

Commit 5beaf5a

Browse files
committed
added before and after read to visa, added PT104 device protokol
1 parent 094c766 commit 5beaf5a

5 files changed

Lines changed: 37 additions & 11 deletions

File tree

docs/device_protokol.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Device Protocol IDs
1212
- 8: SMBus
1313
- 9: Reserved (Jofra350)
1414
- 10: GPIO
15+
- 11: PT104
1516
- 8X: Custom Worker
1617
- 95: Reserved (Scripting)
1718
- 96: Reserved (Event)

pyscada/core/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# -*- coding: utf-8 -*-
22
from __future__ import unicode_literals
33

4-
__version__ = '0.7.0rc16'
4+
__version__ = '0.7.0rc17'
55
__author__ = 'Martin Schröder'
66

77
default_app_config = 'pyscada.apps.PyScadaConfig'

pyscada/visa/device.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def __init__(self, device):
3434
if not hasattr(var, 'visavariable'):
3535
continue
3636
self.variables[var.pk] = var
37-
37+
3838
if driver_visa_ok and driver_handler_ok:
3939
self._h.connect()
4040

@@ -70,15 +70,16 @@ def request_data(self):
7070
if not driver_visa_ok:
7171
logger.info('Request Data Visa Driver Not Ok')
7272
return output
73-
73+
74+
self._h.before_read()
7475
for item in self.variables.values():
7576
if not item.visavariable.variable_type == 1:
7677
# skip all config values
7778
continue
78-
79-
value = self._h.read_data(item)
80-
81-
if value is not None and item.update_value(value, time()):
82-
output.append(item.create_recorded_data_element())
8379

80+
value, time = self._h.read_data_and_time(item)
81+
82+
if value is not None and item.update_value(value, time):
83+
output.append(item.create_recorded_data_element())
84+
self._h.after_read()
8485
return output

pyscada/visa/devices/HP3456A.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class Handler(GenericDevice):
99
"""
1010
HP3456A and other Devices with the same command set
1111
"""
12-
12+
1313
def read_data(self,variable_instance):
1414
"""
1515
read values from the device
@@ -53,4 +53,4 @@ def parse_value(self,value):
5353
try:
5454
return float(value)
5555
except:
56-
return None
56+
return None

pyscada/visa/devices/__init__.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44

55
from django.conf import settings
66

7-
try:
7+
try:
88
import visa
99
driver_ok = True
1010
except ImportError:
1111
visa = None
1212
driver_ok = False
1313

14+
from time import time
15+
1416
import logging
1517

1618
logger = logging.getLogger(__name__)
@@ -60,15 +62,37 @@ def disconnect(self):
6062
return True
6163
return False
6264

65+
def before_read(self):
66+
"""
67+
will be called before the first read_data
68+
"""
69+
return None
70+
71+
def after_read(self):
72+
"""
73+
will be called after the last read_data
74+
"""
75+
return None
76+
6377
def read_data(self, variable_instance):
6478
"""
6579
read values from the device
6680
"""
6781

6882
return None
6983

84+
def read_data_and_time(self, variable_instance):
85+
"""
86+
read values and timestamps from the device
87+
"""
88+
89+
return self.read_data(variable_instance), self.time()
90+
7091
def write_data(self, variable_id, value, task):
7192
"""
7293
write values to the device
7394
"""
7495
return False
96+
97+
def time(self):
98+
return time()

0 commit comments

Comments
 (0)