def backM(): #주차할 경우, 빼내올 경우 finsh = False try: while (True): #대기 주차장이 올라갈때 까지 data1 = client.sendNrecv(State.name() + ' : up') if (int(data1) > 0): print((State.park_number() % 10), '층 입니다') gpio.time.sleep(1) break gpio.time.sleep(1) liner.liner_start() while (True): #리니어 모터가 끝까지 나아갈 떄까지 2초 간격 liner.setMoterControl(99, 1) gpio.time.sleep(12) data2 = client.sendNrecv(State.name() + ' : set') if (int(data2) > 0): liner.setMoterControl(0, 5) gpio.time.sleep(1) break while (True): #서보 모터 위로 servo.setMoterControl(1) break i = 0 #변수 : 줄어들 시간 while (True): #리니어 모터가 줄어들 떄까지 2초 간격 liner.setMoterControl(99, 2) if (i > 5): print(data2, '자동차 빼기 완료') break i = i + 1 liner.liner_stop() active('out') while (True): #대기 주차장이 내려갈떄 까지 data3 = client.sendNrecv(State.name() + ' : down') if (int(data3) > 0): print('주차 빼기 과정 완료') gpio.time.sleep(0.5) break gpio.time.sleep(1) finsh = True except Exception as e: print('예외가 발생했습니다.', e) return finsh
def backM(): global car_type #주차할 경우, 빼내올 경우 finsh = False try: while(True): #대기 주차장이 올라갈때 까지 data1 = client.sendNrecv(name+' : up') if(int(data1) > 0): print((park_number%10),'층 입니다') time.sleep(1) break while(True): #리니어 모터가 끝까지 나아갈 떄까지 2초 간격 liner.setMoterControl(99,1) time.sleep(12) data2 = client.sendNrecv(name+' : set') if(int(data2) > 0): liner.setMoterControl(0,5) time.sleep(1) break while(True): #서보 모터 위로 gpio.time.sleep(0.5) servo.setMoterControl(1) gpio.time.sleep(2) break i = 0 #변수 : 줄어들 시간 while(True): #리니어 모터가 줄어들 떄까지 2초 간격 liner.setMoterControl(99,2) if(i>5): print(data2,'자동차 빼기 완료') break i = i +1 while(True): #대기 주차장이 내려갈떄 까지 data3 = client.sendNrecv(name+' : down') if(int(data3) > 0): print('주차 빼기 완료') break finsh = True except Exception as e: print('예외가 발생했습니다.', e) return finsh
def openM(): while (True): data = client.sendNrecv(State.name() + ' : open') if (int(data) > 0): State.stateChange() break gpio.time.sleep(0.5)
def arrive(number, value): while (True): data = client.sendNrecv(State.name() + ' : arrive ' + value + ' = ' + number) if (int(data) > 0): break gpio.time.sleep(0.5)
def onDown(data): global myPark, sing sing = -1 myPark.setState(pEnum.down) #limit.setting_interrupt() #app2.setting_interrupt() limit.data_inerrupt = 0 #app2.data_inerrupt = 0 if (myPark.floor() != 1): while (True): act.setActControl(95, 2) #time.sleep(0.2) delay_time(0.2) if (limit.data_inerrupt == 31 or limit.data_inerrupt == 35 or limit.data_inerrupt == 29 or limit.data_inerrupt == 21): print(limit.data_inerrupt, 'is') act.setActControl(0, 3) #time.sleep(0.5) delay_time(0.5) myPark.setFloor(1) break else: myPark.setFloor(1) data = client.sendNrecv(myPark.name() + ' : run,' + 'stop') if (int(data) > 0): print('onDown 종료') #limit.remove_interrput() #app2.remove_interrput() sing = 0 delay_time(0.5)
def openM(): global myPark while (True): data = client.sendNrecv(myPark.name() + ' : open') if (int(data) > 0): myPark.setState(pEnum.open) break time.sleep(0.5)
def openM(): global state while(True): data = client.sendNrecv(name+' : open') if(int(data) > 0): state. = state + 1 break time.sleep(0.5)
def checkM(): global state while(True): data = client.sendNrecv(name+' : check') if(data.find('Ischecking') < 0): state = state + 1 break time.sleep(0.5)
def checkM(): while (True): data = client.sendNrecv(State.name() + ' : check') if (data.find('Ischecking') < 0): State.setCarNumber(data) State.stateChange() break gpio.time.sleep(0.5)
def onM(): global myPark data = app.read_approach() data = client.sendNrecv(myPark.name() + ' : on=' + str(data[0]) + ',' + str(data[1]) + ',' + str(data[2]) + ',' + str(data[3]) + ',' + str(data[4]) + ',' + str(data[5])) if (data != ''): myPark.setState(pEnum.on)
def onRun(): #올라가는지 확인 #올라가면 다시 내려갈떄 까지 대기 #내려가라는 신호 받으면 내려감 global myPark, sing if (sing == 0): data = client.sendNrecv(myPark.name() + ' : run :' + 'up') if (int(data) > 200): arg1 = int(data) - 200 t = threading.Thread(target=onUp, args={arg1}) t.start() return elif (sing == 1): data2 = client.sendNrecv(myPark.name() + ' : run : ' + 'down') if (int(data2) > 0): arg1 = int(data2) t = threading.Thread(target=onDown, args={int(data2)}) t.start() return
def onM(): _type = False arinit() while (True): data = client.sendNrecv(State.name() + ' : getOsend') if (int(data) > 0): State.setCarType(1) break else: jodo_data = jodo.jodo_data_d0() if (jodo_data == 1): print('자동차 탑재 완료') servo.setMoterControl(1) gpio.time.sleep(2) break gpio.time.sleep(1) if (State.car_type() == 0): while (True): data = client.sendNrecv(State.name() + ' : on1') if (int(data) > 0): State.stateChange() break gpio.time.sleep(0.5) elif (State.car_type() == 1): while (True): data = client.sendNrecv(State.name() + ' : on2') if (data.find('IsOn') < 0): State.stateChange(2) State.setCarNumber(data) print("자동차 뺴기") break else: break
def onM(): global state, car_type, car_number _type = False while(True): data = client.sendNrecv(name+' : getOsend') if(int(data) > 0): car_type = 1 break else: jodo_data = gpio.GPIO.input(jodo.pin_jodo) if(jodo_data == 1): print('자동차 탑재 완료') servo.setMoterControl(1) time.sleep(2) break time.sleep(1) if(car_type == 0): while(True): data = client.sendNrecv(name+' : on1') if(int(data) > 0): state = state + 1 break time.sleep(0.5) elif(car_type == 1): while(True): data = client.sendNrecv(name+' : on2') if(data.find('IsOn') < 0): state = state + 2 car_number = data print("자동차 뺴기") break
def onUp(data): global myPark, sing sing = -1 myPark.setState(pEnum.up) #limit.setting_interrupt() #app2.setting_interrupt() limit.data_inerrupt = 0 app2.data_inerrupt = 0 if (data != 1): while (True): act.setActControl(95, 1) #time.sleep(0.2) delay_time(0.2) if (data == 2): if (app2.data_inerrupt == 22): print(app2.data_inerrupt, 'ars') act.setActControl(0, 3) #time.sleep(0.5) delay_time(0.5) app2.data_inerrupt = 0 myPark.setFloor(2) break elif (data == 3): if (limit.data_inerrupt == 19 or limit.data_inerrupt == 23 or limit.data_inerrupt == 33 or limit.data_inerrupt == 37): act.setActControl(0, 3) #time.sleep(0.5) delay_time(0.5) limit.data_inerrupt = 0 myPark.setFloor(3) break else: myPark.setFloor(1) data = client.sendNrecv(myPark.name() + ' : run,' + 'stop') if (int(data) > 0): print('onUp 종료') #limit.remove_interrput() delay_time(0.5) #app2.remove_interrput() sing = 1
def active(value): while (True): data = client.sendNrecv(State.name() + ' : active = ' + value) if (int(data) > 0): break gpio.time.sleep(0.5)
def runM(): global handle_data try: if (State.car_type() == 0): while (True): data = client.sendNrecv(State.name() + ' : run') if (int(data) > 0): State.setParkNumber(int(data)) break gpio.time.sleep(0.5) else: State.setParkNumber(int(State.car_number())) #interrup gpio.GPIO.add_event_detect(line.pin_otl, gpio.GPIO.FALLING, callback=handler) gpio.GPIO.add_event_detect(line.pin_otr, gpio.GPIO.FALLING, callback=handler) print("start parking~~") while (True): l, c, r = line.line_data() #forward if (l == 1 and c == 0 and r == 1): #print("go1") moter.setMoterControl(State.speed(), 1) #right elif (l == 1 and r == 0): #print("go2") moter.setMoterControl(State.speed(), 4) #left elif (l == 0 and r == 1): #print("go3") moter.setMoterControl(State.speed(), 3) moter.setMoterControl(0, 5) if (l == 0 and c == 0 and r == 0): print("go4") #park_number에 10을 나누어 1번 주차장인지 2번 주차장인지 판단 _park_number = int(State.park_number() / 10) - 1 if (_park_number > handle_data): handle_data = handle_data + 1 moter.setMoterControl(State.speed(), 1) gpio.time.sleep(0.6) print(_park_number, "번 라인") else: moter.setMoterControl(0, 5) gpio.GPIO.remove_event_detect(line.pin_otl) gpio.GPIO.remove_event_detect(line.pin_otr) gpio.time.sleep(2) print('인터럽트 해제 완료') #빼내오는차 넣는차 검출 break _data = True if (State.car_type() == 0): arrive(str(State.park_number()), 'in') _data = goM() elif (State.car_type() == 1): arrive(str(State.park_number()), 'out') _data = backM() State.stateChange() State.setCarType(0) except KeyboardInterrupt: ending() sys.exit()
def runM(): global state try: print("license number on") gpio.time.sleep(2); print("license number ok") print("send server : car on") gpio.time.sleep(1); print("recv server : go 4num") print("start parking~~") #interrup gpio.GPIO.add_event_detect(line.pin_otc, gpio.GPIO.FALLING, callback = handler) gpio.GPIO.add_event_detect(line.pin_otl, gpio.GPIO.FALLING, callback = handler) gpio.GPIO.add_event_detect(line.pin_otr, gpio.GPIO.FALLING, callback = handler) while(True): l,c,r = line.line_data() moter.setMoterControl(0, 5) #전부다 들어왔을떄 if(c == 0 and l == 0 and r == 0): global interrupData gpio.GPIO.remove_event_detect(line.pin_otc) gpio.GPIO.remove_event_detect(line.pin_otl) gpio.GPIO.remove_event_detect(line.pin_otr) #지정 주차에 따라 오른쪽 왼쪽 앞쪽 판단 interrupt if(runNum%2 == 1 and runNum == interrupData): print('번호 : ',runNum, ' rignt') gpio.GPIO.add_event_detect(line.pin_otc, gpio.GPIO.FALLING, callback = handler) while(True): moter.setMoterControl(speed, 4) moter.setMoterControl(0, 5) l,c,r = line.line_data() if(l == 1 and c == 0 and r == 1): gpio.GPIO.remove_event_detect(line.pin_otc) break elif(runNum%2 == 0 and runNum == interrupData): print('번호 : ',runNum, ' left') gpio.GPIO.add_event_detect(line.pin_otc, gpio.GPIO.FALLING, callback = handler) while(True): moter.setMoterControl(speed, 3) moter.setMoterControl(0, 5) l,c,r = line.line_data() if(l == 1 and c == 0 and r == 1): gpio.GPIO.remove_event_detect(line.pin_otc) break else: print('번호 : ',runNum, ' else') gpio.GPIO.add_event_detect(line.pin_otl, gpio.GPIO.RISING, callback = handler) gpio.GPIO.add_event_detect(line.pin_otr, gpio.GPIO.RISING, callback = handler) while(True): moter.setMoterControl(speed, 1) moter.setMoterControl(0, 5) l,c,r = line.line_data() if(l == 1 and r == 1): gpio.GPIO.remove_event_detect(line.pin_otl) gpio.GPIO.remove_event_detect(line.pin_otr) interrupData = interrupData + 2 break #forward elif(l == 1 and c == 0 and r == 1): moter.setMoterControl(speed, 1) #right elif(l == 1 and r == 0): moter.setMoterControl(speed, 4) #left elif(l == 0 and r == 1): moter.setMoterControl(speed, 3) elif(l == 1 and c == 1 and r== 1): data = client.sendNrecv(name+' : arrive='+str(runNum)) state = state + 1 break except KeyboardInterrupt: ending() sys.exit()