epm/User/test/main.py

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()