Esempio n. 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
Esempio n. 2
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)
Esempio n. 3
0
def openM():
    while (True):
        data = client.sendNrecv(State.name() + ' : open')
        if (int(data) > 0):
            State.stateChange()
            break
        gpio.time.sleep(0.5)
Esempio n. 4
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)
Esempio n. 5
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
Esempio n. 6
0
def active(value):
    while (True):
        data = client.sendNrecv(State.name() + ' : active = ' + value)
        if (int(data) > 0):
            break
        gpio.time.sleep(0.5)
Esempio n. 7
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()