Files
BDE/bde.py
2017-10-25 13:03:53 +02:00

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)