Example #1
0
class CNS(Control_data):
    '''
    - Shared_mem
        : shared_mem[0] - 해당 에이전트의 Main 메모리가 보내짐.

        : self.all_mem[0] : 1번 에이전트의 메모리
        : self.all_mem[0][0] : 1번 에이전트의 메모리 중 Main 메모리 <- 현재 수준에 전달된 메모리
        : self.all_mem[0][0]['ZSGNOR1'] : 1번 에이전트의 메모리 중 Main 메모리에서 'ZSG..'의 정보

        : 현재 클레스에서 값을 접근하려면
        ex) self.CNS_condition['ZSGNOR1']
    '''
    def __init__(self, mem, ip, port, s_para, t_para):
        Control_data.__init__(self, s_para, t_para)
        self.CNS_condition = mem
        self.cns_udp = CNSUDP(ip=ip, port=port)

    def cns_run(self):
        '''
        cns에 동작 신호를 보내고 1step 진행이 완료되면 0을 반환
        :return: 0 : 1Step 진행 완료
        '''
        old_line = len(self.CNS_condition['KFZRUN']['L'])
        self.cns_udp._send_control_signal(['KFZRUN'], [3])
        while True:
            new_line = len(self.CNS_condition['KFZRUN']['L'])
            if self.CNS_condition['KFZRUN'][
                    'V'] == 4:  # Run하고 1초 대기후 Freeze한 상태
                if old_line != new_line:
                    break
            time.sleep(1)
        return 0

    def cns_initial(self):
        '''
        cns에 초기화 동작 신호를 보내고 완료되면 0을 반환
        :return: 0 : CNS 초기화 완료
        '''
        self.cns_udp._send_control_signal(['KFZRUN'], [5])
        while True:
            if self.CNS_condition['KCNTOMS']['V'] == 0 and self.CNS_condition[
                    'KFZRUN']['V'] == 6:  # Initial이 완료된 상태
                break
            time.sleep(1)
        return 0

    def cns_mal_fun(self, mal_nub, mal_opt, mal_time):
        '''
        cns에 malfunction 신호를 보냄
        :param mal_nub: malfunction nuber
        :param mal_opt: malfunction option
        :param mal_time: malfunction 발생 time
        :return: -
        '''
        return self.cns_udp._send_malfunction_signal(mal_nub, mal_opt,
                                                     mal_time)

    def cns_control(self, para, val):
        return self.cns_udp._send_control_signal(para=para, val=val)
Example #2
0
 def __init__(self, mem, ip, port, s_para, t_para):
     Control_data.__init__(self, s_para, t_para)
     self.CNS_condition = mem
     self.cns_udp = CNSUDP(ip=ip, port=port)