Commit c5f3dc9d authored by Pavel Vainerman's avatar Pavel Vainerman

Очередная тестовая сборка python-modules-uniset

parent b978ca67
......@@ -7,7 +7,7 @@
Name: libuniset
Version: 1.6
Release: alt0.1
Release: alt0.3
Summary: UniSet - library for building distributed industrial control systems
......@@ -186,8 +186,10 @@ rm -f %buildroot%_libdir/*.la
%if_enabled python
mkdir -p %buildroot%python_sitelibdir_noarch/%oname
#mv -f %buildroot%python_sitelibdir_noarch/*.py %buildroot%python_sitelibdir_noarch/%oname/
mv -f %buildroot%python_sitelibdir_noarch/*.* %buildroot%python_sitelibdir_noarch/%oname/
# этот файл должен быть в корне site-packages
mv -f %buildroot%python_sitelibdir_noarch/%oname/%oname.py %buildroot%python_sitelibdir_noarch/
%endif
%files utils
......@@ -314,6 +316,9 @@ mv -f %buildroot%python_sitelibdir_noarch/*.* %buildroot%python_sitelibdir_noarc
%exclude %_pkgconfigdir/libUniSet.pc
%changelog
* Tue Mar 05 2013 Pavel Vainerman <pv@altlinux.ru> 1.6-alt0.2
- test build (with python)
* Mon Mar 04 2013 Pavel Vainerman <pv@altlinux.ru> 1.6-alt0.1
- new build
......
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pyUConnector import *
import time
# различные глобальные вспомогательные функции
t_NONE=""
t_FAILED="FAILED"
t_PASSED="PASSED"
t_IGNORE="IGNORE"
t_BREAK="BREAK"
t_PAUSE="PAUSE"
t_WARNING = "WARNING"
t_UNKNOWN="UNKNOWN"
def is_id( str_id ):
if str_id.__class__.__name__ == "int":
return True
if str_id.strip().isdigit():
return True
return False
def to_int(s):
if s == None or s == "":
return 0
if s.__class__.__name__ == "int":
return s
if len(s)>2 and s[0] == '0' and s[1] == 'x':
return int(s,16)
if s.upper() == "TRUE":
return 1
if s.upper() == "FALSE":
return 0
return int(s.strip())
def to_str(s_val):
if s_val == None:
return ""
return str(s_val)
def bool2str( state ):
if state:
return "1"
return "0"
def get_sinfo(raw, sep='@'):
raw = to_str(raw)
v = raw.strip().split(sep)
if len(v) > 1:
return [v[0],v[1]]
return [v[0],""]
# Функция требует инициализированного UConnector
# (т.е. загруженного configure.xml)
def to_sid(str_id, ui):
if str_id == None or str_id == "":
return [DefaultID,DefaultID,""]
if is_id(str_id):
return [int(str_id),DefaultID,ui.getShortName(int(str_id))]
s = get_sinfo(str_id)
s_id = s[0]
s_node = s[1]
if s_id == "":
return [DefaultID,DefaultID,"?@?"]
s_name = ""
if is_id(s_id):
s_id = int(s_id)
s_name = ui.getShortName(s_id)
else:
s_name = s_id
s_id = ui.getSensorID(s_id)
if s_node == "":
return [s_id,DefaultID,s_name]
n_name = ""
if is_id(s_node):
s_node = int(s_node)
n_name = ui.getShortName(s_node)
else:
n_name = s_node
s_node = ui.getNodeID(s_node)
return [s_id,s_node,str(s_name+"@"+n_name)]
# Получение списка пар [id,val,node] из строки "id1@node1=val1,id2=val2,.."
def get_list(raw_str,ui,sep='='):
if raw_str == None or raw_str == "":
return []
slist = []
l = raw_str.split(",")
for s in l:
v = s.split(sep)
if len(v) > 1:
slist.append([v[0],to_int(v[1])])
else:
print "(get_list:WARNING): (v=x) undefined value for " + str(s)
slist.append([v[0],0])
return slist
def list_to_str(lst,sep='='):
res = ""
for v in lst:
if res != "":
res += ",%s=%s"%(v[0],v[1])
else:
res += "%s=%s"%(v[0],v[1])
return res
# Получение списка пар [s1,2] для реализации шаблонов
def get_str_list(raw_str,sep='='):
if raw_str == None or raw_str == "":
return []
slist = []
l = raw_str.split(",")
for s in l:
v = s.split("=")
if len(v) > 1:
slist.append([v[0],v[1]])
else:
print "(get_str_list:WARNING): (v=x) undefined value for " + str(s)
slist.append([v[0],""])
return slist
# Получение списка пар [key,val] из строки "key1=val1,key2=val2,.."
def get_replace_list(raw_str):
if raw_str == None or raw_str == "":
return []
slist = []
l = raw_str.split(",")
for s in l:
v = s.split(":")
if len(v) > 1:
key = to_str(v[0]).strip().strip("\n")
val = to_str(v[1]).strip().strip("\n")
slist.append([key,val])
else:
print "(get_replace_list:WARNING): (v:x) undefined value for " + str(s)
key = to_str(v[0]).strip().strip("\n")
slist.append([key,0])
return slist
# Парсинг строки вида hostname:port
def get_mbslave_param( raw_str, sep=':' ):
if to_str(raw_str) == "":
return [None,None]
l = raw_str.split(sep)
if len(l) > 2:
print "(get_mbslave_param:WARNING): BAD STRING FORMAT! strig='%s'. Must be 'hostname:port'"%(raw_str)
return [None,None]
if len(l) == 2:
return [ l[0], to_int(l[1]) ]
#default modbus port = 502
return [ l[1], 502 ]
# Парсинг строки вида "mbreg@mbaddr:mbfunc:nbit:vtype"
def get_mbquery_param( raw_str, def_mbfunc="0x04", ret_str=False ):
raw_str = to_str(raw_str)
l = raw_str.split(':')
vtype = "signed"
if len(l) > 3:
vtype = l[3]
nbit = -1
if len(l) > 2:
nbit = l[2]
mbfunc = def_mbfunc
if len(l) > 1:
mbfunc = l[1]
if mbfunc.startswith("0x"):
mbfunc = str(int(mbfunc,16))
else:
mbfunc = str(int(mbfunc,10))
mbreg = None
mbaddr = "0x01"
if len(l) > 0:
p = l[0].split('@')
mbreg = p[0]
if len(p) > 1:
mbaddr = p[1]
if len(mbaddr) == 0 or len(mbreg) == 0 or len(mbfunc) == 0:
if ret_str == True:
return ["","","","",""]
#print "(get_mbquery_param:WARNING): BAD STRING FORMAT! strig='%s'. Must be 'mbreg@mbaddr:mbfunc:nbit:vtype'"%(raw_str)
return [None,None,None,None,None]
if ret_str == False:
return [ to_int(mbaddr), to_int(mbreg), to_int(mbfunc), to_int(nbit), vtype ]
return [ mbaddr, mbreg, mbfunc, nbit, vtype ]
def fcalibrate( raw, rawMin, rawMax, calMin, calMax ):
if rawMax == rawMin:
return 0; # деление на 0!!!
return 1.0 * (raw - rawMin) * (calMax - calMin) / ( rawMax - rawMin ) + calMin;
class TestSuiteException(Exception):
def __init__(self,e="",test_time=-1):
self.err = e
self.ftime = test_time
if test_time == -1:
self.ftime = time.time()
def getError(self):
return self.err
def getFinishTime(self):
return self.ftime
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os
_py_dir = os.path.dirname(os.path.abspath(os.path.normpath(__file__)))
_py_uniset_dir = os.path.normpath('%s/uniset' % _py_dir)
sys.path.append( _py_uniset_dir )
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment