Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- # coding: utf-8
- #
- # Werkzeug Verleih fuer JumpY
- # 12.01.2016 Copyright (C) by meigrafd (meiraspi@gmail.com) published under the MIT License
- #
- import multiprocessing as mp
- import time, logging
- try:
- import cymysql
- except ImportError:
- print("ERROR: You must install cymysql Module: sudo apt-get install python3-pip && sudo pip3 install cymysql")
- exit()
- from Barcode import *
- from WebSocket import *
- #-------------------------------------------------------------------
- HID_device = '/dev/hidraw0'
- WebSocketHost = "0.0.0.0"
- WebSocketPort = 7070
- # Specify Settings for MySQL
- mysqlHost = 'localhost'
- mysqlPort = '3306'
- mysqlLogin = 'root'
- mysqlPass = 'raspberry'
- mysqlENABLE = True
- #mysqlENABLE = False
- #-------------------------------------------------------------------
- def get_MySQL_Data(ID, Type="tool"):
- con=result = None
- con = cymysql.connect(host=mysqlHost, port=int(mysqlPort), user=mysqlLogin, passwd=mysqlPass)
- cur = con.cursor()
- cur.execute("USE werkzeugausgabe;")
- con.commit()
- if Type == "user":
- cur.execute('SELECT name FROM users WHERE uid="%s";' % ID)
- elif Type == "tool":
- cur.execute('SELECT tid,name FROM tools WHERE tid="%s";' % ID)
- con.commit()
- result = cur.fetchall()
- return result
- def update_MySQL_Data(tid, anzahl, ausleiher):
- con=result = None
- con = cymysql.connect(host=mysqlHost, port=int(mysqlPort), user=mysqlLogin, passwd=mysqlPass)
- cur = con.cursor()
- cur.execute("USE werkzeugausgabe;")
- con.commit()
- cur.execute('SELECT anzahl FROM tools WHERE tid="%s";' % tid)
- row = cur.fetchone()
- if row:
- rest_anzahl = int(row[0]) - int(anzahl)
- cur.execute('SELECT last_log FROM tools WHERE tid="%s";' % tid)
- row = cur.fetchone()
- if row:
- logid = row[0].split(";")[0]
- cur.execute('UPDATE tools SET anzahl="%s", ausleiher="%s" WHERE tid="%s";' % (rest_anzahl, ausleiher, tid))
- #log = logid + time.strftime("%d.%m.%Y %H:%M") + ausleiher + anzahl
- #cur.execute('UPDATE tools SET last_log="%s", log=CONCAT(log, "%s") WHERE tid="%s";' % (log, log, tid))
- #UPDATE tools SET log=CONCAT(log, "1;11.01.2016 19:;Simon Will;1\n") WHERE tid="Zange";
- con.commit()
- # Main process
- if __name__ == '__main__':
- #mp.log_to_stderr(logging.DEBUG)
- # Establish communication queues
- BarcodeQueue = mp.Queue()
- WSqueueIN = mp.Queue()
- WSqueueOUT = mp.Queue()
- # Start Child Processes
- BarcodeProcess = ProcessBarcode()
- WebSocketProcess = ProcessWebSocket()
- PB = mp.Process(target=BarcodeProcess.Run, args=(HID_device,BarcodeQueue))
- PW = mp.Process(target=WebSocketProcess.Run, args=(WebSocketPort,WebSocketHost,WSqueueIN,WSqueueOUT))
- PB.start()
- PW.start()
- # Endless loop of main program
- try:
- while True:
- if not WSqueueIN.empty():
- request = WSqueueIN.get()
- request = request.strip()
- returnlist = ""
- requestsplit = request.split(':')
- requestsplit.append("dummy")
- print("processing command: {}".format(command))
- command = requestsplit[0]
- value = requestsplit[1]
- if value == "dummy":
- value = "0"
- if command == "localping":
- returnlist += "localping:ok"
- elif command == "get_user":
- ID = BarcodeQueue.get()
- #verify data
- data = get_MySQL_Data(ID, Type="user")
- if not data:
- returnlist += "get_user:UNKNOWN_USER"
- else:
- returnlist += "get_user:" + str(data[0][0])
- elif command == "get_tool":
- ID = BarcodeQueue.get()
- #verify data
- data = get_MySQL_Data(ID, Type="tool")
- if not data:
- returnlist += "get_tool:UNKNOWN_TOOL"
- else:
- returnlist += "get_tool:" + str(data[0][0] + ";" +str(data[0][1]))
- elif command.find("write_database") != '-1':
- i = 1
- j = 0
- valuesplit = value.split(',')
- while i < len(valuesplit):
- toolstring = valuesplit[0].lstrip() + ";" + valuesplit[i]
- toolstringsplit = toolstring.split(';')
- update_MySQL_Data(toolstringsplit[1], toolstringsplit[2], toolstringsplit[0])
- i += 1
- if returnlist:
- WSqueueOUT.put(returnlist)
- time.sleep(0.1)
- except (KeyboardInterrupt, SystemExit):
- print("Schliesse Programm..")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement