reg_sci = [85, 90, 20, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152] DIFF_R = int(self.textEdit_dir_r.toPlainText()) R_MIN = int(self.textEdit_r_min.toPlainText()) R_MAX = int(self.textEdit_r_max.toPlainText()) Inv = int(self.textEdit_in_cnt.toPlainText()) T_Age = int(self.textEdit_t_age.toPlainText()) KFP_P = float(self.textEdit_kfp_p.toPlainText())*100.0 KFP_Q = float(self.textEdit_kfp_q.toPlainText())*100.0 KFP_R = float(self.textEdit_kfp_r.toPlainText())*100.0 reg_sci[6] += DIFF_R // 256 reg_sci[7] = DIFF_R % 256 reg_sci[8] += R_MIN // 256 reg_sci[9] = R_MIN % 256 reg_sci[10] += R_MAX // 256 reg_sci[11] = R_MAX % 256 reg_sci[12] += Inv // 256 reg_sci[13] = Inv % 256 reg_sci[14] += T_Age // 256 reg_sci[15] = T_Age % 256 reg_sci[22] = sum(reg_sci[:22]) % 256 parent_serial = main.get_serial() parent_serial.write(reg_sci)报错invalid literal for int() with base 10: ''
时间: 2024-03-29 15:37:32 浏览: 16
这个错误通常意味着你在使用 int() 函数时传递了一个空字符串作为参数。根据你提供的代码片段,有可能是以下其中一个参数为空字符串:
- self.textEdit_dir_r.toPlainText()
- self.textEdit_r_min.toPlainText()
- self.textEdit_r_max.toPlainText()
- self.textEdit_in_cnt.toPlainText()
- self.textEdit_t_age.toPlainText()
- self.textEdit_kfp_p.toPlainText()
- self.textEdit_kfp_q.toPlainText()
- self.textEdit_kfp_r.toPlainText()
你需要检查这些文本编辑器中的文本是否为空。如果它们是空的,你需要先在代码中进行一些检查,以确保这些文本框中的文本是有效的,然后再将它们转换为所需的类型。
相关问题
reg_sci = [85 90 20 230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 152]; DIFF_R = get(Eidt_name_1,'string'); DIFF_R = str2num(DIFF_R);reg_sci(7) = reg_sci(7) + floor(DIFF_R/256); reg_sci(8) = mod(DIFF_R,256);reg_sci(23) = sum(reg_sci(1:22)); reg_sci(23) = mod(reg_sci(23),256);fwrite(scom, reg_sci);
这是一段 MATLAB 代码,其中包含了一个数组 reg_sci 和一些操作。根据代码,似乎它的作用是将 reg_sci 数组写入一个串口 scom 中。其中 DIFF_R 是从某个 Edit 控件中得到的字符串,然后将其转换为数字。然后将其拆分为两个字节存储在 reg_sci 的第七个和第八个元素中。最后,计算 reg_sci 中前 22 个元素的和,将其存储在 reg_sci 的第 23 个元素中,并将其模 256 后存储。最终,使用 fwrite 函数将 reg_sci 数组写入串口 scom。
reg_sci = bytearray([85, 90, 20, 230, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 152]) print(reg_sci) DIFF_R = self.textEdit_dir_r.toPlainText() DIFF_R = int(DIFF_R) reg_sci[6] = reg_sci[6] + floor(DIFF_R//256) reg_sci[7] = DIFF_R % 256 reg_sci[22] = sum(reg_sci[0:21]) reg_sci[22] = reg_sci[22] % 256 parent_serial = main.get_serial() parent_serial.write(reg_sci)报错:bytearray(b'UZ\x14\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98') byte must be in range(0, 256)
根据你提供的代码,错误发生在 `parent_serial.write(reg_sci)` 这一行。这个错误提示信息和之前一样,说明 `reg_sci` 数组中的某个元素超出了 0 到 255 的范围。
根据你提供的 `reg_sci` 数组,发现第 3 个元素的值是 20,但是后面的值都是 0,这可能不是你想要的结果。另外,在对 `reg_sci[6]` 进行赋值时,使用了加法,但是这个元素的值可能超出了 0 到 255 的范围,需要使用取模操作确保它的值在正确的范围内。
建议检查一下代码逻辑,确保 `reg_sci` 数组中的所有元素都在 0 到 255 的范围内,特别是在对其进行加法或减法操作时。如果你需要更多的帮助,请提供更多的上下文信息。