dtelenkov 4 zile în urmă
părinte
comite
0c587eb319
1 a modificat fișierele cu 24 adăugiri și 26 ștergeri
  1. 24 26
      greenstar_python/client.py

+ 24 - 26
greenstar_python/client.py

@@ -17,9 +17,6 @@ REQ_ID = {'getSpState':'7000000', 'getPpRegs':'3000000', 'getPp':'4000000',
 
 time_request = TimeIt()
 time_connect = TimeIt()
-error_no_answer = 0
-erorr_brackets = 0
-error_connection = 0
 
 class SBS_client:
 
@@ -30,6 +27,10 @@ class SBS_client:
                     + str(port) + '\r\nContent-Length: '
         self.addr = (ip, int(port))
 
+        self.error_no_answer = 0
+        self.erorr_brackets = 0
+        self.error_connection = 0
+
 
     def send_recv(self, data):
         data = str.encode(data)
@@ -47,14 +48,14 @@ class SBS_client:
             except:
                 break
         if len(rec) == 0:
-            error_no_answer += 1
+            self.error_no_answer += 1
 
         # Проверяем ответ на наличие открывающих и закрывающих скобок
         result_str = rec.decode()
         open_brackets = result_str.count('{')
         close_brackets = result_str.count('}')
         if (open_brackets != close_brackets) or open_brackets == 0:
-            erorr_brackets += 1
+            self.erorr_brackets += 1
 
         if self.DEBUG:
             print(Fore.YELLOW + 'Received answer:')    
@@ -63,28 +64,28 @@ class SBS_client:
 
     @timeit(time_request)
     def http_request(self, method, params):
-        # foo = '{"jsonrpc":"2.0","method":"' + method + '","params":' + \
-        #         params + ',"id":' + REQ_ID[method] + '}'
-        # request = self.HEAD + str(len(foo)) + '\r\n\r\n' + foo
+        foo = '{"jsonrpc":"2.0","method":"' + method + '","params":' + \
+                params + ',"id":' + REQ_ID[method] + '}'
+        request = self.HEAD + str(len(foo)) + '\r\n\r\n' + foo
 
-        # if self.DEBUG:
-        #     print(Fore.YELLOW + 'Send HTTP request:')
-        #     print(Fore.BLUE + request)
+        if self.DEBUG:
+            print(Fore.YELLOW + 'Send HTTP request:')
+            print(Fore.BLUE + request)
 
         if self.connect():
-            # self.send_recv(request)
+            self.send_recv(request)
             self.close()
 
 
     @timeit(time_connect)
     def connect(self):
         self.tcp_socket = socket(AF_INET, SOCK_STREAM)
-        self.tcp_socket.settimeout(15.0)
+        self.tcp_socket.settimeout(100.0)
         try:
             self.tcp_socket.connect(self.addr)
         except:
             print("Ошибка соединения")
-            error_connection += 1
+            self.error_connection += 1
             return False
         return True
 
@@ -158,15 +159,11 @@ class SBS_client:
 
     # Запрос спектра
     def get_spectrum_data(self):
-        # while True:
-
-            # if self.connect():
-            #     self.close()
-        for i in range(20):
+        while True:
             self.http_request('getSp', 'null')
-            time.sleep(0.1)
-            # self.http_request('getMon', 'null')
-            # time.sleep(0.05)
+            time.sleep(0.05)
+            self.http_request('getMon', 'null')
+            time.sleep(0.05)
             self.info()
 
 
@@ -174,10 +171,11 @@ class SBS_client:
         print("\033[H\033[J", end="")    
         print("Время соединения  :", round(time_connect.cur_time, 5), round(time_connect.max_time, 5))
         print("Время запроса-ответа:", round(time_request.cur_time, 5), round(time_request.max_time, 5))
-        print("Ошибки. Скобки:", erorr_brackets)
-        print("Ошибки. Пустой ответ:", error_no_answer)
-        print("Ошибки. Таймаут соединения:", error_connection)
-        
+        print("Ошибки. Скобки:", self.erorr_brackets)
+        print("Ошибки. Пустой ответ:", self.error_no_answer)
+        print("Ошибки. Таймаут соединения:", self.error_connection)
+        if time_connect.max_time > 5.0:
+            raise ValueError("Alarm")
 
 
 # Тесты