def combAddrWri(addr, wri_value, reg_num): send_cmd = [1, 0x10] # length = len(wri_value) send_cmd_str = '' append = send_cmd.append append((addr >> 8) & 0xff) append(addr & 0xff) append((reg_num >> 8) & 0xff) append(reg_num & 0xff) append(reg_num * 2)
时间: 2024-04-18 15:29:32 浏览: 130
combAddrWri函数接收三个参数:addr,wri_value和reg_num。在函数中,生成一个发送命令send_cmd,并返回该命令。
具体的代码逻辑如下:
1. 首先,创建一个列表send_cmd,并初始化为[1, 0x10]。
2. 接着,创建一个空字符串send_cmd_str。
3. 然后,使用append方法将addr右移8位并按位与0xff的结果添加到send_cmd列表中。
4. 再次使用append方法将addr按位与0xff的结果添加到send_cmd列表中。
5. 继续使用append方法将reg_num右移8位并按位与0xff的结果添加到send_cmd列表中。
6. 最后,使用append方法将reg_num按位与0xff的结果添加到send_cmd列表中。
7. 使用append方法将reg_num乘以2的结果添加到send_cmd列表中。
8. 返回send_cmd列表作为发送命令。
请注意,代码片段中的变量和方法调用没有给出完整的定义和上下文,因此无法提供更详细的解释。
相关问题
def eepWri(SerialComm, eep_wri_reg, length): eep_wri_addr = 0x77AC value = '' send_cmd = combAddrWri(eep_wri_addr, (length << 16) + eep_wri_reg, 2) str_data = sendData(SerialComm, send_cmd) # print("R:", str_data) if str_data.startswith('0110') > 0: eep_read_addr = 0x776C reg_num = 0x40 send_cmd = combAddrRea(eep_read_addr, reg_num) str_data = sendData(SerialComm, send_cmd) else: return value if length == 2: value = int(str_data[6:10], 16) elif length == 4: value = (int(str_data[10:14], 16) << 16) + int(str_data[6:10], 16) else: print('目前只支持length为2或4') # length=4 return value
eepWri函数接收三个参数:SerialComm、eep_wri_reg和length。在函数中,根据给定的参数值执行以下操作:
1. 首先,定义一个变量eep_wri_addr并赋值为0x77AC。
2. 然后,定义一个空字符串变量value。
3. 接着,使用combAddrWri函数生成一个发送命令send_cmd,并将其发送给SerialComm设备,并将返回的数据保存在str_data变量中。
4. 如果str_data以'0110'开头,则执行以下操作:
- 定义一个变量eep_read_addr并赋值为0x776C。
- 定义一个变量reg_num并赋值为0x40。
- 使用combAddrRea函数生成一个发送命令send_cmd,并将其发送给SerialComm设备,并将返回的数据保存在str_data变量中。
5. 否则,返回空字符串value。
6. 如果length等于2,则将str_data的一部分转换为十进制整数,并赋值给value。
7. 如果length等于4,则将str_data的一部分转换为十六进制整数,并根据位移操作和相加操作计算出最终的值,并赋值给value。
8. 如果length既不等于2也不等于4,则打印一条错误信息。
9. 返回变量value。
请注意,代码片段中的combAddrWri、sendData和combAddrRea函数没有给出完整的定义和上下文,因此无法提供更详细的解释。
def write(waddr, wreg_num, value, wtime, reg_name, note): file.write('\taddr={0}\n\treg_num={1}\n\tvalue={2}\n'.format(waddr, wreg_num, value)) file.write( '\tsend_cmd=Common.combAddrWri(addr, value, reg_num)\n\tCommon.sendData(SerialComm, send_cmd)\n\tprint(addr,"{}","{}")\n\tsys.stdout = stdout_backup\n\tprint(addr,"{}","{}")\n\tsys.stdout = log_file\n'.format( reg_name, note, reg_name, note)) if wtime != 0: file.write('\ttime.sleep({})\n\n'.format(wtime))
write函数接收六个参数:waddr,wreg_num,value,wtime,reg_name和note。在函数中,将这些参数的值写入文件。
具体的代码逻辑如下:
1. 首先,将字符串'\taddr={0}\n\treg_num={1}\n\tvalue={2}\n'写入文件,并使用format函数将waddr、wreg_num和value的值填充到字符串中。
2. 接着,将字符串'\tsend_cmd=Common.combAddrWri(addr, value, reg_num)\n\tCommon.sendData(SerialComm, send_cmd)\n\tprint(addr,"{}","{}")\n\tsys.stdout = stdout_backup\n\tprint(addr,"{}","{}")\n\tsys.stdout = log_file\n'写入文件,并使用format函数将reg_name和note的值填充到字符串中。
3. 然后,使用条件判断语句判断wtime是否等于0。如果不等于0,则将字符串'\ttime.sleep({})\n\n'写入文件,并使用format函数将wtime的值填充到字符串中。
阅读全文