def check_(self):
     if self.isLink==False:
         self.send(config.start_byte+ # стартовый байт
                   init_window.bin_char(config.admin_port_num)+ # преобразуем адрес получателя из десятичного в двоичный вид для передачи в кадре
                   config.get_code('err')+ # получаем код кадра err из конфигурационного файла
                   init_window.bin_char(int(self.port_num1))+ # формируем адрес отправителя
                   config.stop_byte) # стоповый байт
 def check_data_false(self):
     if self.msg[16:24]==config.get_code('data'):
           if len(config.write_data_query)>0: # если очередь сообщений на отправку не пуста
               self.send(config.write_data_query[0]) # отсылаем первое сообщение из очереди
               config.write_data_query.pop(0)
           else:
               self.send(self.msg)
 def check_set_false(self):
     if self.msg[16:24]==config.get_code('set'):
           msg1=self.msg[24:-8]
           for i in range (int((len(msg1)/88))):
               try:
                   self.ports.append(user_menu_window.reshifer(msg1[i:i+8]))
                   self.users.append(user_menu_window.reshifer(msg1[i+8:i+88]))
               except:
                   pass
           self.send(str(self.msg))
 def check_ack_true(self):
     if self.msg[16:24]==config.get_code('ack'): # если тип сообщения равен типу ack
                           print("-----------------------------------------------------------------------------------")
                           # print('подтверждение') # отладка
                           #self.emit(QtCore.SIGNAL("self.msgIn(QString)"), self.msg[8:16]+"ackk") # посылаем сигнал о приеме сообщения,
                           self.onRcvd(self.msg[8:16]+"ackk")
                           #  указывая в параметрах адрес отправителя и тип кадра(ack)
                           if len(config.write_data_query)>0: # если очередь сообщений на отправку не пуста
                               self.send(config.write_data_query[0]) # отсылаем первое сообщение из очереди
                               config.write_data_query.pop(0) # удаляем первое сообщение из очереди
Ejemplo n.º 5
0
 def _check(self): #кнопка проверки целостность соединения в кольце
     config.isLink=False
     try:
         config.admin_port2.write(
             config.start_byte+ # стартовый байт
             init_window.bin_char(config.admin_port_num)+ # преобразуем адрес получателя из десятичного в двоичный вид для передачи в кадре
             config.get_code('link')+ # получаем код кадра link из конфигурационного файла
             config.stop_byte) # стоповый байт
         #gtet_a_tet.bin_char(data_.admin_port_num)
     except: # если еще не зарегистрирован ни один пользователь
         self.listWidget.addItem('No ports connected yet')
Ejemplo n.º 6
0
    def hello(self): # timer that ticks every 10 seconds to check link
        config.isLink=False # сбрасываем флаг прихода кадра link обратно
        try:
            config.admin_port2.write(# функция формирует кадр link
                config.start_byte+ # стартовый байт
                init_window.bin_char(config.admin_port_num)+ # преобразуем адрес получателя из десятичного в двоичный вид для передачи в кадре
                config.get_code('link')+ #получаем код кадра link из конфигурационного файла
                config.stop_byte) # стоповый байт
        except: # предохраням программу от исключений(попытка записи в закрытый COM порт)
            pass

        t=threading.Timer(10.0, self.hello) # инициализируем таймер, который вызывает функцию hello через 10 секунд
        t.start()
        self.check_() # см.ниже
 def check_off_true(self):
     if self.msg[16:24]==config.get_code('off') and self.reciever_True==1:
                   self.combo.clear()
                   who_unlink=str(int(self.supposed_reciever,2)-int('00000001',2))
                   if who_unlink in config.ports_all['real_enter']:
                       config.ports_all['real_enter'] = [el for el in config.ports_all['real_enter'] if el !=  who_unlink]
                       msg_status='offline'
                   else:
                       config.ports_all['real_enter'].append(who_unlink)
                       msg_status='online'
                   QtGui.QMessageBox.critical( None,"status",
                                           "Yout status is now "+msg_status,
                                           buttons=QtGui.QMessageBox.Ok,
                                           defaultButton=QtGui.QMessageBox.Ok
                                           )
 def onSend(self):
     self.isAck = False
     self.msg = ''
     global t
     self.txtHist.append('   ' + self.txtOut.text())
     try:
         user_menu_window.msgs_all['' + str(int(self.portnum2))].append(
             '   ' + self.txtOut.text())
     except:
         user_menu_window.msgs_all['' + str(int(self.portnum2))] = [
             '   ' + self.txtOut.text()
         ]
     #if self.portnum1=='28': #or self.portnum1=='29':
     #    self.portnum1='22'
     if self.msg == '':
         bit_text = self.txtOut.text(
         )  # получаем сообщение из текстового поля
         cicle_coded_bit_text = code_decode1.Code(to_code(bit_text))
         print(cicle_coded_bit_text)
         print("sender: " + self.portnum1 + "-->" + self.portnum2)
         self.msg = str(
             config.start_byte +  # стартовый байт
             init_window.bin_char(int(self.portnum2))
             +  # преобразуем адрес получателя из десятичного в двоичный вид для передачи в кадре
             config.get_code('info')
             +  # получаем код кадра info из конфигурационного файла
             init_window.bin_char(int(self.portnum1))
             +  # преобразуем адрес отправителя из десятичного в двоичный вид для передачи в кадре
             str(init_window.bin_char(int(len(cicle_coded_bit_text) / 7)))
             +  # длина сообщения из текстового поля
             str(to_code(bit_text))
             +  # сообщение из текстового поля кодируем строкой байтов
             config.stop_byte)  # стоповый байт
     self.threadIn.send(
         self.msg
     )  # отправляем полученное сообщение в выходной порт
     self.msgQuerry.append(
         self.msg
     )  # добавляем сообщение в очередь
     self.txtOut.clear()  # очищаем текстовое поле
     t = threading.Timer(3.0, self.hello)
     t.start()
