Пример #1
0
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
Пример #2
0
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
Пример #3
0
def openM():
    while (True):
        data = client.sendNrecv(State.name() + ' : open')
        if (int(data) > 0):
            State.stateChange()
            break
        gpio.time.sleep(0.5)
Пример #4
0
def arrive(number, value):
    while (True):
        data = client.sendNrecv(State.name() + ' : arrive ' + value + ' = ' +
                                number)
        if (int(data) > 0):
            break
        gpio.time.sleep(0.5)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
def openM():
    global state
    while(True):
        data = client.sendNrecv(name+' : open')
        if(int(data) > 0):
            state. = state + 1
            break
        time.sleep(0.5)
Пример #8
0
def checkM():
    global state
    while(True):
        data = client.sendNrecv(name+' : check')
        if(data.find('Ischecking') < 0):
            state = state + 1
            break
        time.sleep(0.5)
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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
Пример #12
0
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
Пример #13
0
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
Пример #14
0
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
Пример #15
0
def active(value):
    while (True):
        data = client.sendNrecv(State.name() + ' : active = ' + value)
        if (int(data) > 0):
            break
        gpio.time.sleep(0.5)
Пример #16
0
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()
Пример #17
0
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()