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