97 lines
1.9 KiB
Python
97 lines
1.9 KiB
Python
import pkg.common as common
|
|
import numpy as np
|
|
|
|
HEAD = '%01#'
|
|
TRUE = '+00001'
|
|
FALSE = '+00000'
|
|
READ = 'R'
|
|
WRITE = 'W'
|
|
|
|
|
|
# 调零
|
|
def zero(read=True, on=False):
|
|
CMD = 'ZS'
|
|
if read:
|
|
return READ + CMD
|
|
else:
|
|
return WRITE + CMD + (TRUE if on else FALSE)
|
|
pass
|
|
|
|
|
|
# 复位
|
|
def reset():
|
|
pass
|
|
|
|
|
|
# 检测头开启或者关闭
|
|
def check_head(read=True, open=False):
|
|
CMD = 'LR'
|
|
if read:
|
|
return READ + CMD
|
|
else:
|
|
return WRITE + CMD + (TRUE if open else FALSE)
|
|
|
|
|
|
# 测定值读出
|
|
def read_value():
|
|
CMD = 'MD'
|
|
return READ + CMD
|
|
|
|
|
|
# 受光量读出
|
|
def read_light():
|
|
CMD = 'ID'
|
|
return READ + CMD
|
|
|
|
|
|
# 警告读出
|
|
def read_warning():
|
|
CMD = 'OA'
|
|
return READ + CMD
|
|
|
|
|
|
# 模拟输出选择
|
|
def analog_output_select(read=True, current=True):
|
|
CMD = 'AS'
|
|
if read:
|
|
return READ + CMD
|
|
else:
|
|
return WRITE + CMD + (FALSE if current else True)
|
|
|
|
|
|
# # 模拟线性调整电流
|
|
# def analog_linear_adjust_current(read=True, current=0):
|
|
# CMD = 'IL'
|
|
# if read:
|
|
# return READ + CMD
|
|
# else:
|
|
# return WRITE + CMD + common.format_number(current, 5)
|
|
|
|
|
|
def factory_package_bytes(body):
|
|
s = HEAD + body
|
|
bs = bytes(s, encoding='utf-8')
|
|
xor = common.xor(bs)
|
|
hex_string = hex(xor) # 将整数转换为十六进制字符串
|
|
first_digit = hex_string[2].upper() # 获取第一个字符
|
|
second_digit = hex_string[3].upper() # 获取第二个字符
|
|
return s + first_digit + second_digit + '\r'
|
|
|
|
|
|
# python 十六进制字符串转assic
|
|
def hex_string_to_assic(hex_string):
|
|
return bytes.fromhex(hex_string).decode('utf-8')
|
|
|
|
|
|
def main():
|
|
s = '25 30 31 24 52 4D 44 2B 30 30 31 34 33 36 34 34 34'
|
|
print(hex_string_to_assic(s))
|
|
r = factory_package_bytes(analog_output_select(True, False))
|
|
print(r)
|
|
common.print_hex_data_space(bytes(r, encoding='utf-8'))
|
|
pass
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|