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 19:29:32 浏览: 117
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函数没有给出完整的定义和上下文,因此无法提供更详细的解释。
阅读全文