|
@@ -6,6 +6,7 @@ import zipfile
|
|
|
import gzip
|
|
|
import autoGamma
|
|
|
from mokaSerail import MokaSerial
|
|
|
+from caSerail import CASerail
|
|
|
|
|
|
def readPartern():
|
|
|
f = open(u"cfg.txt") # 返回一个文件对象
|
|
@@ -35,30 +36,6 @@ def readPartern():
|
|
|
return TV_COM, CA_COM, PAR_LIST
|
|
|
|
|
|
|
|
|
-def get_ca_data(data):
|
|
|
- # 正则表达式;
|
|
|
- # OK00,P1 3716;3956;.0091\r
|
|
|
- p = re.compile(r"(\D*)(\d+),P1 (.*);(.*);(.*)", re.DOTALL)
|
|
|
- mo = p.search(data)
|
|
|
- if mo is None:
|
|
|
- print("无匹配正则")
|
|
|
- pw = re.compile(r"(\D*)(\d+)", re.DOTALL)
|
|
|
- mo = pw.search(data)
|
|
|
- if mo is None:
|
|
|
- # print("短匹配失败")
|
|
|
- return None, None, None, None, None
|
|
|
- else:
|
|
|
- return mo.group(1), mo.group(2), None, None, None
|
|
|
- else:
|
|
|
- return mo.group(1), mo.group(2), mo.group(3), mo.group(4), mo.group(5)
|
|
|
-
|
|
|
-
|
|
|
-def xyY_to_XYZ(x, y, Y):
|
|
|
- X = x * Y / y
|
|
|
- Z = (1 - x - y) * Y / y
|
|
|
- return X, Y, Z
|
|
|
-
|
|
|
-
|
|
|
def gen_gzip(gm_file, save_file):
|
|
|
# 压缩gamma.ini成zip,再写入到TV?? 还是直接写入gamma.ini到TV ??
|
|
|
fin = open(gm_file, 'rb')
|
|
@@ -84,6 +61,7 @@ def gen_gzip(gm_file, save_file):
|
|
|
fg.write(data_save)
|
|
|
fg.close()
|
|
|
|
|
|
+
|
|
|
def test_all():
|
|
|
# 读取配置文件;
|
|
|
TV_COM, CA_COM, PAR_LIST = readPartern()
|
|
@@ -93,29 +71,29 @@ def test_all():
|
|
|
print("11 pattern", Index11)
|
|
|
|
|
|
# 打开CA310
|
|
|
- ca_port = MokaSerial()
|
|
|
+ ca_port = CASerail()
|
|
|
ca_port.open(CA_COM, 19200, 7, 'E', 2)
|
|
|
# 开启CA310
|
|
|
- data = ca_port.sendcmd([0x43, 0x4F, 0x4D, 0x2C, 0x31, 0x0D])
|
|
|
+ data = ca_port.startCommunication()
|
|
|
print("CA310 开启", data)
|
|
|
|
|
|
- if False:
|
|
|
- data = ca_port.sendcmd([0x4D, 0x44, 0x53, 0x2C, 0x30, 0x0D])
|
|
|
+ if True:
|
|
|
print("CA310 显示模式", data)
|
|
|
+ data = ca_port.set_XYZ_Display()
|
|
|
|
|
|
- data = ca_port.sendcmd([0x53, 0x43, 0x53, 0x2C, 0x33, 0x0D])
|
|
|
print("CA310 同步模式", data)
|
|
|
-
|
|
|
- data = ca_port.sendcmd([0x46, 0x53, 0x43, 0x2C, 0x32, 0x0D])
|
|
|
+ data = ca_port.setSynchMode(3)
|
|
|
+
|
|
|
print("CA310 测量速度", data)
|
|
|
+ data = ca_port.setMeasureSpeed(2)
|
|
|
+
|
|
|
time.sleep(0.5)
|
|
|
-
|
|
|
- data = ca_port.sendcmd([0x5A, 0x52, 0x43, 0x0D])
|
|
|
print("CA310 零校准", data)
|
|
|
-
|
|
|
- data = ca_port.sendcmd([0x4D, 0x43, 0x48, 0x2C, 0x30, 0x31, 0x0D])
|
|
|
- print("CA310 锁定键控", data)
|
|
|
-
|
|
|
+ data = ca_port.setZeroCalibration()
|
|
|
+
|
|
|
+ print("CA310 设置测试通道", data)
|
|
|
+ data = ca_port.setChannel('01')
|
|
|
+
|
|
|
# 打开TV串口;
|
|
|
tv_port = MokaSerial()
|
|
|
tv_port.open(TV_COM)
|
|
@@ -138,42 +116,23 @@ def test_all():
|
|
|
data = tv_port.sendcmd([0xAA, 0x07, 0x9F, 0x09, 0x01, 0xD2, 0x5A])
|
|
|
|
|
|
XYZ_ALL = []
|
|
|
- xyY_ALL = []
|
|
|
print("内置pattern切换与CA310读取")
|
|
|
for item in PAR_LIST:
|
|
|
# print("item",item)
|
|
|
if item.__len__() == 3:
|
|
|
tv_port.send_parttern([int(item[0]), int(item[1]), int(item[2])])
|
|
|
- time.sleep(1)
|
|
|
- data = ca_port.sendcmd([0x4D, 0x45, 0x53, 0x0D])
|
|
|
- print("CA310数据读取",data)
|
|
|
- # bytes转成字符串;
|
|
|
- data = data.decode('utf-8')
|
|
|
- data = data.replace('\r', '')
|
|
|
- r1, r2, d1, d2, d3 = get_ca_data(data)
|
|
|
- # print("CA310数据:", d1, d2, d3)
|
|
|
- # X, Y, Z = xyY_to_XYZ(float(d1) / 10000, float(d2) / 10000, float(d3))
|
|
|
-
|
|
|
- print("CA410数据:", d1, d2, d3)
|
|
|
- X, Y, Z = xyY_to_XYZ(float(d1) / 1000, float(d2) / 1000, float(d3))
|
|
|
+ time.sleep(0.5)
|
|
|
+ X, Y, Z = ca_port.readDisplay()
|
|
|
+ print("CA410数据:", X, Y, Z)
|
|
|
|
|
|
print("XYZ", X, Y, Z)
|
|
|
XYZ_ALL.append([X, Y, Z])
|
|
|
- xyY_ALL.append([d1, d2, d3])
|
|
|
|
|
|
print("关闭内置pattern")
|
|
|
data = tv_port.sendcmd([0xAA, 0x06, 0x27, 0x00, 0x2B, 0xCC])
|
|
|
|
|
|
- xyY_ALL = xyY_ALL[::-1]
|
|
|
- # for n in range(0, 11):
|
|
|
- # xyY_ALL[n] = xyY_ALL[n].reverse()
|
|
|
-
|
|
|
- print(f"原始测量的xyY_11 is : \n")
|
|
|
- for i in range(0, 14):
|
|
|
- print(f"0.{xyY_ALL[i][0]} 0.{xyY_ALL[i][1]} {xyY_ALL[i][2]}")
|
|
|
-
|
|
|
# 关闭CA310
|
|
|
- data = ca_port.sendcmd([0x43, 0x4F, 0x4D, 0x2C, 0x30, 0x0D])
|
|
|
+ data = ca_port.endCommunication()
|
|
|
|
|
|
# 调用gamma算法生成gamma.ini
|
|
|
factory = autoGamma.FiretvFactory()
|
|
@@ -202,28 +161,28 @@ def get_test_result():
|
|
|
print("11 pattern", Index11)
|
|
|
|
|
|
# 打开CA310
|
|
|
- ca_port = MokaSerial()
|
|
|
+ ca_port = CASerail()
|
|
|
ca_port.open(CA_COM, 19200, 7, 'E', 2)
|
|
|
# 开启CA310
|
|
|
- data = ca_port.sendcmd([0x43, 0x4F, 0x4D, 0x2C, 0x31, 0x0D])
|
|
|
+ data = ca_port.startCommunication()
|
|
|
print("CA310 开启", data)
|
|
|
|
|
|
if True:
|
|
|
- data = ca_port.sendcmd([0x4D, 0x44, 0x53, 0x2C, 0x30, 0x0D])
|
|
|
print("CA310 显示模式", data)
|
|
|
+ data = ca_port.set_XYZ_Display()
|
|
|
|
|
|
- data = ca_port.sendcmd([0x53, 0x43, 0x53, 0x2C, 0x33, 0x0D])
|
|
|
print("CA310 同步模式", data)
|
|
|
-
|
|
|
- data = ca_port.sendcmd([0x46, 0x53, 0x43, 0x2C, 0x32, 0x0D])
|
|
|
+ data = ca_port.setSynchMode(3)
|
|
|
+
|
|
|
print("CA310 测量速度", data)
|
|
|
- time.sleep(1)
|
|
|
-
|
|
|
- data = ca_port.sendcmd([0x5A, 0x52, 0x43, 0x0D])
|
|
|
+ data = ca_port.setMeasureSpeed(2)
|
|
|
+
|
|
|
+ time.sleep(0.5)
|
|
|
print("CA310 零校准", data)
|
|
|
-
|
|
|
- data = ca_port.sendcmd([0x4D, 0x43, 0x48, 0x2C, 0x30, 0x31, 0x0D])
|
|
|
- print("CA310 锁定键控", data)
|
|
|
+ data = ca_port.setZeroCalibration()
|
|
|
+
|
|
|
+ print("CA310 设置测试通道", data)
|
|
|
+ data = ca_port.setChannel('01')
|
|
|
|
|
|
# 打开TV串口;
|
|
|
tv_port = MokaSerial()
|
|
@@ -236,36 +195,23 @@ def get_test_result():
|
|
|
|
|
|
|
|
|
XYZ_ALL = []
|
|
|
- xyY_ALL = []
|
|
|
print("内置pattern切换与CA310读取")
|
|
|
for item in PAR_LIST:
|
|
|
# print("item",item)
|
|
|
if item.__len__() == 3:
|
|
|
tv_port.send_parttern([int(item[0]), int(item[1]), int(item[2])])
|
|
|
time.sleep(0.5)
|
|
|
- data = ca_port.sendcmd([0x4D, 0x45, 0x53, 0x0D])
|
|
|
- # bytes转成字符串;
|
|
|
- data = data.decode('utf-8')
|
|
|
- data = data.replace('\r', '')
|
|
|
- r1, r2, d1, d2, d3 = get_ca_data(data)
|
|
|
- # print("CA310数据:", d1, d2, d3)
|
|
|
- # X, Y, Z = xyY_to_XYZ(float(d1) / 10000, float(d2) / 10000, float(d3))
|
|
|
-
|
|
|
- print("CA410数据:", d1, d2, d3)
|
|
|
- X, Y, Z = xyY_to_XYZ(float(d1) / 1000, float(d2) / 1000, float(d3))
|
|
|
+ X, Y, Z = ca_port.readDisplay()
|
|
|
+ print("CA410数据:", X, Y, Z)
|
|
|
|
|
|
print("XYZ", X, Y, Z)
|
|
|
XYZ_ALL.append([X, Y, Z])
|
|
|
- xyY_ALL.append([d1, d2, d3])
|
|
|
+
|
|
|
print("关闭内置pattern")
|
|
|
data = tv_port.sendcmd([0xAA, 0x06, 0x27, 0x00, 0x2B, 0xCC])
|
|
|
- xyY_ALL = xyY_ALL[::-1]
|
|
|
- print(f"测量的xyY_11 is : \n")
|
|
|
- for i in range(0, 14):
|
|
|
- print(f"0.{xyY_ALL[i][0]} 0.{xyY_ALL[i][1]} {xyY_ALL[i][2]}")
|
|
|
|
|
|
# 关闭CA310
|
|
|
- data = ca_port.sendcmd([0x43, 0x4F, 0x4D, 0x2C, 0x30, 0x0D])
|
|
|
+ data = ca_port.endCommunication()
|
|
|
|
|
|
|
|
|
def test_zip():
|