node.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import time
  2. import asyncio
  3. import async_communication as ASC
  4. import ExportIO as EIO
  5. import google.protobuf.text_format as tf
  6. import threading
  7. import DatabaseSearchPickCmd as DBS
  8. import message_pb2 as message
  9. import queue
  10. #db参数
  11. db_parameter={"dbname":"ct_project","ip":"192.168.1.233","port":3306,"user":"zx","password":"zx123456"}
  12. rabbitmq_parameter={"ip":"192.168.1.233","port":5672,"user":"zx","password":"zx123456"}
  13. #[单元号,出口号,单片机ip,port]
  14. mcpu_paramters=[[1,1, "192.168.1.130", 40004],
  15. [2,2, "192.168.1.131", 40004],
  16. [2,3, "192.168.1.132", 40004],
  17. [2,4, "192.168.1.133", 40004],
  18. [3,5,"192.168.1.134",40004],
  19. [3,6,"192.168.1.135",40004]
  20. ]
  21. # mcpu_paramters=[[2,3,"192.168.1.132",40004]]
  22. g_rabbitmq=ASC.RabbitAsyncCommunicator(rabbitmq_parameter["ip"],rabbitmq_parameter["port"],
  23. rabbitmq_parameter['user'],rabbitmq_parameter['password'])
  24. g_db=DBS.DBSeacherPickCmd(db_parameter["ip"],db_parameter["port"],db_parameter["dbname"],
  25. db_parameter["user"],db_parameter["password"])
  26. g_exports={}
  27. def user_leave_callback(id):
  28. print("出口:%d 用户已经离开,删除出口取车指令"%(id))
  29. g_db.delete_cmd(id)
  30. if __name__=="__main__":
  31. for parameter in mcpu_paramters:
  32. id=parameter[1]
  33. if not g_exports.get(id)==None:
  34. raise("出口单片机id重复")
  35. g_exports[id]=EIO.ExportIO(parameter,rabbitmq_parameter)
  36. g_exports[id].SetUserLeaveCallback(user_leave_callback)
  37. for _,export in g_exports.items():
  38. export.start()
  39. while True:
  40. pickcmds=g_db.search_pickcmd()
  41. # print(pickcmds)
  42. if len(pickcmds)>0:
  43. for cmd in pickcmds:
  44. table=message.pick_table()
  45. table.car_number=cmd[0]
  46. table.primary_key=cmd[1]
  47. table.unit_id=cmd[2]
  48. table.queue_id=cmd[3]
  49. table.export_id=cmd[8]
  50. # print(table)
  51. if not table.export_id==None:
  52. export=g_exports.get(table.export_id)
  53. if not export==None:
  54. # if export.export_idle()==False:
  55. export.open_door(table)
  56. time.sleep(1)
  57. for _,export in g_exports.items():
  58. export.join()