Эх сурвалжийг харах

在read前添加sleep动作;处理FC指令。

JeffWang 2 жил өмнө
parent
commit
6e1bd0836a

+ 1 - 1
Python/baseSerail.py

@@ -97,7 +97,7 @@ class BaseSerial():
                     d = self.ser.read(1)
                     bys = bys + d
                 # 每当缓冲区为0,等10ms,循环3次确保机器响应完全;
-                time.sleep(0.01)
+                time.sleep(0.015)
             
             # 再判断是否读取到指定大小(size!=0);
             if bys.__len__() < size:

+ 24 - 8
Python/mokaSerail.py

@@ -81,7 +81,7 @@ class MokaParse():
         # 是否是多参数命令;(同一个Command,有多个含义的参数)
         self.isMultipleParams = False
         # 正确执行后的结果值,bytearray格式的二维数组;
-        self.successData = []
+        self.successData = b''
 
     # 生成命令;
     '''
@@ -183,16 +183,23 @@ class MokaParse():
             return False
         
         if self.Command[0] == 0xFC:
-            pass
+            if FEFlag: #返回超过255
+                if package[3] != self.Command[0] and package[4] - 1 != self.Command[1]:
+                    return False
+                self.successData = package[6 + self.SubCommand.__len__():-2]
+            else:
+                if package[2] != self.Command[0] and package[3] - 1 != self.Command[1]:
+                    return False
+                self.successData = package[4 + self.SubCommand.__len__():-2]
         else:
             if FEFlag: #返回超过255
                 if package[3] - 1 != self.Command[0]:
                     return False
-                self.successData.append(package[5:-2])
+                self.successData = package[5 + self.SubCommand.__len__():-2]
             else:
                 if package[2] - 1 != self.Command[0]:
                     return False
-                self.successData.append(package[3:-2])
+                self.successData = package[3 + self.SubCommand.__len__():-2]
         
         return True
 
@@ -231,7 +238,7 @@ class MokaParse():
             if data.__len__() > 5:
                 result = self.parseSecondSection(retCode,data[5:])
 
-        print('successData:', binascii.b2a_hex(bytearray(self.Command)), self.successData)
+        print('parser result = %s, cmdType = %s, data=%s' % (str(result), self.cmdType, binascii.b2a_hex(self.successData)))
         return result
 
 
@@ -258,10 +265,11 @@ class MokaSerial(BaseSerial):
         return self.read()
     
     '''协议模式发送命令'''
-    def sendcmdEx(self, cmdType: CMDType, head: int, command: list[int], subCommand: list[int] = [], data: bytearray = b'', FEFlag: Boolean = False, returnParam: Boolean = False):
+    def sendcmdEx(self, cmdType: CMDType, head: int, command: list[int], subCommand: list[int] = [], data: bytearray = b'', FEFlag: Boolean = False, returnParam: Boolean = False, timeSlepp=0.01):
         cmd = MokaParse()
         package = cmd.parseCommand(cmdType, head, command, subCommand, data, returnParam, FEFlag)
         if self.write(package):
+            time.sleep(timeSlepp)   # 必须项:返回2段时,有些机器第二段返回间隔较长;
             package = self.read()
             return cmd.parseResult(package)
 
@@ -379,8 +387,8 @@ if __name__ == "__main__":
     print("gamma初始化")
     tv.initGamma()
 
-    #print("读取 mac")
-    #data = tv.sendcmdEx(CMDType.Read, 0xAA, [0xBE], [0x00])
+    print("读取 mac")
+    data = tv.sendcmdEx(CMDType.Read, 0xAA, [0xBE], [0x00])
 
     print("读取 wifimac")
     data = tv.sendcmdEx(CMDType.Read, 0xAA, [0xBE], [0x15])
@@ -388,14 +396,22 @@ if __name__ == "__main__":
     print("读取 clientType")
     data = tv.sendcmdEx(CMDType.Read, 0xAA, [0x8C], [0x00])
 
+    print("Check PEK")
+    data = tv.sendcmdEx(CMDType.Read, 0xAA, [0xFC, 0x01], [0x01], timeSlepp=0.2)
+
+    print("设置内置pattern")
     for item in [[0,0,0],[26,26,26],[51,51,51],[76,76,76],[102,102,102],[127,127,127],[153,153,153],[178,178,178],[204,204,204],[229,229,229],[255,255,255],[0,0,255],[255,0,0]]:
         if item.__len__() == 3:
             tv.send_parttern([int(item[0]), int(item[1]), int(item[2])])
             time.sleep(0.5)
 
+    print("生成gamma")
     tv.gen_gzip('gamma.ini', 'gamma_cut.gzip')
+
+    print("写入gamma")
     tv.send_gamma('gamma_cut.gzip')
 
+    print("激活gamma")
     tv.send_gamma_active('gamma.ini')
 
     print("关闭内置pattern")