1792 lines
78 KiB
Python
Executable File
1792 lines
78 KiB
Python
Executable File
#! /usr/bin/python3
|
|
#-*- coding: utf-8 -*-
|
|
__author__ = "Michael Rest"
|
|
__date__ = "1 August 2016"
|
|
__email__ = "mr@mir.systems"
|
|
__version__ = "$Revision: 1.1 $"[11:-2]
|
|
|
|
from socket import *
|
|
from select import select
|
|
import configparser
|
|
import sys, os
|
|
import pdb
|
|
from time import time
|
|
from datetime import datetime
|
|
import tel_decode
|
|
from log import strlog
|
|
from DB import DB
|
|
from DB_MariaDB import DBMaria
|
|
from itertools import chain
|
|
from states import *
|
|
|
|
|
|
def doublechar (value):
|
|
if len (value) == 1:
|
|
return '0' + value
|
|
elif len (value) > 2:
|
|
return value [len (value) -2: len (value)]
|
|
return value
|
|
|
|
|
|
def fillchar (value, l):
|
|
if len (value.rstrip()) < l:
|
|
_retval = ''
|
|
for i in range (0, l - len (value.rstrip())):
|
|
_retval += '0'
|
|
return _retval + value.rstrip()
|
|
return value
|
|
|
|
|
|
class BDEServer ():
|
|
def __init__ (self, *dummy, **args):
|
|
"""
|
|
Initialise a new server object: Open the socket, bind to it
|
|
and listen. This will NOT handle incomming connections.
|
|
|
|
Possible variable parameters are:
|
|
port: the port to listen on (default: 102)
|
|
address: the address to listen on (default: '' i.e. any)
|
|
verbose: if true be anal about anything (default: 0)
|
|
"""
|
|
self.connections = {}
|
|
self.parameter = {}
|
|
self.sockets = {}
|
|
# Parameter action
|
|
self.address = args.get ("address", '')
|
|
port = args.get ("port", 2002)
|
|
self.verbose = args.get ("verbose", 0)
|
|
self.setdebug = args.get ("debug", 0)
|
|
_db = args.get ("DB", None)
|
|
self.connections['DB'] = DB (_db[0], _db[1], self.log, self.errlog)
|
|
_dbmaria = args.get ("DBMaria", None)
|
|
self.connections['DBMaria'] = DBMaria (_dbmaria[0], _dbmaria[1], _dbmaria[2], _dbmaria[3], self.log, self.errlog)
|
|
|
|
#Connectionditcs
|
|
self.connections['TCP'] = {}
|
|
#Sendqueue
|
|
self.connections['Queue'] = []
|
|
|
|
self.connections['LastBeat'] = 0
|
|
|
|
self.listener_socket = socket (AF_INET, SOCK_STREAM)
|
|
self.listener_socket.setsockopt (SOL_SOCKET, SO_REUSEADDR, 1)
|
|
self.sockets[('listener', '%d'%port)] = (self.listener_socket, None)
|
|
|
|
|
|
while 1:
|
|
try:
|
|
self.listener_socket.bind ((self.address, port))
|
|
except error:
|
|
self.message (0, "ISOServer Bind Socket error, Started as root?")
|
|
sys.exit (0)
|
|
else:
|
|
break
|
|
|
|
self.listener_socket.listen (1)
|
|
self.sockets[('listener', '%d'%port)] = (self.listener_socket, None)
|
|
self.message (1, "Initialized serversocket")
|
|
|
|
|
|
def message (self, level, msg):
|
|
"""
|
|
Print message if in verbose mode.
|
|
"""
|
|
if self.verbose >= level:
|
|
dt = datetime.now ()
|
|
print ("%4d-%02d-%02d %02d:%02d:%02d.%06d: %s" %(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond, msg)),
|
|
|
|
|
|
def log (self, level, msg):
|
|
"""
|
|
log relevant messages in logfile
|
|
and print if loglevel is reached
|
|
"""
|
|
self.message (level, msg)
|
|
file = open ("/var/log/bde/" + os.getcwd().split('/')[-1], "a")
|
|
dt = datetime.now ()
|
|
file.write ("%4d-%02d-%02d %02d:%02d:%02d.%06d: " %(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond)),
|
|
file.write (msg + "\n")
|
|
file.close ()
|
|
|
|
|
|
def errlog (self, msg):
|
|
"""
|
|
Log Errors in seperate logfile too
|
|
"""
|
|
self.log (0, msg)
|
|
file = open ("/var/log/bde/" + os.getcwd().split('/')[-1] + '.err', "a")
|
|
dt = datetime.now ()
|
|
file.write ("%4d-%02d-%02d %02d:%02d:%02d.%06d: " %(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond)),
|
|
file.write (msg + "\n")
|
|
file.close ()
|
|
|
|
|
|
def debug (self):
|
|
"""
|
|
Debuging
|
|
"""
|
|
if self.setdebug:
|
|
pdb.set_trace()
|
|
|
|
|
|
|
|
def add_conn (self, stid, name, ipsps, mode = "passive"):
|
|
"""
|
|
Add a passive connetion from PLC to connections.dict
|
|
"""
|
|
if mode not in ["passive", "active"]:
|
|
print ("Connection mode is not valid")
|
|
raise Warning
|
|
|
|
if stid in self.connections['TCP']:
|
|
self.message (1, "Connection " + ipsps + "-" + name + " already exists")
|
|
raise Warning
|
|
|
|
self.message (1, "Connection : " + ipsps + "-" + name + " added " + mode)
|
|
#Socket , Counterdict , Mode, StId, Name
|
|
self.connections['TCP'][ipsps] = [None, {stid : 0, 'DM' + stid [2:] : 0}, mode, stid, name]
|
|
|
|
|
|
def dt_handler (self, data, client_id, source = ''):
|
|
"""
|
|
Handler for data telegrams
|
|
"""
|
|
_channel = 'TCP'
|
|
self.message (3,'DT_handler : data packet from %s with length %d ' % (client_id, len (data)))
|
|
#self.message (3,'DT_handler : data packet from %s: %s ' % (client_id, str (data)))
|
|
ret_val = tel_decode.decodetelegram (data)
|
|
self.message (6,'DT_handler : Decoded from %s' % (str (ret_val)))
|
|
|
|
teltype = ret_val['type']
|
|
if teltype != self.connections[_channel][(client_id)][3]:
|
|
if teltype == 'DM09' and self.connections[_channel][(client_id)][3] !='PD09':
|
|
print ("Invalid Telegram from this Station")
|
|
raise Warning
|
|
if teltype == 'DM01' and self.connections[_channel][(client_id)][3] !='PD01':
|
|
print ("Invalid Telegram from this Station")
|
|
raise Warning
|
|
if teltype == 'DM20' and self.connections[_channel][(client_id)][3] !='PD20':
|
|
print ("Invalid Telegram from this Station")
|
|
raise Warning
|
|
if teltype == 'DM30' and self.connections[_channel][(client_id)][3] !='PD30':
|
|
print ("Invalid Telegram from this Station")
|
|
raise Warning
|
|
|
|
|
|
DB_con = self.connections['DB']
|
|
DBMaria_con = self.connections['DBMaria']
|
|
|
|
# Do counter checking if a valid telegram arrived
|
|
count_old = self.connections[_channel][(client_id)][1][teltype]
|
|
#if 'nr' in ret_val: FixMe add method to Telegram
|
|
if ret_val.has_key('nr'):
|
|
count = ret_val['nr']
|
|
self.message (2,' DT_handler : Tel. Counter old %d new %d' % (count_old, count))
|
|
if (count == count_old) and (count > 0) and self.connections[_channel][(client_id)][3] != 'PD09':
|
|
self.errlog (' DT_handler : FixMe repeated Tel %d' % (count))
|
|
_quit = 0
|
|
|
|
elif (count == 0) or (count == (count_old % 32767) + 1) or (count == -1) or self.connections[_channel][(client_id)][3] == 'PD09' or self.connections[_channel][(client_id)][3] == 'PD20' :
|
|
#Other Telegram received
|
|
self.log (3, "DT_handler : Tel Counter valid %d" % (count))
|
|
_quit = ret_val['check']
|
|
|
|
if _quit == 0:
|
|
self.message (2,' DT_handler : Telegram specific header check passed ')
|
|
#============================================================================================
|
|
if (count > 0):
|
|
#self.debug()
|
|
if teltype == 'PD01':
|
|
self.message (3, ' DT_handler : Store Data from PD01 Pruefzelle1 for %s' % ret_val['dmc'])
|
|
if 'Read Error' in ret_val['dmc']:
|
|
self.message (3, ' DT_handler : NoRead from PD01 Pruefzelle1 for %s'% ret_val['dmc'])
|
|
else:
|
|
DB_con.addpruefzelle1 (ret_val)
|
|
elif teltype == 'DM01':
|
|
self.message (3, ' DT_handler : Requested Data from PD01 Pruefzelle1 for %s' % ret_val['dmc'])
|
|
elif teltype in ['PD02', 'PD03']:
|
|
self.message (3, ' DT_handler : Store Data from %s Putzzelle for %s' % (teltype, ret_val['dmc']))
|
|
DB_con.addputzzelle (ret_val)
|
|
elif teltype == 'PD05':
|
|
self.message (3, ' DT_handler : Store Data from PD05 Blindniet for %s' % ret_val['dmc'])
|
|
DB_con.addblindniet (ret_val)
|
|
elif teltype == 'PD06':
|
|
self.message (3, ' DT_handler : Store Data from PD06 Bajonettclip for %s' % ret_val['dmc'])
|
|
DB_con.addbajonettclip (ret_val)
|
|
elif teltype == 'PD07':
|
|
self.message (3, ' DT_handler : Store Data from PD07 CClip for %s' % ret_val['dmc'])
|
|
DB_con.addcclip (ret_val)
|
|
elif teltype == 'PD08':
|
|
self.message (3, ' DT_handler : Store Data from PD08 Masseblech for %s' % ret_val['dmc'])
|
|
DB_con.addmasseblech (ret_val)
|
|
elif teltype == 'PD09':
|
|
self.message (3, ' DT_handler : Store Data from PD09 Nacharbeit for %s' % ret_val['dmc'])
|
|
DB_con.addnacharbeit (ret_val)
|
|
elif teltype == 'DM09':
|
|
self.message (3, ' DT_handler : Requested Data from PD09 Nacharbeit for %s' % ret_val['dmc'])
|
|
elif teltype == 'PD10':
|
|
self.message (3, ' DT_handler : Store Data from PD10 Pruefzelle2 for %s' % ret_val['dmc'])
|
|
DB_con.addpruefzelle2 (ret_val)
|
|
elif teltype == 'PD20':
|
|
#FiXMe check if Part in Table
|
|
if len (DB_con.getbde (ret_val['dmc'])):
|
|
self.message (3, ' DT_handler : Store Data from PD20 Pruefzelle Fill in BDE - G11 for %s' % ret_val['dmc'])
|
|
DB_con.addpruefzelle3 (ret_val)
|
|
else:
|
|
self.message (3, ' DT_handler : DONNOT Store Data from PD20 Pruefzelle Fill for %s' % ret_val['dmc'])
|
|
elif teltype == 'PD30':
|
|
self.message (3, ' DT_handler : Store Data from PD30 Hand/Nacharbeit for %s' % ret_val['dmc'])
|
|
if ret_val['bauteil'] in ('G11', 'G32', 'G14'):
|
|
self.message (3, ' DT_handler : Update G11/G14/G32 Data Hand / Nacharbeit in BDE for %s' % ret_val['dmc'])
|
|
DB_con.addnacharbeitg11 (ret_val)
|
|
elif ret_val['bauteil'] in ('RR'):
|
|
self.message (3, ' DT_handler : Update RR Data Hand / Nacharbeit in BDE for %s' % ret_val['dmc'])
|
|
DBMaria_con.replacebderr (ret_val)
|
|
#Bauteil + Variante kombinieren nicht notwendig passiert in BDERR
|
|
DBMaria_con.updatebderr (ret_val['dmc'], 'variante', ret_val['bauteil'] + '-' + ret_val['variante'])
|
|
|
|
elif teltype == 'DM30':
|
|
self.message (3, ' DT_handler : Requested Data from PD30 Handmontage Scanner %s for %s' % (ret_val['position'], ret_val['dmc']))
|
|
#1st Check if Part in Table
|
|
_partinfo = []
|
|
if ret_val['bauteil'] in ('G11', 'G32', 'G14'):
|
|
self.message (3, ' DT_handler : Check G11/G14/G32 Data in BDE for %s' % ret_val['dmc'])
|
|
_partinfo = DB_con.getbde (ret_val['dmc'])
|
|
elif ret_val['bauteil'] in ('RR'):
|
|
self.message (3, ' DT_handler : Check RR Data in BDE for %s' % ret_val['dmc'])
|
|
_partinfo = DBMaria_con.getbderr (ret_val['dmc'])
|
|
|
|
if ret_val['position'] == 'BC01':
|
|
#Scanner BC01 Putzzelle
|
|
#Teil anlegen und geputzt setzen
|
|
if ret_val['bauteil'] in ('G11', 'G32', 'G14'):
|
|
if not len (_partinfo):
|
|
self.message (3, ' DT_handler : Create G11/G14/G32 Data from BC01 in BDE for %s' % ret_val['dmc'])
|
|
DB_con.addbde (ret_val, anlage = 'Hand')
|
|
#Fix combine bauteil + variante
|
|
DB_con.updatebde (ret_val['dmc'], 'variante', ret_val['bauteil'] + '-' + ret_val['variante'])
|
|
else:
|
|
self.message (3, ' DT_handler : G11/G14/G32 Data from BC01 in BDE for %s already existing' % ret_val['dmc'])
|
|
#conn.addbderr (data)
|
|
#Fix combine bauteil + variante
|
|
#DB_con.updatebde (ret_val['dmc'], 'variante', ret_val['bauteil'] + '-' + ret_val['variante'])
|
|
#Fixme if _partinfo[0][7] == 'n.Durchlaufen':
|
|
self.message (3, ' DT_handler : Bad state G11/G14/G32 at BC01 for %s' % ret_val['dmc'])
|
|
_quit = 2
|
|
|
|
self.message (3, ' DT_handler : Add Putzzellendata for G11/G14/G32 from BC01 in BDE for %s' % ret_val['dmc'])
|
|
_tmpdat = ret_val.attrib
|
|
_tmpdat['bauteilstatus'] = 'i.O.'
|
|
_tmpdat['endts'] = ret_val['startts']
|
|
#FixMe
|
|
DB_con.addputzzelle (_tmpdat)
|
|
|
|
elif ret_val['bauteil'] in ('RR'):
|
|
if not len (_partinfo):
|
|
self.message (3, ' DT_handler : Create RR Data from BC01 in BDE for %s' % ret_val['dmc'])
|
|
DBMaria_con.addbderr (ret_val)
|
|
#Bauteil + Variante kombinieren nicht notwendig passiert in BDERR
|
|
DBMaria_con.updatebderr (ret_val['dmc'], 'variante', ret_val['bauteil'] + '-' + ret_val['variante'])
|
|
else:
|
|
self.message (3, ' DT_handler : RR Data from BC01 in BDE for %s already existing' % ret_val['dmc'])
|
|
#conn.addbderr (data)
|
|
self.message (3, ' DT_handler : Bad state RR at BC01 for %s' % ret_val['dmc'])
|
|
_quit = 2
|
|
|
|
self.message (3, ' DT_handler : Add Putzzellendata for RR from BC01 in BDE for %s' % ret_val['dmc'])
|
|
DBMaria_con.updatebderr (ret_val['dmc'], 'PutzzelleStatus', 'i.O.')
|
|
|
|
else:
|
|
if len (_partinfo):
|
|
if ret_val['position'] == 'BC02':
|
|
#Scanner BC03 Vormontage RR
|
|
if ret_val['bauteil'] in ('RR'):
|
|
if [_partinfo[0][i] for i in (80,83,86,89,92,95,98,101)] == ['n.Bearbeitet'] * 8:
|
|
self.message (3, ' DT_handler : BC02 RR set HUD and Holestates in BDE for %s' % ret_val['dmc'])
|
|
DBMaria_con.updatebderr (ret_val['dmc'], 'variante', ret_val['bauteil'] + '-' + ret_val['variante'])
|
|
st1hud = ['BNM8status01', 'BNM8status02', 'BNM8status03','BNM8status04','SKSM8status01', 'SKSM8status02', 'SKSM8status03', 'SKSM8status04']
|
|
for part in st1hud:
|
|
DBMaria_con.updatebderr (ret_val['dmc'], part, 'i.O.')
|
|
DBMaria_con.updatebderr (ret_val['dmc'], 'variante', ret_val['bauteil'] + '-' + ret_val['variante'])
|
|
else:
|
|
self.message (3, ' DT_handler : Bad state RR at BC02 for %s' % ret_val['dmc'])
|
|
_quit = 2
|
|
else:
|
|
self.message (3, ' DT_handler : No RR Part at BC02 for %s' % ret_val['dmc'])
|
|
_quit = 2
|
|
|
|
elif ret_val['position'] == 'BC03':
|
|
#Scanner BC02 Chiron
|
|
if ret_val['bauteil'] in ('G11', 'G32', 'G14'):
|
|
self.message (3, ' DT_handler : BC03 G11/14/G32 exists set HUD in BDE for %s' % ret_val['dmc'])
|
|
_tmpdat = ret_val.attrib
|
|
_tmpdat['chiron'] = 2 # i.O. state
|
|
_tmpdat['endts'] = ret_val['startts']
|
|
_tmpdat['bauteilstatus'] = 'i.O.'
|
|
#FixMe set Error if not geputzt
|
|
DB_con.addchiron (_tmpdat)
|
|
|
|
elif ret_val['bauteil'] in ('RR'):
|
|
if "HUD" in _partinfo[0][3]:
|
|
self.message (3, ' DT_handler : BC03 RR exists and is already HUD in BDE for %s' % ret_val['dmc'])
|
|
_quit = 2
|
|
else:
|
|
if [_partinfo[0][i] for i in range (122, 130 )] == ['n.Bearbeitet'] * 8:
|
|
self.message (3, ' DT_handler : BC03 RR exists set HUD in BDE for %s' % ret_val['dmc'])
|
|
st2chiron = ['Bohrungstatus01', 'Bohrungstatus02', 'Bohrungstatus03', 'Bohrungstatus04', 'Bohrungstatus05', 'Bohrungstatus06', 'Bohrungstatus07', 'Bohrungstatus08']
|
|
for part in st2chiron:
|
|
DBMaria_con.updatebderr (ret_val['dmc'], part, 'i.O.')
|
|
DBMaria_con.updatebderr (ret_val['dmc'], 'variante', ret_val['bauteil'] + '-' + ret_val['variante'])
|
|
else:
|
|
self.message (3, ' DT_handler : Bad state RR already operated at BC03 for %s' % ret_val['dmc'])
|
|
_quit = 2
|
|
|
|
|
|
elif ret_val['position'] == 'BC04':
|
|
#Scanner BC04 WE
|
|
if ret_val['bauteil'] in ('G11', 'G32'):
|
|
if _partinfo[0][7] == 'n.Durchlaufen':
|
|
self.message (3, ' DT_handler : Bad state G11/G32 at BC04 for %s' % ret_val['dmc'])
|
|
_quit = 2
|
|
else:
|
|
self.message (3, ' DT_handler : Not G11/G32 at BC04 for %s' % ret_val['dmc'])
|
|
_quit = 3
|
|
elif ret_val['position'] in ('BC05', 'BC06', 'BC07'):
|
|
if (ret_val['bauteil'] in ('G11', 'G32')):
|
|
print ('passt scho')
|
|
else:
|
|
#Part not found return error Code
|
|
_quit = 1
|
|
|
|
elif teltype == 'PD99':
|
|
self.message (3, ' DT_handler : Store Data from PD99 Chiron for %s' % ret_val['dmc'])
|
|
DB_con.addchiron (ret_val)
|
|
|
|
#============================================================================================
|
|
elif (count == 0):
|
|
self.message (2, ' DT_handler : Tel counter 0 Synchronisation Tel accept')
|
|
|
|
#============================================================================================
|
|
else:
|
|
self.message (2, ' DT_handler : Undefined Telegram or Counter')
|
|
_quit = 80
|
|
|
|
|
|
else:
|
|
# Countercheck failed negative quit telegram to force synchronisation
|
|
self.log (2, ' DT_handler : Tel count FAILED --> Synchronisation')
|
|
_quit = 99
|
|
|
|
if _quit > -1:
|
|
if teltype not in ('DM01', 'DM09', 'DM20', 'DM30', 'PD30'):
|
|
# Prepare Quit teltgramm
|
|
self.generatequit (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], _quit)
|
|
self.message (5, ' DT_handler : Quit Tel queued: Result: %d teltype %s' % (_quit, teltype))
|
|
elif teltype == 'DM01':
|
|
self.message (5, ' DT_handler : Send Lock Data Tel queued:"')
|
|
self.generatelockdata (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], ret_val['dmc'])
|
|
elif teltype == 'DM09':
|
|
self.generatepd (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], ret_val['dmc'])
|
|
self.message (5, ' DT_handler : Send PD09 Data Tel queued:"')
|
|
elif teltype == 'DM20':
|
|
self.generatepdfill (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], ret_val['dmc'])
|
|
self.message (5, ' DT_handler : Send PD20 Data Tel queued:"')
|
|
elif teltype == 'DM30':
|
|
if ret_val['position'] in ('BC05', 'BC06', 'BC07'):
|
|
if ret_val['bauteil'] in ('G11', 'G32', 'G14'):
|
|
self.generatepdg11 (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], ret_val['dmc'], _quit)
|
|
elif ret_val['bauteil'] in ('RR'):
|
|
self.generatepdrr (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], ret_val['dmc'], _quit)
|
|
xx = 0
|
|
else:
|
|
self.generatequitfixed (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], _quit)
|
|
elif teltype == 'PD30':
|
|
#Fixed Quit
|
|
self.generatequitfixed (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], _quit)
|
|
|
|
#count_old = count
|
|
self.connections[_channel][(client_id)][1][teltype] = count
|
|
else:
|
|
self.message (1,'"DT_Handler : unknown Telegram type, no Number')
|
|
self.debug ()
|
|
|
|
|
|
def generatepdfill (self, count, channel, client_id, msgtype, src, dst, dmc):
|
|
"""
|
|
Generate an QUIT telegram for Fill and send it
|
|
"""
|
|
DB_con = self.connections['DB']
|
|
|
|
self. message (3, " generatepdfill : generate PD-Fill Telegram for %s on channel %s, dmc %s" % (msgtype, channel, dmc))
|
|
#Fillword
|
|
_data = bytes ([((count >> 8) & 0xFF)]) + bytes ([(count & 0xFF)])
|
|
_data2 = \
|
|
doublechar (src) +\
|
|
doublechar (dst) +\
|
|
msgtype + + (4 - len(dmc)) * ' '
|
|
_dmc = dmc + (28 - len(dmc)) * ' '
|
|
#Bde Daten holen
|
|
bde = DB_con.getbde (dmc)
|
|
_typ = ' '.encode ()
|
|
_var = ' '.encode ()
|
|
_st = '0' # Gesamtstatus
|
|
_bnst = ' '
|
|
_bajost = ' '
|
|
_ccst = ' '
|
|
_mbst = ' '
|
|
_err = bytes ([0])
|
|
|
|
if len (bde):
|
|
dmc1, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus = bde [0]
|
|
_t = 0
|
|
if 'G11' in variante:
|
|
_typ = bytes ([1])
|
|
_t = 1
|
|
elif 'G3' in variante:
|
|
_typ = bytes ([2])
|
|
_t = 2
|
|
|
|
_rl = 0
|
|
if 'RL' in variante:
|
|
_rl = 1
|
|
|
|
if 'HUD' in variante:
|
|
_var = bytes ([_rl + 2])
|
|
else:
|
|
_var = bytes ([_rl])
|
|
|
|
_bnst = bauteilstatusRev.get (blindniet)
|
|
_bajost = bauteilstatusRev.get (bajonettclip)
|
|
_ccst = bauteilstatusRev.get (cclip)
|
|
_mbst = bauteilstatusRev.get (masseblech)
|
|
if _bnst == '1' and _bajost == '1' and _ccst == '1' and _mbst == '1':
|
|
_st == '1'
|
|
else:
|
|
_st == '2'
|
|
|
|
|
|
_data += _data2.encode ()
|
|
_data += _dmc.encode () + _typ + _var + _st.encode () + _err
|
|
print (len (_data))
|
|
print (_data)
|
|
|
|
self.queue_add (channel, client_id, msgtype, _data)
|
|
return
|
|
|
|
|
|
def generatelockdata (self, count, channel, client_id, msgtype, src, dst, dmc):
|
|
"""
|
|
Generate an QUIT telegram with lockdata and send it
|
|
"""
|
|
DB_con = self.connections['DB']
|
|
|
|
self. message (3, " generatelockdata : generate PD Telegram for %s on channel %s, dmc %s" % (msgtype, channel, dmc))
|
|
#Fillword
|
|
_data = bytes ([1]) + bytes ([1]) + bytes ([((count >> 8) & 0xFF)]) + bytes ([(count & 0xFF)])
|
|
_data2 = \
|
|
doublechar (src) +\
|
|
doublechar (dst) +\
|
|
msgtype + + (4 - len(dmc)) * ' '
|
|
_dmc = dmc + (28 - len(dmc)) * ' '
|
|
_start = 14 * ' '
|
|
_end = 14 * ' '
|
|
_vari = 4 * ' '
|
|
#Bede Daten holen
|
|
_res = '0'
|
|
if DB_con.checklock (dmc):
|
|
self. message (3, " generatelockdata : generate PD Telegram DMC Locked %s" % (dmc))
|
|
_res = '1'
|
|
|
|
|
|
_data += _data2.encode ()
|
|
_data += _dmc.encode () + _start.encode () + _end.encode () + _vari.encode () + _res.encode ()
|
|
|
|
self.queue_add (channel, client_id, msgtype, _data)
|
|
return
|
|
|
|
|
|
def generatepdg11 (self, count, channel, client_id, msgtype, src, dst, dmc, quit):
|
|
"""
|
|
Generate an PD30 telegram for G11 qith quit code and queue it
|
|
"""
|
|
DB_con = self.connections['DB']
|
|
|
|
self. message (3, " generatepdg11 : generate PD30 G11 Telegram for %s on channel %s, dmc %s" % (msgtype, channel, dmc))
|
|
#Fillword
|
|
_data = bytes ([1]) + bytes ([1]) + bytes ([((count >> 8) & 0xFF)]) + bytes ([(count & 0xFF)])
|
|
_dataheader = \
|
|
doublechar (src) +\
|
|
doublechar (dst) +\
|
|
msgtype + + (4 - len(dmc)) * ' '
|
|
_datastate = bytes ([0]) + bytes ([quit % 256])
|
|
|
|
_dmc = dmc + (28 - len(dmc)) * ' '
|
|
_start = 14 * ' '
|
|
#Bde Daten holen
|
|
bde = DB_con.getbde (dmc)
|
|
_typ = ' '.encode ()
|
|
_var = ' '.encode ()
|
|
_putz = ' '
|
|
if len (bde):
|
|
dmc1, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus = bde [0]
|
|
_t = 0
|
|
if 'G11' in variante:
|
|
_typ = bytes ([1]) + bytes ([0])
|
|
_t = 1
|
|
elif 'G3' in variante:
|
|
_typ = bytes ([2]) + bytes ([0])
|
|
_t = 2
|
|
elif 'G1' in variante:
|
|
_typ = bytes ([2]) + bytes ([0])
|
|
_t = 4
|
|
|
|
_rl = 0
|
|
if 'RL' in variante:
|
|
_rl = 1
|
|
|
|
_us = 0
|
|
if 'US' in variante:
|
|
_us = 4
|
|
|
|
if 'HUD' in variante:
|
|
_var = bytes ([_rl +_us + 2]) + bytes ([0])
|
|
else:
|
|
_var = bytes ([_rl + _us]) + bytes ([0])
|
|
|
|
_putz = bauteilstatusRev.get (putzzelle)
|
|
|
|
bn = DB_con.getblindniet (dmc)
|
|
_NietM8st01 = ' '
|
|
_NietM8st02 = ' '
|
|
_DGBM8st01 = ' '
|
|
_DGBM8st02 = ' '
|
|
_DGBM8st03 = ' '
|
|
_DGBM8st04 = ' '
|
|
_NietM6st01 = ' '
|
|
_NietM6st02 = ' '
|
|
_NietM6st03 = ' '
|
|
_NietM6st04 = ' '
|
|
_NietM6st05 = ' '
|
|
_DGBM8M01 = bytes ([0]) + bytes ([0])
|
|
_DGBM8D01 = bytes ([0]) + bytes ([0])
|
|
_DGBM8W01 = bytes ([0]) + bytes ([0])
|
|
_DGBM8T01 = bytes ([0]) + bytes ([0])
|
|
_DGBM8M02 = bytes ([0]) + bytes ([0])
|
|
_DGBM8D02 = bytes ([0]) + bytes ([0])
|
|
_DGBM8W02 = bytes ([0]) + bytes ([0])
|
|
_DGBM8T02 = bytes ([0]) + bytes ([0])
|
|
_DGBM8M03 = bytes ([0]) + bytes ([0])
|
|
_DGBM8D03 = bytes ([0]) + bytes ([0])
|
|
_DGBM8W03 = bytes ([0]) + bytes ([0])
|
|
_DGBM8T03 = bytes ([0]) + bytes ([0])
|
|
_DGBM8M04 = bytes ([0]) + bytes ([0])
|
|
_DGBM8D04 = bytes ([0]) + bytes ([0])
|
|
_DGBM8W04 = bytes ([0]) + bytes ([0])
|
|
_DGBM8T04 = bytes ([0]) + bytes ([0])
|
|
_NietM8F01 = bytes ([0]) + bytes ([0])
|
|
_NietM8S01 = bytes ([0]) + bytes ([0])
|
|
_NietM8F02 = bytes ([0]) + bytes ([0])
|
|
_NietM8S02 = bytes ([0]) + bytes ([0])
|
|
_NietM6F01 = bytes ([0]) + bytes ([0])
|
|
_NietM6S01 = bytes ([0]) + bytes ([0])
|
|
_NietM6F02 = bytes ([0]) + bytes ([0])
|
|
_NietM6S02 = bytes ([0]) + bytes ([0])
|
|
_NietM6F03 = bytes ([0]) + bytes ([0])
|
|
_NietM6S03 = bytes ([0]) + bytes ([0])
|
|
_NietM6F04 = bytes ([0]) + bytes ([0])
|
|
_NietM6S04 = bytes ([0]) + bytes ([0])
|
|
_NietM6F05 = bytes ([0]) + bytes ([0])
|
|
_NietM6S05 = bytes ([0]) + bytes ([0])
|
|
|
|
if len (bn):
|
|
dmc1, startts, endts, DGBM8status01, DGBM8status02, DGBM8status03, DGBM8status04, NietM8status01, NietM8status02, NietM6status01, NietM6status02, NietM6status03, NietM6status04, NietM6status05, DGBM8M01, DGBM8D01, DGBM8W01, DGBM8T01, DGBM8M02, DGBM8D02, DGBM8W02, DGBM8T02, DGBM8M03, DGBM8D03, DGBM8W03, DGBM8T03, DGBM8M04, DGBM8D04, DGBM8W04, DGBM8T04, NietM8F01, NietM8S01, NietM8F02, NietM8S02, NietM6F01, NietM6S01, NietM6F02, NietM6S02, NietM6F03, NietM6S03, NietM6F04, NietM6S04, NietM6F05, NietM6S05 = bn [0]
|
|
|
|
_NietM8st01 = bearbeitungstatusRev.get (NietM8status01)
|
|
_NietM8st02 = bearbeitungstatusRev.get (NietM8status02)
|
|
_DGBM8st01 = bearbeitungstatusRev.get (DGBM8status01)
|
|
_DGBM8st02 = bearbeitungstatusRev.get (DGBM8status02)
|
|
_DGBM8st03 = bearbeitungstatusRev.get (DGBM8status03)
|
|
_DGBM8st04 = bearbeitungstatusRev.get (DGBM8status04)
|
|
_NietM6st01 = bearbeitungstatusRev.get (NietM6status01)
|
|
_NietM6st02 = bearbeitungstatusRev.get (NietM6status02)
|
|
_NietM6st03 = bearbeitungstatusRev.get (NietM6status03)
|
|
_NietM6st04 = bearbeitungstatusRev.get (NietM6status04)
|
|
_NietM6st05 = bearbeitungstatusRev.get (NietM6status05)
|
|
_DGBM8M01 = bytes ([((DGBM8M01 >> 8) & 0xFF)]) + bytes ([(DGBM8M01 & 0xFF)])
|
|
_DGBM8D01 = bytes ([((DGBM8D01 >> 8) & 0xFF)]) + bytes ([(DGBM8D01 & 0xFF)])
|
|
_DGBM8W01 = bytes ([((DGBM8W01 >> 8) & 0xFF)]) + bytes ([(DGBM8W01 & 0xFF)])
|
|
_DGBM8T01 = bytes ([((DGBM8T01 >> 8) & 0xFF)]) + bytes ([(DGBM8T01 & 0xFF)])
|
|
_DGBM8M02 = bytes ([((DGBM8M02 >> 8) & 0xFF)]) + bytes ([(DGBM8M02 & 0xFF)])
|
|
_DGBM8D02 = bytes ([((DGBM8D02 >> 8) & 0xFF)]) + bytes ([(DGBM8D02 & 0xFF)])
|
|
_DGBM8W02 = bytes ([((DGBM8W02 >> 8) & 0xFF)]) + bytes ([(DGBM8W02 & 0xFF)])
|
|
_DGBM8T02 = bytes ([((DGBM8T02 >> 8) & 0xFF)]) + bytes ([(DGBM8T02 & 0xFF)])
|
|
_DGBM8M03 = bytes ([((DGBM8M03 >> 8) & 0xFF)]) + bytes ([(DGBM8M03 & 0xFF)])
|
|
_DGBM8D03 = bytes ([((DGBM8D03 >> 8) & 0xFF)]) + bytes ([(DGBM8D03 & 0xFF)])
|
|
_DGBM8W03 = bytes ([((DGBM8W03 >> 8) & 0xFF)]) + bytes ([(DGBM8W03 & 0xFF)])
|
|
_DGBM8T03 = bytes ([((DGBM8T03 >> 8) & 0xFF)]) + bytes ([(DGBM8T03 & 0xFF)])
|
|
_DGBM8M04 = bytes ([((DGBM8M04 >> 8) & 0xFF)]) + bytes ([(DGBM8M04 & 0xFF)])
|
|
_DGBM8D04 = bytes ([((DGBM8D04 >> 8) & 0xFF)]) + bytes ([(DGBM8D04 & 0xFF)])
|
|
_DGBM8W04 = bytes ([((DGBM8W04 >> 8) & 0xFF)]) + bytes ([(DGBM8W04 & 0xFF)])
|
|
_DGBM8T04 = bytes ([((DGBM8T04 >> 8) & 0xFF)]) + bytes ([(DGBM8T04 & 0xFF)])
|
|
_NietM8F01 = bytes ([((NietM8F01 >> 8) & 0xFF)]) + bytes ([(NietM8F01 & 0xFF)])
|
|
_NietM8S01 = bytes ([((NietM8S01 >> 8) & 0xFF)]) + bytes ([(NietM8S01 & 0xFF)])
|
|
_NietM8F02 = bytes ([((NietM8F02 >> 8) & 0xFF)]) + bytes ([(NietM8F02 & 0xFF)])
|
|
_NietM8S02 = bytes ([((NietM8S02 >> 8) & 0xFF)]) + bytes ([(NietM8S02 & 0xFF)])
|
|
_NietM6F01 = bytes ([((NietM6F01 >> 8) & 0xFF)]) + bytes ([(NietM6F01 & 0xFF)])
|
|
_NietM6S01 = bytes ([((NietM6S01 >> 8) & 0xFF)]) + bytes ([(NietM6S01 & 0xFF)])
|
|
_NietM6F02 = bytes ([((NietM6F02 >> 8) & 0xFF)]) + bytes ([(NietM6F02 & 0xFF)])
|
|
_NietM6S02 = bytes ([((NietM6S02 >> 8) & 0xFF)]) + bytes ([(NietM6S02 & 0xFF)])
|
|
_NietM6F03 = bytes ([((NietM6F03 >> 8) & 0xFF)]) + bytes ([(NietM6F03 & 0xFF)])
|
|
_NietM6S03 = bytes ([((NietM6S03 >> 8) & 0xFF)]) + bytes ([(NietM6S03 & 0xFF)])
|
|
_NietM6F04 = bytes ([((NietM6F04 >> 8) & 0xFF)]) + bytes ([(NietM6F04 & 0xFF)])
|
|
_NietM6S04 = bytes ([((NietM6S04 >> 8) & 0xFF)]) + bytes ([(NietM6S04 & 0xFF)])
|
|
_NietM6F05 = bytes ([((NietM6F05 >> 8) & 0xFF)]) + bytes ([(NietM6F05 & 0xFF)])
|
|
_NietM6S05 = bytes ([((NietM6S05 >> 8) & 0xFF)]) + bytes ([(NietM6S05 & 0xFF)])
|
|
|
|
|
|
bj = DB_con.getbajonettclip (dmc)
|
|
_bj1 = ' '
|
|
_bj2 = ' '
|
|
_bj3 = ' '
|
|
_bj4 = ' '
|
|
if len (bj):
|
|
dmc1, startts, endts, aufnahme, bajostatus01, bajostatus02, bajostatus03, bajostatus04 = bj [0]
|
|
_bj1 = bearbeitungstatusRev.get (bajostatus01)
|
|
_bj2 = bearbeitungstatusRev.get (bajostatus02)
|
|
_bj3 = bearbeitungstatusRev.get (bajostatus03)
|
|
_bj4 = bearbeitungstatusRev.get (bajostatus04)
|
|
|
|
|
|
cc = DB_con.getcclip (dmc)
|
|
_ccs1 = ' '
|
|
_ccs2 = ' '
|
|
_ccs3 = ' '
|
|
_ccs4 = ' '
|
|
_ccs5 = ' '
|
|
_ccs6 = ' '
|
|
_ccs7 = ' '
|
|
_ccs8 = ' '
|
|
_ccs9 = ' '
|
|
_ccs10 = ' '
|
|
_ccs11 = ' '
|
|
_ccs12 = ' '
|
|
_ccs13 = ' '
|
|
_ccs14 = ' '
|
|
_ccs15 = ' '
|
|
_ccs16 = ' '
|
|
_ccs17 = ' '
|
|
_ccs18 = ' '
|
|
_ccs19 = ' '
|
|
_ccs20 = ' '
|
|
_ccs21 = ' '
|
|
_ccs22 = ' '
|
|
_ccs23 = ' '
|
|
_ccs24 = ' '
|
|
_ccs25 = ' '
|
|
_ccs26 = ' '
|
|
_ccs27 = ' '
|
|
_ccs28 = ' '
|
|
_ccs29 = ' '
|
|
|
|
if len (cc):
|
|
dmc1, startts, endts, aufnahme, clipstatus01, clipstatus02, clipstatus03, clipstatus04, clipstatus05, clipstatus06, clipstatus07, clipstatus08, clipstatus09, clipstatus10, clipstatus11, clipstatus12, clipstatus13, clipstatus14, clipstatus15, clipstatus16, clipstatus17, clipstatus18 = cc [0]
|
|
_ccs1 = bearbeitungstatusRev.get (clipstatus01)
|
|
_ccs2 = bearbeitungstatusRev.get (clipstatus02)
|
|
_ccs3 = bearbeitungstatusRev.get (clipstatus03)
|
|
_ccs4 = bearbeitungstatusRev.get (clipstatus04)
|
|
_ccs5 = bearbeitungstatusRev.get (clipstatus05)
|
|
_ccs6 = bearbeitungstatusRev.get (clipstatus06)
|
|
_ccs7 = bearbeitungstatusRev.get (clipstatus07)
|
|
_ccs8 = bearbeitungstatusRev.get (clipstatus08)
|
|
_ccs9 = bearbeitungstatusRev.get (clipstatus09)
|
|
_ccs10 = bearbeitungstatusRev.get (clipstatus10)
|
|
_ccs11 = bearbeitungstatusRev.get (clipstatus11)
|
|
_ccs12 = bearbeitungstatusRev.get (clipstatus12)
|
|
_ccs13 = bearbeitungstatusRev.get (clipstatus13)
|
|
_ccs14 = bearbeitungstatusRev.get (clipstatus14)
|
|
_ccs15 = bearbeitungstatusRev.get (clipstatus15)
|
|
_ccs16 = bearbeitungstatusRev.get (clipstatus16)
|
|
_ccs17 = bearbeitungstatusRev.get (clipstatus17)
|
|
_ccs18 = bearbeitungstatusRev.get (clipstatus18)
|
|
|
|
|
|
mb = DB_con.getmasseblech (dmc)
|
|
_ae = ' '
|
|
_se = ' '
|
|
_mb = ' '
|
|
_bl = ' '
|
|
_km = ' '
|
|
_fniet = bytes ([0]) + bytes ([0])
|
|
_sniet = bytes ([0]) + bytes ([0])
|
|
_mmutter = bytes ([0]) + bytes ([0])
|
|
_dmutter = bytes ([0]) + bytes ([0])
|
|
_wmutter = bytes ([0]) + bytes ([0])
|
|
_tmutter = bytes ([0]) + bytes ([0])
|
|
|
|
if len (mb):
|
|
dmc1, startts, endts, ausgleichselement, schallisolierung, masseblech, blindniet, kombimutter, fniet, sniet, mmutter, dmutter, wmutter, tmutter = mb [0]
|
|
_ae = bearbeitungstatusRev.get (ausgleichselement)
|
|
_se = bearbeitungstatusRev.get (schallisolierung)
|
|
_mb = bearbeitungstatusRev.get (masseblech)
|
|
_bl = bearbeitungstatusRev.get (blindniet)
|
|
_km = bearbeitungstatusRev.get (kombimutter)
|
|
_fniet = bytes ([((fniet >> 8) & 0xFF)]) + bytes ([(fniet & 0xFF)])
|
|
_sniet = bytes ([((sniet >> 8) & 0xFF)]) + bytes ([(sniet & 0xFF)])
|
|
_mmutter = bytes ([((mmutter >> 8) & 0xFF)]) + bytes ([(mmutter & 0xFF)])
|
|
_dmutter = bytes ([((dmutter >> 8) & 0xFF)]) + bytes ([(dmutter & 0xFF)])
|
|
_wmutter = bytes ([((wmutter >> 8) & 0xFF)]) + bytes ([(wmutter & 0xFF)])
|
|
_tmutter = bytes ([((tmutter >> 8) & 0xFF)]) + bytes ([(tmutter & 0xFF)])
|
|
|
|
|
|
#RRSpezifisch
|
|
_BNMM8st01 = ' '
|
|
_BNMM8st02 = ' '
|
|
_BNMM8st03 = ' '
|
|
_BNMM8st04 = ' '
|
|
_BNMM8F01 = bytes ([0]) + bytes ([0])
|
|
_BNMM8F02 = bytes ([0]) + bytes ([0])
|
|
_BNMM8F03 = bytes ([0]) + bytes ([0])
|
|
_BNMM8F04 = bytes ([0]) + bytes ([0])
|
|
_BNMM8S01 = bytes ([0]) + bytes ([0])
|
|
_BNMM8S02 = bytes ([0]) + bytes ([0])
|
|
_BNMM8S03 = bytes ([0]) + bytes ([0])
|
|
_BNMM8S04 = bytes ([0]) + bytes ([0])
|
|
|
|
_6KSM8st01 = ' '
|
|
_6KSM8st02 = ' '
|
|
_6KSM8st03 = ' '
|
|
_6KSM8st04 = ' '
|
|
_6KSM8M01 = bytes ([0]) + bytes ([0])
|
|
_6KSM8M02 = bytes ([0]) + bytes ([0])
|
|
_6KSM8M03 = bytes ([0]) + bytes ([0])
|
|
_6KSM8M04 = bytes ([0]) + bytes ([0])
|
|
_6KSM8W01 = bytes ([0]) + bytes ([0])
|
|
_6KSM8W02 = bytes ([0]) + bytes ([0])
|
|
_6KSM8W03 = bytes ([0]) + bytes ([0])
|
|
_6KSM8W04 = bytes ([0]) + bytes ([0])
|
|
_Blechst01 = ' '
|
|
_Blechst02 = ' '
|
|
_Blechst03 = ' '
|
|
_Blechst04 = ' '
|
|
_LSKst01 = ' '
|
|
_LSKst02 = ' '
|
|
_LSKst03 = ' '
|
|
_LSKst04 = ' '
|
|
_LSKst05 = ' '
|
|
_LSKst06 = ' '
|
|
_LSKst07 = ' '
|
|
_LSKst08 = ' '
|
|
_ODBst = ' '
|
|
_ODBSst = ' '
|
|
_Filzst01 = ' '
|
|
_Filzst02 = ' '
|
|
_Filzst03 = ' '
|
|
_Filzst04 = ' '
|
|
_Bohrungst01 = ' '
|
|
_Bohrungst02 = ' '
|
|
_Bohrungst03 = ' '
|
|
_Bohrungst04 = ' '
|
|
_Bohrungst05 = ' '
|
|
_Bohrungst06 = ' '
|
|
_Bohrungst07 = ' '
|
|
_Bohrungst08 = ' '
|
|
_BTStatus = ' '
|
|
_UserID = bytes ([0]) + bytes ([0])
|
|
|
|
_space1 = ' '
|
|
|
|
_data += _dataheader.encode () + _datastate +\
|
|
_dmc.encode () + _start.encode () + _typ + _var + _putz.encode () + _space1.encode () +\
|
|
_NietM6st01.encode () + _space1.encode () + _NietM6F01 + _NietM6S01 +\
|
|
_NietM6st02.encode () + _space1.encode () + _NietM6F02 + _NietM6S02 +\
|
|
_NietM6st03.encode () + _space1.encode () + _NietM6F03 + _NietM6S03 +\
|
|
_NietM6st04.encode () + _space1.encode () + _NietM6F04 + _NietM6S04 +\
|
|
_NietM6st05.encode () + _space1.encode () + _NietM6F05 + _NietM6S05 +\
|
|
_DGBM8st01.encode () + _space1.encode () + _DGBM8M01 + _DGBM8W01 + _DGBM8D01 + _DGBM8T01 +\
|
|
_DGBM8st02.encode () + _space1.encode () + _DGBM8M02 + _DGBM8W02 + _DGBM8D02 + _DGBM8T02 +\
|
|
_DGBM8st03.encode () + _space1.encode () + _DGBM8M03 + _DGBM8W03 + _DGBM8D03 + _DGBM8T03 +\
|
|
_DGBM8st04.encode () + _space1.encode () + _DGBM8M04 + _DGBM8W04 + _DGBM8D04 + _DGBM8T04 +\
|
|
_NietM8st01.encode () + _space1.encode () + _NietM8F01 + _NietM8S01 +\
|
|
_NietM8st02.encode () + _space1.encode () + _NietM8F02 + _NietM8S02 +\
|
|
_bj1.encode () + _bj2.encode () + _bj3.encode () + _bj4.encode () +\
|
|
_ccs1.encode () + _ccs2.encode () + _ccs3.encode () + _ccs4.encode () + _ccs5.encode () +\
|
|
_ccs6.encode () + _ccs7.encode () + _ccs8.encode () + _ccs9.encode () + _ccs10.encode () +\
|
|
_ccs11.encode () + _ccs12.encode () + _ccs13.encode () + _ccs14.encode () + _ccs15.encode () +\
|
|
_ccs16.encode () + _ccs17.encode () + _ccs18.encode () + _ccs19.encode () + _ccs20.encode () +\
|
|
_ccs21.encode () + _ccs22.encode () + _ccs23.encode () + _ccs24.encode () + _ccs25.encode () +\
|
|
_ccs26.encode () + _ccs27.encode () + _ccs28.encode () + _ccs29.encode () + _space1.encode () +\
|
|
_bl.encode () + _space1.encode () + _fniet + _sniet +\
|
|
_km.encode () + _space1.encode () + _mmutter + _wmutter + _dmutter + _tmutter +\
|
|
_mb.encode () + _ae.encode () + _se.encode () + _space1.encode () +\
|
|
_BNMM8st01.encode () + _space1.encode () + _BNMM8F01 + _BNMM8S01 +\
|
|
_BNMM8st02.encode () + _space1.encode () + _BNMM8F02 + _BNMM8S02 +\
|
|
_BNMM8st03.encode () + _space1.encode () + _BNMM8F03 + _BNMM8S03 +\
|
|
_BNMM8st04.encode () + _space1.encode () + _BNMM8F04 + _BNMM8S04 +\
|
|
_6KSM8st01.encode () + _space1.encode () + _6KSM8M01 + _6KSM8W01 +\
|
|
_6KSM8st02.encode () + _space1.encode () + _6KSM8M02 + _6KSM8W02 +\
|
|
_6KSM8st03.encode () + _space1.encode () + _6KSM8M03 + _6KSM8W03 +\
|
|
_6KSM8st04.encode () + _space1.encode () + _6KSM8M04 + _6KSM8W04 +\
|
|
_Blechst01.encode () + _Blechst02.encode () + _Blechst03.encode () + _Blechst04.encode () +\
|
|
_LSKst01.encode () + _LSKst02.encode () + _LSKst03.encode () + _LSKst04.encode () +\
|
|
_LSKst05.encode () + _LSKst06.encode () + _LSKst07.encode () + _LSKst04.encode () +\
|
|
_ODBst.encode () + _ODBSst.encode () +\
|
|
_Filzst01.encode () + _Filzst02.encode () + _Filzst03.encode () + _Filzst04.encode () +\
|
|
_Bohrungst01.encode () + _Bohrungst02.encode () + _Bohrungst03.encode () + _Bohrungst04.encode () +\
|
|
_Bohrungst05.encode () + _Bohrungst06.encode () + _Bohrungst07.encode () + _Bohrungst08.encode () +\
|
|
_BTStatus.encode () + _space1.encode () + \
|
|
_UserID
|
|
|
|
#print (_data[1:30])
|
|
|
|
self.queue_add (channel, client_id, msgtype, _data)
|
|
return
|
|
|
|
|
|
def generatepdrr (self, count, channel, client_id, msgtype, src, dst, dmc, quit):
|
|
"""
|
|
Generate an PD30 telegram for RR qith quit code and queue it
|
|
"""
|
|
DBMaria_con = self.connections['DBMaria']
|
|
|
|
self. message (3, " generatepdrr : generate PD30 RR Telegram for %s on channel %s, dmc %s" % (msgtype, channel, dmc))
|
|
#Fillword
|
|
_data = bytes ([1]) + bytes ([1]) + bytes ([((count >> 8) & 0xFF)]) + bytes ([(count & 0xFF)])
|
|
_dataheader = \
|
|
doublechar (src) +\
|
|
doublechar (dst) +\
|
|
msgtype + + (4 - len(dmc)) * ' '
|
|
_datastate = bytes ([0]) + bytes ([quit % 256])
|
|
|
|
_dmc = dmc + (28 - len(dmc)) * ' '
|
|
_start = 14 * ' '
|
|
#Bde Daten holen
|
|
bde = DBMaria_con.getbderr (dmc)
|
|
_typ = ' '.encode ()
|
|
_var = ' '.encode ()
|
|
_putz = ' '
|
|
_NietM8st01 = ' '
|
|
_NietM8st02 = ' '
|
|
_DGBM8st01 = ' '
|
|
_DGBM8st02 = ' '
|
|
_DGBM8st03 = ' '
|
|
_DGBM8st04 = ' '
|
|
_NietM6st01 = ' '
|
|
_NietM6st02 = ' '
|
|
_NietM6st03 = ' '
|
|
_NietM6st04 = ' '
|
|
_NietM6st05 = ' '
|
|
_DGBM8M01 = bytes ([0]) + bytes ([0])
|
|
_DGBM8D01 = bytes ([0]) + bytes ([0])
|
|
_DGBM8W01 = bytes ([0]) + bytes ([0])
|
|
_DGBM8T01 = bytes ([0]) + bytes ([0])
|
|
_DGBM8M02 = bytes ([0]) + bytes ([0])
|
|
_DGBM8D02 = bytes ([0]) + bytes ([0])
|
|
_DGBM8W02 = bytes ([0]) + bytes ([0])
|
|
_DGBM8T02 = bytes ([0]) + bytes ([0])
|
|
_DGBM8M03 = bytes ([0]) + bytes ([0])
|
|
_DGBM8D03 = bytes ([0]) + bytes ([0])
|
|
_DGBM8W03 = bytes ([0]) + bytes ([0])
|
|
_DGBM8T03 = bytes ([0]) + bytes ([0])
|
|
_DGBM8M04 = bytes ([0]) + bytes ([0])
|
|
_DGBM8D04 = bytes ([0]) + bytes ([0])
|
|
_DGBM8W04 = bytes ([0]) + bytes ([0])
|
|
_DGBM8T04 = bytes ([0]) + bytes ([0])
|
|
_NietM8F01 = bytes ([0]) + bytes ([0])
|
|
_NietM8S01 = bytes ([0]) + bytes ([0])
|
|
_NietM8F02 = bytes ([0]) + bytes ([0])
|
|
_NietM8S02 = bytes ([0]) + bytes ([0])
|
|
_NietM6F01 = bytes ([0]) + bytes ([0])
|
|
_NietM6S01 = bytes ([0]) + bytes ([0])
|
|
_NietM6F02 = bytes ([0]) + bytes ([0])
|
|
_NietM6S02 = bytes ([0]) + bytes ([0])
|
|
_NietM6F03 = bytes ([0]) + bytes ([0])
|
|
_NietM6S03 = bytes ([0]) + bytes ([0])
|
|
_NietM6F04 = bytes ([0]) + bytes ([0])
|
|
_NietM6S04 = bytes ([0]) + bytes ([0])
|
|
_NietM6F05 = bytes ([0]) + bytes ([0])
|
|
_NietM6S05 = bytes ([0]) + bytes ([0])
|
|
_ccs1 = ' '
|
|
_ccs2 = ' '
|
|
_ccs3 = ' '
|
|
_ccs4 = ' '
|
|
_ccs5 = ' '
|
|
_ccs6 = ' '
|
|
_ccs7 = ' '
|
|
_ccs8 = ' '
|
|
_ccs9 = ' '
|
|
_ccs10 = ' '
|
|
_ccs11 = ' '
|
|
_ccs12 = ' '
|
|
_ccs13 = ' '
|
|
_ccs14 = ' '
|
|
_ccs15 = ' '
|
|
_ccs16 = ' '
|
|
_ccs17 = ' '
|
|
_ccs18 = ' '
|
|
_ccs19 = ' '
|
|
_ccs20 = ' '
|
|
_ccs21 = ' '
|
|
_ccs22 = ' '
|
|
_ccs23 = ' '
|
|
_ccs24 = ' '
|
|
_ccs25 = ' '
|
|
_ccs26 = ' '
|
|
_ccs27 = ' '
|
|
_ccs28 = ' '
|
|
_ccs29 = ' '
|
|
_bj1 = ' '
|
|
_bj2 = ' '
|
|
_bj3 = ' '
|
|
_bj4 = ' '
|
|
_ae = ' '
|
|
_se = ' '
|
|
_mb = ' '
|
|
_bl = ' '
|
|
_km = ' '
|
|
_fniet = bytes ([0]) + bytes ([0])
|
|
_sniet = bytes ([0]) + bytes ([0])
|
|
_mmutter = bytes ([0]) + bytes ([0])
|
|
_dmutter = bytes ([0]) + bytes ([0])
|
|
_wmutter = bytes ([0]) + bytes ([0])
|
|
_tmutter = bytes ([0]) + bytes ([0])
|
|
_6KSM8st01 = ' '
|
|
_6KSM8st02 = ' '
|
|
_6KSM8st03 = ' '
|
|
_6KSM8st04 = ' '
|
|
_6KSM8M01 = bytes ([0]) + bytes ([0])
|
|
_6KSM8M02 = bytes ([0]) + bytes ([0])
|
|
_6KSM8M03 = bytes ([0]) + bytes ([0])
|
|
_6KSM8M04 = bytes ([0]) + bytes ([0])
|
|
_6KSM8W01 = bytes ([0]) + bytes ([0])
|
|
_6KSM8W02 = bytes ([0]) + bytes ([0])
|
|
_6KSM8W03 = bytes ([0]) + bytes ([0])
|
|
_6KSM8W04 = bytes ([0]) + bytes ([0])
|
|
_Blechst01 = ' '
|
|
_Blechst02 = ' '
|
|
_Blechst03 = ' '
|
|
_Blechst04 = ' '
|
|
_LSKst01 = ' '
|
|
_LSKst02 = ' '
|
|
_LSKst03 = ' '
|
|
_LSKst04 = ' '
|
|
_LSKst05 = ' '
|
|
_LSKst06 = ' '
|
|
_LSKst07 = ' '
|
|
_LSKst08 = ' '
|
|
_ODBst = ' '
|
|
_ODBSst = ' '
|
|
_Filzst01 = ' '
|
|
_Filzst02 = ' '
|
|
_Filzst03 = ' '
|
|
_Filzst04 = ' '
|
|
_Bohrungst01 = ' '
|
|
_Bohrungst02 = ' '
|
|
_Bohrungst03 = ' '
|
|
_Bohrungst04 = ' '
|
|
_Bohrungst05 = ' '
|
|
_Bohrungst06 = ' '
|
|
_Bohrungst07 = ' '
|
|
_Bohrungst08 = ' '
|
|
_BTStatus = ' '
|
|
_UserID = bytes ([0]) + bytes ([0])
|
|
|
|
|
|
if len (bde):
|
|
dmc, startts, endts, variante, PutzzelleStatus,\
|
|
NietM6status01, NietM6F01, NietM6S01, NietM6status02, NietM6F02, NietM6S02, \
|
|
NietM6status03, NietM6F03, NietM6S03, NietM6status04, NietM6F04, NietM6S04, \
|
|
NietM6status05, NietM6F05, NietM6S05, \
|
|
DGBM8status01, DGBM8M01, DGBM8W01, DGBM8status02, DGBM8M02, DGBM8W02, \
|
|
DGBM8status03, DGBM8M03, DGBM8W03, DGBM8status04, DGBM8M04, DGBM8W04, \
|
|
NietM8status01, NietM8F01, NietM8S01, NietM8status02, NietM8F02, NietM8S02, \
|
|
bajostatus01, bajostatus02, bajostatus03, bajostatus04, \
|
|
clipstatus01, clipstatus02, clipstatus03, clipstatus04, clipstatus05, \
|
|
clipstatus06, clipstatus07, clipstatus08, clipstatus09, clipstatus10, \
|
|
clipstatus11, clipstatus12, clipstatus13, clipstatus14, clipstatus15, \
|
|
clipstatus16, clipstatus17, clipstatus18, clipstatus19, clipstatus20, \
|
|
clipstatus21, clipstatus22, clipstatus23, clipstatus24, clipstatus25, \
|
|
clipstatus26, clipstatus27, clipstatus28, clipstatus29, \
|
|
blindniet, fniet, sniet, \
|
|
kombimutter, mmutter, wmutter, masseblech, ausgleichselement, schallisolierung, \
|
|
BNM8status01, BNM8f01, BNM8s01, BNM8status02, BNM8f02, BNM8s02, \
|
|
BNM8status03, BNM8f03, BNM8s03, BNM8status04, BNM8f04, BNM8s04, \
|
|
SKSM8status01, SKSM8M01, SKSM8W01, SKSM8status02, SKSM8M02, SKSM8W02, \
|
|
SKSM8status03, SKSM8M03, SKSM8W03, SKSM8status04, SKSM8M04, SKSM8W04, \
|
|
Blechstatus01, Blechstatus02, Blechstatus03, Blechstatus04, \
|
|
LKSC01, LKSC02, LKSC03, LKSC04, LKSC05, LKSC06, LKSC07, LKSC08, \
|
|
ODBstatus, ODBSchraubestatus, Filzstatus01, Filzstatus02, Filzstatus03, Filzstatus04, \
|
|
Bohrungstatus01, Bohrungstatus02, Bohrungstatus03, Bohrungstatus04, Bohrungstatus05, Bohrungstatus06, Bohrungstatus07, Bohrungstatus08, \
|
|
userid = bde [0]
|
|
_t = 0
|
|
if 'G11' in variante:
|
|
_typ = bytes ([1]) + bytes ([0])
|
|
_t = 1
|
|
elif 'G3' in variante:
|
|
_typ = bytes ([2]) + bytes ([0])
|
|
_t = 2
|
|
elif 'G1' in variante:
|
|
_typ = bytes ([4]) + bytes ([0])
|
|
_t = 4
|
|
elif 'RR' in variante:
|
|
_typ = bytes ([8]) + bytes ([0])
|
|
_t = 8
|
|
|
|
_rl = 0
|
|
if 'RL' in variante:
|
|
_rl = 1
|
|
|
|
_us = 0
|
|
if 'US' in variante:
|
|
_us = 4
|
|
|
|
_rr = 0
|
|
if 'RR-11' in variante:
|
|
_rr = 8
|
|
elif 'RR-31' in variante:
|
|
_rr = 16
|
|
elif 'RR-21' in variante:
|
|
_rr = 32
|
|
|
|
if 'HUD' in variante:
|
|
_var = bytes ([_rl + _us + _rr + 2]) + bytes ([0])
|
|
else:
|
|
_var = bytes ([_rl + _us + _rr]) + bytes ([0])
|
|
|
|
_putz = bauteilstatusRev.get (PutzzelleStatus)
|
|
_NietM8st01 = bearbeitungstatusRev.get (NietM8status01)
|
|
_NietM8st02 = bearbeitungstatusRev.get (NietM8status02)
|
|
_DGBM8st01 = bearbeitungstatusRev.get (DGBM8status01)
|
|
_DGBM8st02 = bearbeitungstatusRev.get (DGBM8status02)
|
|
_DGBM8st03 = bearbeitungstatusRev.get (DGBM8status03)
|
|
_DGBM8st04 = bearbeitungstatusRev.get (DGBM8status04)
|
|
_NietM6st01 = bearbeitungstatusRev.get (NietM6status01)
|
|
_NietM6st02 = bearbeitungstatusRev.get (NietM6status02)
|
|
_NietM6st03 = bearbeitungstatusRev.get (NietM6status03)
|
|
_NietM6st04 = bearbeitungstatusRev.get (NietM6status04)
|
|
_NietM6st05 = bearbeitungstatusRev.get (NietM6status05)
|
|
_DGBM8M01 = bytes ([((DGBM8M01 >> 8) & 0xFF)]) + bytes ([(DGBM8M01 & 0xFF)])
|
|
_DGBM8W01 = bytes ([((DGBM8W01 >> 8) & 0xFF)]) + bytes ([(DGBM8W01 & 0xFF)])
|
|
_DGBM8M02 = bytes ([((DGBM8M02 >> 8) & 0xFF)]) + bytes ([(DGBM8M02 & 0xFF)])
|
|
_DGBM8W02 = bytes ([((DGBM8W02 >> 8) & 0xFF)]) + bytes ([(DGBM8W02 & 0xFF)])
|
|
_DGBM8M03 = bytes ([((DGBM8M03 >> 8) & 0xFF)]) + bytes ([(DGBM8M03 & 0xFF)])
|
|
_DGBM8W03 = bytes ([((DGBM8W03 >> 8) & 0xFF)]) + bytes ([(DGBM8W03 & 0xFF)])
|
|
_DGBM8M04 = bytes ([((DGBM8M04 >> 8) & 0xFF)]) + bytes ([(DGBM8M04 & 0xFF)])
|
|
_DGBM8W04 = bytes ([((DGBM8W04 >> 8) & 0xFF)]) + bytes ([(DGBM8W04 & 0xFF)])
|
|
_NietM8F01 = bytes ([((NietM8F01 >> 8) & 0xFF)]) + bytes ([(NietM8F01 & 0xFF)])
|
|
_NietM8S01 = bytes ([((NietM8S01 >> 8) & 0xFF)]) + bytes ([(NietM8S01 & 0xFF)])
|
|
_NietM8F02 = bytes ([((NietM8F02 >> 8) & 0xFF)]) + bytes ([(NietM8F02 & 0xFF)])
|
|
_NietM8S02 = bytes ([((NietM8S02 >> 8) & 0xFF)]) + bytes ([(NietM8S02 & 0xFF)])
|
|
_NietM6F01 = bytes ([((NietM6F01 >> 8) & 0xFF)]) + bytes ([(NietM6F01 & 0xFF)])
|
|
_NietM6S01 = bytes ([((NietM6S01 >> 8) & 0xFF)]) + bytes ([(NietM6S01 & 0xFF)])
|
|
_NietM6F02 = bytes ([((NietM6F02 >> 8) & 0xFF)]) + bytes ([(NietM6F02 & 0xFF)])
|
|
_NietM6S02 = bytes ([((NietM6S02 >> 8) & 0xFF)]) + bytes ([(NietM6S02 & 0xFF)])
|
|
_NietM6F03 = bytes ([((NietM6F03 >> 8) & 0xFF)]) + bytes ([(NietM6F03 & 0xFF)])
|
|
_NietM6S03 = bytes ([((NietM6S03 >> 8) & 0xFF)]) + bytes ([(NietM6S03 & 0xFF)])
|
|
_NietM6F04 = bytes ([((NietM6F04 >> 8) & 0xFF)]) + bytes ([(NietM6F04 & 0xFF)])
|
|
_NietM6S04 = bytes ([((NietM6S04 >> 8) & 0xFF)]) + bytes ([(NietM6S04 & 0xFF)])
|
|
_NietM6F05 = bytes ([((NietM6F05 >> 8) & 0xFF)]) + bytes ([(NietM6F05 & 0xFF)])
|
|
_NietM6S05 = bytes ([((NietM6S05 >> 8) & 0xFF)]) + bytes ([(NietM6S05 & 0xFF)])
|
|
_bj1 = bearbeitungstatusRev.get (bajostatus01)
|
|
_bj2 = bearbeitungstatusRev.get (bajostatus02)
|
|
_bj3 = bearbeitungstatusRev.get (bajostatus03)
|
|
_bj4 = bearbeitungstatusRev.get (bajostatus04)
|
|
_ccs1 = bearbeitungstatusRev.get (clipstatus01)
|
|
_ccs2 = bearbeitungstatusRev.get (clipstatus02)
|
|
_ccs3 = bearbeitungstatusRev.get (clipstatus03)
|
|
_ccs4 = bearbeitungstatusRev.get (clipstatus04)
|
|
_ccs5 = bearbeitungstatusRev.get (clipstatus05)
|
|
_ccs6 = bearbeitungstatusRev.get (clipstatus06)
|
|
_ccs7 = bearbeitungstatusRev.get (clipstatus07)
|
|
_ccs8 = bearbeitungstatusRev.get (clipstatus08)
|
|
_ccs9 = bearbeitungstatusRev.get (clipstatus09)
|
|
_ccs10 = bearbeitungstatusRev.get (clipstatus10)
|
|
_ccs11 = bearbeitungstatusRev.get (clipstatus11)
|
|
_ccs12 = bearbeitungstatusRev.get (clipstatus12)
|
|
_ccs13 = bearbeitungstatusRev.get (clipstatus13)
|
|
_ccs14 = bearbeitungstatusRev.get (clipstatus14)
|
|
_ccs15 = bearbeitungstatusRev.get (clipstatus15)
|
|
_ccs16 = bearbeitungstatusRev.get (clipstatus16)
|
|
_ccs17 = bearbeitungstatusRev.get (clipstatus17)
|
|
_ccs18 = bearbeitungstatusRev.get (clipstatus18)
|
|
_ccs19 = bearbeitungstatusRev.get (clipstatus19)
|
|
_ccs20 = bearbeitungstatusRev.get (clipstatus20)
|
|
_ccs21 = bearbeitungstatusRev.get (clipstatus21)
|
|
_ccs22 = bearbeitungstatusRev.get (clipstatus22)
|
|
_ccs23 = bearbeitungstatusRev.get (clipstatus23)
|
|
_ccs24 = bearbeitungstatusRev.get (clipstatus24)
|
|
_ccs25 = bearbeitungstatusRev.get (clipstatus25)
|
|
_ccs26 = bearbeitungstatusRev.get (clipstatus26)
|
|
_ccs27 = bearbeitungstatusRev.get (clipstatus27)
|
|
_ccs28 = bearbeitungstatusRev.get (clipstatus28)
|
|
_ccs29 = bearbeitungstatusRev.get (clipstatus29)
|
|
_ae = bearbeitungstatusRev.get (ausgleichselement)
|
|
_se = bearbeitungstatusRev.get (schallisolierung)
|
|
_mb = bearbeitungstatusRev.get (masseblech)
|
|
_bl = bearbeitungstatusRev.get (blindniet)
|
|
_km = bearbeitungstatusRev.get (kombimutter)
|
|
_fniet = bytes ([((fniet >> 8) & 0xFF)]) + bytes ([(fniet & 0xFF)])
|
|
_sniet = bytes ([((sniet >> 8) & 0xFF)]) + bytes ([(sniet & 0xFF)])
|
|
_mmutter = bytes ([((mmutter >> 8) & 0xFF)]) + bytes ([(mmutter & 0xFF)])
|
|
_wmutter = bytes ([((wmutter >> 8) & 0xFF)]) + bytes ([(wmutter & 0xFF)])
|
|
_BNMM8st01 = bearbeitungstatusRev.get (BNM8status01)
|
|
_BNMM8st02 = bearbeitungstatusRev.get (BNM8status02)
|
|
_BNMM8st03 = bearbeitungstatusRev.get (BNM8status03)
|
|
_BNMM8st04 = bearbeitungstatusRev.get (BNM8status04)
|
|
_BNMM8F01 = bytes ([((BNM8f01 >> 8) & 0xFF)]) + bytes ([(BNM8f01 & 0xFF)])
|
|
_BNMM8F02 = bytes ([((BNM8f02 >> 8) & 0xFF)]) + bytes ([(BNM8f02 & 0xFF)])
|
|
_BNMM8F03 = bytes ([((BNM8f03 >> 8) & 0xFF)]) + bytes ([(BNM8f03 & 0xFF)])
|
|
_BNMM8F04 = bytes ([((BNM8f04 >> 8) & 0xFF)]) + bytes ([(BNM8f04 & 0xFF)])
|
|
_BNMM8S01 = bytes ([((BNM8s01 >> 8) & 0xFF)]) + bytes ([(BNM8s01 & 0xFF)])
|
|
_BNMM8S02 = bytes ([((BNM8s02 >> 8) & 0xFF)]) + bytes ([(BNM8s02 & 0xFF)])
|
|
_BNMM8S03 = bytes ([((BNM8s03 >> 8) & 0xFF)]) + bytes ([(BNM8s03 & 0xFF)])
|
|
_BNMM8S04 = bytes ([((BNM8s04 >> 8) & 0xFF)]) + bytes ([(BNM8s04 & 0xFF)])
|
|
_6KSM8st01 = bearbeitungstatusRev.get (SKSM8status01)
|
|
_6KSM8st02 = bearbeitungstatusRev.get (SKSM8status02)
|
|
_6KSM8st03 = bearbeitungstatusRev.get (SKSM8status03)
|
|
_6KSM8st04 = bearbeitungstatusRev.get (SKSM8status04)
|
|
_6KSM8M01 = bytes ([((SKSM8M01 >> 8) & 0xFF)]) + bytes ([(SKSM8M01 & 0xFF)])
|
|
_6KSM8M02 = bytes ([((SKSM8M02 >> 8) & 0xFF)]) + bytes ([(SKSM8M02 & 0xFF)])
|
|
_6KSM8M03 = bytes ([((SKSM8M03 >> 8) & 0xFF)]) + bytes ([(SKSM8M03 & 0xFF)])
|
|
_6KSM8M04 = bytes ([((SKSM8M04 >> 8) & 0xFF)]) + bytes ([(SKSM8M04 & 0xFF)])
|
|
_6KSM8W01 = bytes ([((SKSM8W01 >> 8) & 0xFF)]) + bytes ([(SKSM8W01 & 0xFF)])
|
|
_6KSM8W02 = bytes ([((SKSM8W02 >> 8) & 0xFF)]) + bytes ([(SKSM8W02 & 0xFF)])
|
|
_6KSM8W03 = bytes ([((SKSM8W03 >> 8) & 0xFF)]) + bytes ([(SKSM8W03 & 0xFF)])
|
|
_6KSM8W04 = bytes ([((SKSM8W04 >> 8) & 0xFF)]) + bytes ([(SKSM8W04 & 0xFF)])
|
|
_Blechst01 = bearbeitungstatusRev.get (Blechstatus01)
|
|
_Blechst02 = bearbeitungstatusRev.get (Blechstatus02)
|
|
_Blechst03 = bearbeitungstatusRev.get (Blechstatus03)
|
|
_Blechst04 = bearbeitungstatusRev.get (Blechstatus04)
|
|
_LSKst01 = bearbeitungstatusRev.get (LKSC01)
|
|
_LSKst02 = bearbeitungstatusRev.get (LKSC02)
|
|
_LSKst03 = bearbeitungstatusRev.get (LKSC03)
|
|
_LSKst04 = bearbeitungstatusRev.get (LKSC04)
|
|
_LSKst05 = bearbeitungstatusRev.get (LKSC05)
|
|
_LSKst06 = bearbeitungstatusRev.get (LKSC06)
|
|
_LSKst07 = bearbeitungstatusRev.get (LKSC07)
|
|
_LSKst08 = bearbeitungstatusRev.get (LKSC08)
|
|
_ODBst = bearbeitungstatusRev.get (ODBstatus)
|
|
_ODBSst = bearbeitungstatusRev.get (ODBSchraubestatus)
|
|
_Filzst01 = bearbeitungstatusRev.get (Filzstatus01)
|
|
_Filzst02 = bearbeitungstatusRev.get (Filzstatus02)
|
|
_Filzst03 = bearbeitungstatusRev.get (Filzstatus03)
|
|
_Filzst04 = bearbeitungstatusRev.get (Filzstatus04)
|
|
_Bohrungst01 = bearbeitungstatusRev.get (Bohrungstatus01)
|
|
_Bohrungst02 = bearbeitungstatusRev.get (Bohrungstatus02)
|
|
_Bohrungst03 = bearbeitungstatusRev.get (Bohrungstatus03)
|
|
_Bohrungst04 = bearbeitungstatusRev.get (Bohrungstatus04)
|
|
_Bohrungst05 = bearbeitungstatusRev.get (Bohrungstatus05)
|
|
_Bohrungst06 = bearbeitungstatusRev.get (Bohrungstatus06)
|
|
_Bohrungst07 = bearbeitungstatusRev.get (Bohrungstatus07)
|
|
_Bohrungst08 = bearbeitungstatusRev.get (Bohrungstatus08)
|
|
_UserID = bytes ([((userid >> 8) & 0xFF)]) + bytes ([(userid & 0xFF)])
|
|
|
|
_space1 = ' '
|
|
|
|
_data += _dataheader.encode () + _datastate +\
|
|
_dmc.encode () + _start.encode () + _typ + _var + _putz.encode () + _space1.encode () +\
|
|
_NietM6st01.encode () + _space1.encode () + _NietM6F01 + _NietM6S01 +\
|
|
_NietM6st02.encode () + _space1.encode () + _NietM6F02 + _NietM6S02 +\
|
|
_NietM6st03.encode () + _space1.encode () + _NietM6F03 + _NietM6S03 +\
|
|
_NietM6st04.encode () + _space1.encode () + _NietM6F04 + _NietM6S04 +\
|
|
_NietM6st05.encode () + _space1.encode () + _NietM6F05 + _NietM6S05 +\
|
|
_DGBM8st01.encode () + _space1.encode () + _DGBM8M01 + _DGBM8W01 + _DGBM8D01 + _DGBM8T01 +\
|
|
_DGBM8st02.encode () + _space1.encode () + _DGBM8M02 + _DGBM8W02 + _DGBM8D02 + _DGBM8T02 +\
|
|
_DGBM8st03.encode () + _space1.encode () + _DGBM8M03 + _DGBM8W03 + _DGBM8D03 + _DGBM8T03 +\
|
|
_DGBM8st04.encode () + _space1.encode () + _DGBM8M04 + _DGBM8W04 + _DGBM8D04 + _DGBM8T04 +\
|
|
_NietM8st01.encode () + _space1.encode () + _NietM8F01 + _NietM8S01 +\
|
|
_NietM8st02.encode () + _space1.encode () + _NietM8F02 + _NietM8S02 +\
|
|
_bj1.encode () + _bj2.encode () + _bj3.encode () + _bj4.encode () +\
|
|
_ccs1.encode () + _ccs2.encode () + _ccs3.encode () + _ccs4.encode () + _ccs5.encode () +\
|
|
_ccs6.encode () + _ccs7.encode () + _ccs8.encode () + _ccs9.encode () + _ccs10.encode () +\
|
|
_ccs11.encode () + _ccs12.encode () + _ccs13.encode () + _ccs14.encode () + _ccs15.encode () +\
|
|
_ccs16.encode () + _ccs17.encode () + _ccs18.encode () + _ccs19.encode () + _ccs20.encode () +\
|
|
_ccs21.encode () + _ccs22.encode () + _ccs23.encode () + _ccs24.encode () + _ccs25.encode () +\
|
|
_ccs26.encode () + _ccs27.encode () + _ccs28.encode () + _ccs29.encode () + _space1.encode () +\
|
|
_bl.encode () + _space1.encode () + _fniet + _sniet +\
|
|
_km.encode () + _space1.encode () + _mmutter + _wmutter + _dmutter + _tmutter +\
|
|
_mb.encode () + _ae.encode () + _se.encode () + _space1.encode () +\
|
|
_BNMM8st01.encode () + _space1.encode () + _BNMM8F01 + _BNMM8S01 +\
|
|
_BNMM8st02.encode () + _space1.encode () + _BNMM8F02 + _BNMM8S02 +\
|
|
_BNMM8st03.encode () + _space1.encode () + _BNMM8F03 + _BNMM8S03 +\
|
|
_BNMM8st04.encode () + _space1.encode () + _BNMM8F04 + _BNMM8S04 +\
|
|
_6KSM8st01.encode () + _space1.encode () + _6KSM8M01 + _6KSM8W01 +\
|
|
_6KSM8st02.encode () + _space1.encode () + _6KSM8M02 + _6KSM8W02 +\
|
|
_6KSM8st03.encode () + _space1.encode () + _6KSM8M03 + _6KSM8W03 +\
|
|
_6KSM8st04.encode () + _space1.encode () + _6KSM8M04 + _6KSM8W04 +\
|
|
_Blechst01.encode () + _Blechst02.encode () + _Blechst03.encode () + _Blechst04.encode () +\
|
|
_LSKst01.encode () + _LSKst02.encode () + _LSKst03.encode () + _LSKst04.encode () +\
|
|
_LSKst05.encode () + _LSKst06.encode () + _LSKst07.encode () + _LSKst04.encode () +\
|
|
_ODBst.encode () + _ODBSst.encode () +\
|
|
_Filzst01.encode () + _Filzst02.encode () + _Filzst03.encode () + _Filzst04.encode () +\
|
|
_Bohrungst01.encode () + _Bohrungst02.encode () + _Bohrungst03.encode () + _Bohrungst04.encode () +\
|
|
_Bohrungst05.encode () + _Bohrungst06.encode () + _Bohrungst07.encode () + _Bohrungst08.encode () +\
|
|
_BTStatus.encode () + _space1.encode () + \
|
|
_UserID
|
|
|
|
#print (_data[1:30])
|
|
|
|
self.queue_add (channel, client_id, msgtype, _data)
|
|
return
|
|
|
|
|
|
|
|
|
|
def generatepd (self, count, channel, client_id, msgtype, src, dst, dmc):
|
|
"""
|
|
Generate an QUIT telegram and send it
|
|
"""
|
|
DB_con = self.connections['DB']
|
|
|
|
self. message (3, " generatepd : generate PD Telegram for %s on channel %s, dmc %s" % (msgtype, channel, dmc))
|
|
#Fillword
|
|
_data = bytes ([1]) + bytes ([1]) + bytes ([((count >> 8) & 0xFF)]) + bytes ([(count & 0xFF)])
|
|
_data2 = \
|
|
doublechar (src) +\
|
|
doublechar (dst) +\
|
|
msgtype + + (4 - len(dmc)) * ' '
|
|
_dmc = dmc + (28 - len(dmc)) * ' '
|
|
_start = 14 * ' '
|
|
_end = 14 * ' '
|
|
#Bede Daten holen
|
|
bde = DB_con.getbde (dmc)
|
|
_typ = ' '.encode ()
|
|
_var = ' '.encode ()
|
|
_bnst = ' '
|
|
_bajost = ' '
|
|
_ccst = ' '
|
|
_mbst = ' '
|
|
if len (bde):
|
|
dmc1, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus = bde [0]
|
|
_t = 0
|
|
if 'G11' in variante:
|
|
_typ = bytes ([1]) + bytes ([0])
|
|
_t = 1
|
|
elif 'G3' in variante:
|
|
_typ = bytes ([2]) + bytes ([0])
|
|
_t = 2
|
|
|
|
_rl = 0
|
|
if 'RL' in variante:
|
|
_rl = 1
|
|
|
|
if 'HUD' in variante:
|
|
_var = bytes ([_rl + 2]) + bytes ([0])
|
|
else:
|
|
_var = bytes ([_rl]) + bytes ([0])
|
|
|
|
_bnst = bauteilstatusRev.get (blindniet)
|
|
_bajost = bauteilstatusRev.get (bajonettclip)
|
|
_ccst = bauteilstatusRev.get (cclip)
|
|
_mbst = bauteilstatusRev.get (masseblech)
|
|
|
|
bn = DB_con.getblindniet (dmc)
|
|
_NietM8st01 = ' '
|
|
_NietM8st02 = ' '
|
|
_DGBM8st01 = ' '
|
|
_DGBM8st02 = ' '
|
|
_DGBM8st03 = ' '
|
|
_DGBM8st04 = ' '
|
|
_NietM6st01 = ' '
|
|
_NietM6st02 = ' '
|
|
_NietM6st03 = ' '
|
|
_NietM6st04 = ' '
|
|
_NietM6st05 = ' '
|
|
_DGBM8M01 = bytes ([0]) + bytes ([0])
|
|
_DGBM8D01 = bytes ([0]) + bytes ([0])
|
|
_DGBM8W01 = bytes ([0]) + bytes ([0])
|
|
_DGBM8T01 = bytes ([0]) + bytes ([0])
|
|
_DGBM8M02 = bytes ([0]) + bytes ([0])
|
|
_DGBM8D02 = bytes ([0]) + bytes ([0])
|
|
_DGBM8W02 = bytes ([0]) + bytes ([0])
|
|
_DGBM8T02 = bytes ([0]) + bytes ([0])
|
|
_DGBM8M03 = bytes ([0]) + bytes ([0])
|
|
_DGBM8D03 = bytes ([0]) + bytes ([0])
|
|
_DGBM8W03 = bytes ([0]) + bytes ([0])
|
|
_DGBM8T03 = bytes ([0]) + bytes ([0])
|
|
_DGBM8M04 = bytes ([0]) + bytes ([0])
|
|
_DGBM8D04 = bytes ([0]) + bytes ([0])
|
|
_DGBM8W04 = bytes ([0]) + bytes ([0])
|
|
_DGBM8T04 = bytes ([0]) + bytes ([0])
|
|
_NietM8F01 = bytes ([0]) + bytes ([0])
|
|
_NietM8S01 = bytes ([0]) + bytes ([0])
|
|
_NietM8F02 = bytes ([0]) + bytes ([0])
|
|
_NietM8S02 = bytes ([0]) + bytes ([0])
|
|
_NietM6F01 = bytes ([0]) + bytes ([0])
|
|
_NietM6S01 = bytes ([0]) + bytes ([0])
|
|
_NietM6F02 = bytes ([0]) + bytes ([0])
|
|
_NietM6S02 = bytes ([0]) + bytes ([0])
|
|
_NietM6F03 = bytes ([0]) + bytes ([0])
|
|
_NietM6S03 = bytes ([0]) + bytes ([0])
|
|
_NietM6F04 = bytes ([0]) + bytes ([0])
|
|
_NietM6S04 = bytes ([0]) + bytes ([0])
|
|
_NietM6F05 = bytes ([0]) + bytes ([0])
|
|
_NietM6S05 = bytes ([0]) + bytes ([0])
|
|
|
|
if len (bn):
|
|
dmc1, startts, endts, DGBM8status01, DGBM8status02, DGBM8status03, DGBM8status04, NietM8status01, NietM8status02, NietM6status01, NietM6status02, NietM6status03, NietM6status04, NietM6status05, DGBM8M01, DGBM8D01, DGBM8W01, DGBM8T01, DGBM8M02, DGBM8D02, DGBM8W02, DGBM8T02, DGBM8M03, DGBM8D03, DGBM8W03, DGBM8T03, DGBM8M04, DGBM8D04, DGBM8W04, DGBM8T04, NietM8F01, NietM8S01, NietM8F02, NietM8S02, NietM6F01, NietM6S01, NietM6F02, NietM6S02, NietM6F03, NietM6S03, NietM6F04, NietM6S04, NietM6F05, NietM6S05 = bn [0]
|
|
|
|
_NietM8st01 = bearbeitungstatusRev.get (NietM8status01)
|
|
_NietM8st02 = bearbeitungstatusRev.get (NietM8status02)
|
|
_DGBM8st01 = bearbeitungstatusRev.get (DGBM8status01)
|
|
_DGBM8st02 = bearbeitungstatusRev.get (DGBM8status02)
|
|
_DGBM8st03 = bearbeitungstatusRev.get (DGBM8status03)
|
|
_DGBM8st04 = bearbeitungstatusRev.get (DGBM8status04)
|
|
_NietM6st01 = bearbeitungstatusRev.get (NietM6status01)
|
|
_NietM6st02 = bearbeitungstatusRev.get (NietM6status02)
|
|
_NietM6st03 = bearbeitungstatusRev.get (NietM6status03)
|
|
_NietM6st04 = bearbeitungstatusRev.get (NietM6status04)
|
|
_NietM6st05 = bearbeitungstatusRev.get (NietM6status05)
|
|
_DGBM8M01 = bytes ([((DGBM8M01 >> 8) & 0xFF)]) + bytes ([(DGBM8M01 & 0xFF)])
|
|
_DGBM8D01 = bytes ([((DGBM8D01 >> 8) & 0xFF)]) + bytes ([(DGBM8D01 & 0xFF)])
|
|
_DGBM8W01 = bytes ([((DGBM8W01 >> 8) & 0xFF)]) + bytes ([(DGBM8W01 & 0xFF)])
|
|
_DGBM8T01 = bytes ([((DGBM8T01 >> 8) & 0xFF)]) + bytes ([(DGBM8T01 & 0xFF)])
|
|
_DGBM8M02 = bytes ([((DGBM8M02 >> 8) & 0xFF)]) + bytes ([(DGBM8M02 & 0xFF)])
|
|
_DGBM8D02 = bytes ([((DGBM8D02 >> 8) & 0xFF)]) + bytes ([(DGBM8D02 & 0xFF)])
|
|
_DGBM8W02 = bytes ([((DGBM8W02 >> 8) & 0xFF)]) + bytes ([(DGBM8W02 & 0xFF)])
|
|
_DGBM8T02 = bytes ([((DGBM8T02 >> 8) & 0xFF)]) + bytes ([(DGBM8T02 & 0xFF)])
|
|
_DGBM8M03 = bytes ([((DGBM8M03 >> 8) & 0xFF)]) + bytes ([(DGBM8M03 & 0xFF)])
|
|
_DGBM8D03 = bytes ([((DGBM8D03 >> 8) & 0xFF)]) + bytes ([(DGBM8D03 & 0xFF)])
|
|
_DGBM8W03 = bytes ([((DGBM8W03 >> 8) & 0xFF)]) + bytes ([(DGBM8W03 & 0xFF)])
|
|
_DGBM8T03 = bytes ([((DGBM8T03 >> 8) & 0xFF)]) + bytes ([(DGBM8T03 & 0xFF)])
|
|
_DGBM8M04 = bytes ([((DGBM8M04 >> 8) & 0xFF)]) + bytes ([(DGBM8M04 & 0xFF)])
|
|
_DGBM8D04 = bytes ([((DGBM8D04 >> 8) & 0xFF)]) + bytes ([(DGBM8D04 & 0xFF)])
|
|
_DGBM8W04 = bytes ([((DGBM8W04 >> 8) & 0xFF)]) + bytes ([(DGBM8W04 & 0xFF)])
|
|
_DGBM8T04 = bytes ([((DGBM8T04 >> 8) & 0xFF)]) + bytes ([(DGBM8T04 & 0xFF)])
|
|
_NietM8F01 = bytes ([((NietM8F01 >> 8) & 0xFF)]) + bytes ([(NietM8F01 & 0xFF)])
|
|
_NietM8S01 = bytes ([((NietM8S01 >> 8) & 0xFF)]) + bytes ([(NietM8S01 & 0xFF)])
|
|
_NietM8F02 = bytes ([((NietM8F02 >> 8) & 0xFF)]) + bytes ([(NietM8F02 & 0xFF)])
|
|
_NietM8S02 = bytes ([((NietM8S02 >> 8) & 0xFF)]) + bytes ([(NietM8S02 & 0xFF)])
|
|
_NietM6F01 = bytes ([((NietM6F01 >> 8) & 0xFF)]) + bytes ([(NietM6F01 & 0xFF)])
|
|
_NietM6S01 = bytes ([((NietM6S01 >> 8) & 0xFF)]) + bytes ([(NietM6S01 & 0xFF)])
|
|
_NietM6F02 = bytes ([((NietM6F02 >> 8) & 0xFF)]) + bytes ([(NietM6F02 & 0xFF)])
|
|
_NietM6S02 = bytes ([((NietM6S02 >> 8) & 0xFF)]) + bytes ([(NietM6S02 & 0xFF)])
|
|
_NietM6F03 = bytes ([((NietM6F03 >> 8) & 0xFF)]) + bytes ([(NietM6F03 & 0xFF)])
|
|
_NietM6S03 = bytes ([((NietM6S03 >> 8) & 0xFF)]) + bytes ([(NietM6S03 & 0xFF)])
|
|
_NietM6F04 = bytes ([((NietM6F04 >> 8) & 0xFF)]) + bytes ([(NietM6F04 & 0xFF)])
|
|
_NietM6S04 = bytes ([((NietM6S04 >> 8) & 0xFF)]) + bytes ([(NietM6S04 & 0xFF)])
|
|
_NietM6F05 = bytes ([((NietM6F05 >> 8) & 0xFF)]) + bytes ([(NietM6F05 & 0xFF)])
|
|
_NietM6S05 = bytes ([((NietM6S05 >> 8) & 0xFF)]) + bytes ([(NietM6S05 & 0xFF)])
|
|
|
|
_bnvalues = ' ' * 10
|
|
|
|
bj = DB_con.getbajonettclip (dmc)
|
|
_bj1 = ' '
|
|
_bj2 = ' '
|
|
_bj3 = ' '
|
|
_bj4 = ' '
|
|
if len (bj):
|
|
dmc1, startts, endts, aufnahme, bajostatus01, bajostatus02, bajostatus03, bajostatus04 = bj [0]
|
|
_bj1 = bearbeitungstatusRev.get (bajostatus01)
|
|
_bj2 = bearbeitungstatusRev.get (bajostatus02)
|
|
_bj3 = bearbeitungstatusRev.get (bajostatus03)
|
|
_bj4 = bearbeitungstatusRev.get (bajostatus04)
|
|
|
|
_bjspace = ' ' * 25
|
|
|
|
cc = DB_con.getcclip (dmc)
|
|
_ccs1 = ' '
|
|
_ccs2 = ' '
|
|
_ccs3 = ' '
|
|
_ccs4 = ' '
|
|
_ccs5 = ' '
|
|
_ccs6 = ' '
|
|
_ccs7 = ' '
|
|
_ccs8 = ' '
|
|
_ccs9 = ' '
|
|
_ccs10 = ' '
|
|
_ccs11 = ' '
|
|
_ccs12 = ' '
|
|
_ccs13 = ' '
|
|
_ccs14 = ' '
|
|
_ccs15 = ' '
|
|
_ccs16 = ' '
|
|
_ccs17 = ' '
|
|
_ccs18 = ' '
|
|
|
|
if len (cc):
|
|
dmc1, startts, endts, aufnahme, clipstatus01, clipstatus02, clipstatus03, clipstatus04, clipstatus05, clipstatus06, clipstatus07, clipstatus08, clipstatus09, clipstatus10, clipstatus11, clipstatus12, clipstatus13, clipstatus14, clipstatus15, clipstatus16, clipstatus17, clipstatus18 = cc [0]
|
|
_ccs1 = bearbeitungstatusRev.get (clipstatus01)
|
|
_ccs2 = bearbeitungstatusRev.get (clipstatus02)
|
|
_ccs3 = bearbeitungstatusRev.get (clipstatus03)
|
|
_ccs4 = bearbeitungstatusRev.get (clipstatus04)
|
|
_ccs5 = bearbeitungstatusRev.get (clipstatus05)
|
|
_ccs6 = bearbeitungstatusRev.get (clipstatus06)
|
|
_ccs7 = bearbeitungstatusRev.get (clipstatus07)
|
|
_ccs8 = bearbeitungstatusRev.get (clipstatus08)
|
|
_ccs9 = bearbeitungstatusRev.get (clipstatus09)
|
|
_ccs10 = bearbeitungstatusRev.get (clipstatus10)
|
|
_ccs11 = bearbeitungstatusRev.get (clipstatus11)
|
|
_ccs12 = bearbeitungstatusRev.get (clipstatus12)
|
|
_ccs13 = bearbeitungstatusRev.get (clipstatus13)
|
|
_ccs14 = bearbeitungstatusRev.get (clipstatus14)
|
|
_ccs15 = bearbeitungstatusRev.get (clipstatus15)
|
|
_ccs16 = bearbeitungstatusRev.get (clipstatus16)
|
|
_ccs17 = bearbeitungstatusRev.get (clipstatus17)
|
|
_ccs18 = bearbeitungstatusRev.get (clipstatus18)
|
|
|
|
_ccspace = ' ' * 11
|
|
|
|
mb = DB_con.getmasseblech (dmc)
|
|
_ae = ' '
|
|
_se = ' '
|
|
_mb = ' '
|
|
_bl = ' '
|
|
_km = ' '
|
|
_fniet = bytes ([0]) + bytes ([0])
|
|
_sniet = bytes ([0]) + bytes ([0])
|
|
_mmutter = bytes ([0]) + bytes ([0])
|
|
_dmutter = bytes ([0]) + bytes ([0])
|
|
_wmutter = bytes ([0]) + bytes ([0])
|
|
_tmutter = bytes ([0]) + bytes ([0])
|
|
|
|
if len (mb):
|
|
dmc1, startts, endts, ausgleichselement, schallisolierung, masseblech, blindniet, kombimutter, fniet, sniet, mmutter, dmutter, wmutter, tmutter = mb [0]
|
|
_ae = bearbeitungstatusRev.get (ausgleichselement)
|
|
_se = bearbeitungstatusRev.get (schallisolierung)
|
|
_mb = bearbeitungstatusRev.get (masseblech)
|
|
_bl = bearbeitungstatusRev.get (blindniet)
|
|
_km = bearbeitungstatusRev.get (kombimutter)
|
|
_fniet = bytes ([((fniet >> 8) & 0xFF)]) + bytes ([(fniet & 0xFF)])
|
|
_sniet = bytes ([((sniet >> 8) & 0xFF)]) + bytes ([(sniet & 0xFF)])
|
|
_mmutter = bytes ([((mmutter >> 8) & 0xFF)]) + bytes ([(mmutter & 0xFF)])
|
|
_dmutter = bytes ([((dmutter >> 8) & 0xFF)]) + bytes ([(dmutter & 0xFF)])
|
|
_wmutter = bytes ([((wmutter >> 8) & 0xFF)]) + bytes ([(wmutter & 0xFF)])
|
|
_tmutter = bytes ([((tmutter >> 8) & 0xFF)]) + bytes ([(tmutter & 0xFF)])
|
|
|
|
_mbspace = ' ' * 14
|
|
_mbspace2 = ' ' * 4
|
|
|
|
|
|
_data += _data2.encode ()
|
|
_data += _dmc.encode () + _start.encode () + _end.encode () + _typ + _var + _bnst.encode () + \
|
|
_NietM8st01.encode () + _NietM8st02.encode () + _DGBM8st01.encode () + _DGBM8st02.encode () + _DGBM8st03.encode () + _DGBM8st04.encode () + \
|
|
_NietM6st01.encode () + _NietM6st02.encode () + _NietM6st03.encode () + _NietM6st04.encode () + _NietM6st05.encode () + ' '.encode () + \
|
|
_DGBM8M01 + _DGBM8D01 + _DGBM8W01 + _DGBM8T01 +\
|
|
_DGBM8M02 + _DGBM8D02 + _DGBM8W02 + _DGBM8T02 +\
|
|
_DGBM8M03 + _DGBM8D03 + _DGBM8W03 + _DGBM8T03 +\
|
|
_DGBM8M04 + _DGBM8D04 + _DGBM8W04 + _DGBM8T04 +\
|
|
_NietM6F01 + _NietM6S01 + _NietM6F02 + _NietM6S02 + _NietM6F03 + _NietM6S03 + _NietM6F04 + _NietM6S04 + _NietM6F05 + _NietM6S05 +\
|
|
_NietM8F01 + _NietM8S01 + _NietM8F02 + _NietM8S02 +\
|
|
_bnvalues.encode () +\
|
|
_bajost.encode () + _bj1.encode () + _bj2.encode () + _bj3.encode () + _bj4.encode () + _bjspace.encode () + \
|
|
_ccst.encode () + _ccs1.encode () + _ccs2.encode () + _ccs3.encode () + _ccs4.encode () + _ccs5.encode () + _ccs6.encode () + _ccs7.encode () +\
|
|
_ccs8.encode () + _ccs9.encode () + _ccs10.encode () + _ccs11.encode () + _ccs12.encode () + _ccs13.encode () + _ccs14.encode () + _ccs15.encode () +\
|
|
_ccs16.encode () + _ccs17.encode () + _ccs18.encode () + _ccspace.encode () + \
|
|
_mbst.encode () + _ae.encode () + _se.encode () + _mb.encode () + _bl.encode () + _km.encode () +\
|
|
_mbspace.encode () +\
|
|
_fniet + _sniet + _mmutter + _dmutter + _wmutter + _tmutter +\
|
|
_mbspace2.encode ()
|
|
#print (_data[1:30])
|
|
|
|
self.queue_add (channel, client_id, msgtype, _data)
|
|
return
|
|
|
|
|
|
|
|
def generatequitfixed (self, count, channel, client_id, msgtype, src, dst, quit):
|
|
"""
|
|
Generate an QUIT telegram and send it
|
|
"""
|
|
self. message (3, " generatequit : generate Quit Telegram for %s on channel %s, with quit %d" % (msgtype, channel, quit))
|
|
_data = bytes ([1]) + bytes ([1]) + bytes ([((count >> 8) & 0xFF)]) + bytes ([(count & 0xFF)])
|
|
_data2 = \
|
|
doublechar (src) +\
|
|
doublechar (dst) +\
|
|
msgtype
|
|
_data3 = bytes ([0]) + bytes ([quit % 256])
|
|
_data = _data + _data2.encode () + _data3
|
|
|
|
#self.message (6, " generatequit : " + _data)
|
|
#self.log ( "generatequit" + _data)
|
|
self.queue_add (channel, client_id, msgtype, _data)
|
|
return
|
|
|
|
|
|
|
|
def generatequit (self, count, channel, client_id, msgtype, src, dst, quit):
|
|
"""
|
|
Generate an QUIT telegram and send it
|
|
"""
|
|
self. message (3, " generatequit : generate Quit Telegram for %s on channel %s, with quit %d" % (msgtype, channel, quit))
|
|
_data = bytes ([((count >> 8) & 0xFF)]) + bytes ([(count & 0xFF)])
|
|
_data2 = \
|
|
doublechar (src) +\
|
|
doublechar (dst) +\
|
|
msgtype
|
|
_data3 = bytes ([0]) + bytes ([quit % 256])
|
|
_data = _data + _data2.encode () + _data3
|
|
|
|
#self.message (6, " generatequit : " + _data)
|
|
#self.log ( "generatequit" + _data)
|
|
self.queue_add (channel, client_id, msgtype, _data)
|
|
return
|
|
|
|
|
|
def queue_add (self, channel, client_id, msgtype, data):
|
|
"""
|
|
Add a telegram to sendqueue
|
|
"""
|
|
self.message (3, "Added telegram to sendqueue")
|
|
self.connections['Queue'].append ([channel, client_id, msgtype, data])
|
|
|
|
|
|
def listen (self, socket):
|
|
"""
|
|
Wait for a client to open a connection to our socket.
|
|
"""
|
|
try:
|
|
new_socket, client = socket.accept ()
|
|
clientip, port = client
|
|
self.message (1, "Server connected by %s port %s" % (clientip, port))
|
|
if clientip in self.connections['TCP']:
|
|
self.sockets [(clientip, port)]= (new_socket, 'New')
|
|
if self.connections['TCP'][clientip][0]:
|
|
self.message (1, " Client tried to open an established connection Closing Socket")
|
|
oldsock = self.connections['TCP'][clientip][0]
|
|
oldsock.close ()
|
|
for ip, port in self.sockets:
|
|
if self.sockets[(ip, port)][0] == oldsock:
|
|
self.message (1, " read delete socket")
|
|
del self.sockets[(ip, port)]
|
|
break
|
|
self.connections['TCP'][clientip][0] = new_socket
|
|
self.message (3, "** Checking for active Connections to request")
|
|
else:
|
|
self.message (1, "Unauthorized connection from %s port %s " % (clientip, port))
|
|
|
|
|
|
|
|
|
|
except KeyboardInterrupt:
|
|
self.message (1,"Interrupted by user")
|
|
return
|
|
|
|
|
|
def blocknxmit (self):
|
|
"""
|
|
Wait for incomming data on any of the open connections, decode it and take
|
|
appropriate action and also check for outgoing data and free channels to
|
|
transmit it.
|
|
"""
|
|
# lifebeats
|
|
nt = time ()
|
|
DB_con = self.connections['DB']
|
|
# Send lifebeat every 5s
|
|
if nt - self.connections['LastBeat'] > 5:
|
|
#self.lifebeat ()
|
|
self.connections['LastBeat'] = nt
|
|
|
|
|
|
writecons = []
|
|
#Socket , Counter, Mode, StId, Name
|
|
|
|
#Check for active Connections
|
|
for ip in self.connections['TCP']:
|
|
if len (ip) != 4 and type (ip) != type (''):
|
|
print ("Invalid item in ISO connections")
|
|
raise Warning
|
|
|
|
# Connection Tuple found
|
|
socket, counter, mode, stid, name = self.connections['TCP'][ip]
|
|
if mode == 'active' and not socket:
|
|
#FixMe
|
|
print ("No Active Connections yet")
|
|
raise Warning
|
|
|
|
|
|
|
|
if len (self.connections['Queue']):
|
|
channel, client_id, msgtype, data = self.connections['Queue'][0]
|
|
if channel == 'TCP':
|
|
#conn_name == ISO-Tuple
|
|
self.message (3, "blocknxmit - Found to-be-send telegramm on Channel %s to %s" %(channel, client_id))
|
|
con = self.connections[channel][client_id][0]
|
|
if con:
|
|
writecons.append ((con, data, self.connections['TCP'], client_id))
|
|
|
|
# Select free sockets for transmission
|
|
# self.sockets = {(socket, STATE)}
|
|
writes = [i[0] for i in writecons]
|
|
reads = [self.sockets[i] for i in self.sockets]
|
|
|
|
(read, writes, xlist) = select ([i[0] for i in reads], writes, [], 0.1)
|
|
readcons = [i for i in reads if i[0] in read]
|
|
writecons = [i for i in writecons if i[0] in writes]
|
|
|
|
|
|
# First write all remaining messages
|
|
for conn, data, channel, client_id in writecons:
|
|
self.message (1, "blocknxmit - Write to Socket %s" % str (client_id))
|
|
# Loop until we successfuly got the data through
|
|
while 1:
|
|
try:
|
|
#conn.send (data.encode ())
|
|
conn.send (data)
|
|
except error:
|
|
# In case of a failure we'll need a new connection
|
|
self.message (1, "blocknxmit - Error on write")
|
|
if len (contyp) == 2 and type (contyp) == type (()):
|
|
socket, counter, mode = self.connections[c]
|
|
if mode == 'active':
|
|
print ("hoit")
|
|
raise Warning
|
|
loc_TSAP, rem_TSAP = contyp
|
|
self.makeactiveisoconnection (loc_TSAP, rem_TSAP)
|
|
conn = self.connections['ISO'][(loc_TSAP, rem_TSAP)][0]
|
|
else:
|
|
# Break on success
|
|
break
|
|
|
|
channel, client_id, msgtype, data = self.connections['Queue'][0]
|
|
del self.connections['Queue'][0]
|
|
|
|
# Then read all remaining messages from ready sockets
|
|
for conn in readcons:
|
|
self.message (1, "blocknxmit - Read from Socket " )
|
|
|
|
if conn[0] == self.listener_socket:
|
|
self.message (3, " blocknxmit - Read on listener socket")
|
|
self.listen (conn[0])
|
|
else:
|
|
self.message (3, " blocknxmit - Read on other socket")
|
|
self.read (conn)
|
|
|
|
# Sweep over DB for empty space in pick every once in a while
|
|
DB_con = self.connections['DB']
|
|
|
|
|
|
|
|
def read (self, conn):
|
|
sock, state = conn
|
|
try:
|
|
data = sock.recv (32768)
|
|
except error:
|
|
self.message (1, 'Socket error on read: ')
|
|
return
|
|
|
|
# Bail out if connection closed by client
|
|
if not data:
|
|
try:
|
|
client_ip, client_port = sock.getpeername ()
|
|
except:
|
|
client_ip, client_port = '0.0.0.0', 0
|
|
self.message (1, ' read empty telegramm - client %s %d closed connection - close socket !!!!'% (client_ip, client_port))
|
|
raise Warning
|
|
if (client_ip, client_port) in self.sockets:
|
|
socket, state = self.sockets [(client_ip, client_port)]
|
|
self.message (2, ' delete socket')
|
|
del self.sockets[(client_ip, client_port)]
|
|
for typ in self.connections:
|
|
try:
|
|
if self.connections[typ][0] == sock:
|
|
self.message (2, ' found socket in connection delete Reference %s' % str (typ))
|
|
self.connections[typ][0] = None
|
|
except:
|
|
a = 0
|
|
|
|
sock.close ()
|
|
return
|
|
|
|
self.message (1," read : Received data packet")
|
|
client_id = conn[0].getpeername()[0]
|
|
ret_val = self.dt_handler (data, client_id, source = '')
|
|
|
|
|
|
def write (self, loc_TSAP, rem_TSAP, data):
|
|
"""
|
|
Send Data via ISO Connection
|
|
"""
|
|
if 'client' in self.connections:
|
|
if (loc_TSAP, rem_TSAP) in self.connections['ISO']:
|
|
conn_data = self.connections['ISO'][(loc_TSAP, rem_TSAP)]
|
|
conn = conn_data[0]
|
|
if conn:
|
|
if conn_data[1] == "active":
|
|
# Loop until we successfuly got the data through
|
|
while 1:
|
|
try:
|
|
conn.send (data)
|
|
# In case of a failure we'll need a new connection
|
|
except error:
|
|
self.makeactiveisoconnection (loc_TSAP, rem_TSAP)
|
|
conn = self.connections['ISO'][(loc_TSAP, rem_TSAP)][0]
|
|
# Break on success
|
|
else:
|
|
break
|
|
else:
|
|
try:
|
|
conn.send (data)
|
|
except error:
|
|
print ("Send Error")
|
|
|
|
else:
|
|
self.message (1,"write: Connection" + loc_TSAP + "-" + rem_TSAP + " not active")
|
|
else:
|
|
self.message (1,"write: Connection " + loc_TSAP + "-" + rem_TSAP + " doesn't exist")
|
|
else:
|
|
self.message (1,"write: Client " + " doesn't exist")
|
|
|
|
|
|
def shutdown (self):
|
|
"""
|
|
Shut down socket and cleanup.
|
|
"""
|
|
self.socket.close ()
|
|
self.message (1,"Server shut down normally")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
config = configparser.ConfigParser ()
|
|
config.read ('bde.cfg')
|
|
IP_BDE = config.get ('IP Settings', 'ipbde')
|
|
if not IP_BDE:
|
|
print ('No IP for BDE')
|
|
sys.exit (0)
|
|
print ('BDE configured for IP %s' %IP_BDE)
|
|
|
|
DBFILE = config.get ('DB Settings', 'dbfile')
|
|
if not DBFILE:
|
|
print ('No DB file configured')
|
|
sys.exit (0)
|
|
|
|
DBTALOG = config.get ('DB Settings', 'logfile')
|
|
if not DBTALOG:
|
|
print ('No DB TA Logfile configured')
|
|
sys.exit (0)
|
|
|
|
loglevel = config.getint ('DEBUG', 'loglevel')
|
|
if not loglevel:
|
|
loglevel = 0
|
|
print ('loglevel :%d' %loglevel)
|
|
|
|
debuglevel = config.getint ('DEBUG', 'debuglevel')
|
|
if not debuglevel:
|
|
debuglevel = 0
|
|
print ('debuglevel :%d' %debuglevel)
|
|
|
|
MDB = 'bde'
|
|
MDBUSR = 'bde'
|
|
MDBPASS = 'eczema-orleans-queuing-surplus'
|
|
MDBTALOG = '/tmp/talogRR.sql'
|
|
|
|
server = BDEServer (address = IP_BDE, verbose = loglevel, debug = debuglevel, DB = (DBFILE, DBTALOG), DBMaria = (MDB, MDBUSR, MDBPASS, MDBTALOG) )
|
|
for i in chain (range (1, 11), range (20, 21), range (30, 31), range (98,100)):
|
|
IPPLC = config.get ('PD%02d' % i , 'ipsps')
|
|
if not IPPLC:
|
|
print ('No IP for PD%02d' % i)
|
|
else:
|
|
CAPPLC = config.get ('PD%02d' % i , 'name')
|
|
print ('BDE PD%02d configured for IP %s' %(i, IPPLC))
|
|
server.add_conn ('PD%02d' % i, CAPPLC, IPPLC, mode = "passive")
|
|
|
|
ot = time ()
|
|
while 1:
|
|
server.blocknxmit ()
|
|
|
|
|
|
server.shutdown ()
|
|
sys.exit (0)
|
|
|
|
|
|
|