Ejemplo n.º 9
0
 def _identify_users(self): #функция оповещения пользователей о наличии и именах других пользователей
     msg=""
     j=0 # счетчик цикла
     for i in config.ports_all['real_enter']:
         # print(len(config.ports_all['real_enter'])) # добавляем в поле данных кадра номер входного порта пользователя
         msg=msg+i
         try:
             user=dialog_window.to_code(config.ports_all['real_user_name'][j]) #добавляем в информационное поле кадра имя пользователя
         except:
             pass
         j=j+1
         for i in range(10-len(user)): #длина имени в кадре 10 символов,поэтому дополняем имя пробелами до 10-ти символов
             user=user+' '
             msg=msg+user
     try: #формируем кадр set и пытаемся его отправить на выходной порт
         config.admin_port2.write(config.start_byte+ # стартовый байт
                                 init_window.bin_char(config.admin_port_num)+ # преобразуем адрес получателя из десятичного в двоичный вид для передачи в кадре
                                 config.get_code('set')+ #получаем код кадра set из конфигурационного файла
                                 msg+ # сообщение , содержащее номера портов и имена пользователей
                                 config.stop_byte) # стоповый байт
     except:
         pass
  def onRcvd(self, msg):
        type=msg[-4:]
        msg=msg[:-4]
        if type=="data":
            sender=msg[24:32]
            print("who sended :                                                 "+str(int(str(sender),2)))
            decoded_into_bits=code_decode1.Decode(msg[40:-10])
            print("decoded_into_bits : ",decoded_into_bits)
            if decoded_into_bits!=False or True:
                reshifer(str(decoded_into_bits))
                try:
                    msgs_all[''+str(int(sender))].append(unicode(reshifer(msg), encoding="UTF-8"))
                except:
                    print(reshifer(msg))
                    print (str(len(msg[40:-10]))+" vs "+msg[32:40])
                    msgs_all[''+str(int(sender))]=[unicode(reshifer(msg), encoding="UTF-8")]
                    for my in config.alpha:
                        print("my.portnum1 "+ my.portnum1+ "sender "+sender)
                        if (my.portnum2)==str(int(str(sender),2)):
                            print("msg finaly delivered :)")
                            if len(msg)>0:
                                my.txtHist.append(unicode(reshifer(msg), encoding="UTF-8"))
                                msg_ack=config.start_byte+sender+config.get_code('ack')+msg[8:16]+config.stop_byte
                                self.send (msg_ack) # посылаем сигнал о приеме сообщения,

                try:
                    for my in config.alpha:
                        print("my.portnum2"+my.portnum2)
                except:
                    print("someth_wrong                                   vvvvvvvvv           vvvvvvvvv        vvvvvv")
        if type=="ackk":
            msg1=int(str(msg),2)
            print("ack                                   recieved   ",msg1)
            for my in config.alpha:
                # print(str(int(my.portnum2)+1))
                if int(my.portnum2)==msg1:
                        my.ackRcv()
                        print("**************************************")
 def check_uplink_false(self):
     if self.msg[16:24]==config.get_code('uplink'):
           self.send(str(self.msg))
 def check_ack_false(self):
     if self.msg[16:24]==config.get_code('ack'):
          self.send(str(self.msg))
          print("-----------------------------------------------------------------------------------")
 def check_link_false(self):
     if self.msg[16:24]==config.get_code('link'):
         self.isLink=True
         self.send(str(self.msg))
 def check_link_true(self):
     if self.msg[16:24]==config.get_code('link'): # если тип сообщения равен типу Link
          self.isLink=True # выставляем флаг установления соединения
          config.main_terminal._succeed() # успешное возвращение кадра link
 def check_err_true(self):
   if self.msg[16:24]==config.get_code('err'): # если тип сообщения равен типу err
       config.main_terminal.listWidget.addItem("User "+str(int(self.msg[24:32],2))+" is unlink") # в окно администратора выводим сообщение,
Ejemplo n.º 16
0
 def _disconnect(self): # функция формирует кадр uplink
     config.admin_port2.write(config.start_byte+ # стартовый байт
                             init_window.bin_char(config.admin_port_num)+ # преобразуем адрес получателя из десятичного в двоичный вид для передачи в кадре
                             config.get_code('uplink')+ # получаем код кадра uplink из конфигурационного файла
                             config.stop_byte) # стоповый байт
 def _unlink(self):  # функция формирования кадра off
     msg = str(config.start_byte +
               init_window.bin_char(int(self.portnum1) + 1) +
               config.get_code('off') + config.stop_byte)
     self.threadIn.send(msg)
 def check_off_false(self):
     if self.msg[16:24]==config.get_code('off'):
           self.combo.clear()
           self.combo.addItems(config.ports_all['real_enter'])
           self.send(str(self.msg))