1、OSError: [Errno 98] Address already in use
-
原因:基础错误。程序重复启动了;
-
方案:检查该文件,杀掉之前已经运行的进程;再次运行该 .py文件即可。
2、TypeError: type NoneType doesn't define __round__ method
——类型错误:round方法无法处理 NoneType类型
-
原因:基础错误。round()方法可处理数字类型的参数,而不是None/str
-
方案:1)改参数;2)换方法。
3、TypeError: Can't convert 'int' object to str implicitly
——类型错误:数据类型没有统一,python无法将 int类型的数据当作 str类型的数据处理。
- 原因:基础错误。我这里是使用了 + 进行字符串拼接,有一边的数据是 int类型。
- 方案:使用 str()方法可实现其他数据类型与字符串数据类型的转换。
4、TypeError: unorderable types: NoneType() > int()
——类型错误:数据类型没有统一,python无法进行 NoneType类型与 int类型的比较操作(其他编程语言也不行-_-)。
-
原因:基础错误。大家知道 > 与 < 一般只能用于 int和 float,python也一样,NoneType类型是无法参与 > 与 <
的操作的。 -
方案:根据代码报错位置,修改 > 与 < 语句前后的变量。
5、json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 1449 (char 1448)
——json数据格式不对。
- 原因:基础错误。一般解析数据的时候有问题,有可能是接受的数据不是标准的 json格式;或者其他处理数据的时候没注意,”reading
the fucking code“就能解决。 - 方案:根据代码报错位置,参考json标准格式修改即可。
6、SyntaxError: 'gbk' codec can't decode byte 0xad in position 272: illegal multibyte sequence
——python3读入文件时编码格式不对
- 原因:同事覆盖系统程序文件夹时导致。
- 方案:指定响应的编码即可。
7、RuntimeWarning: invalid value encountered in double_scalars/RuntimeWarning: invalid value encountered in true_divide
——运行时警告:无效数据
- 原因:计算过程中部分数据情况没有考虑到,比如:除数不为 0,根号下的数据需要为正数等。
- 方案:检查相关代码确认,添加容错机制。
8、TypeError: unsupported operand type(s) for &: 'numpy.float64' and 'int'
——&不支持浮点型和整形的按位与操作
- 原因:基础错误。
- 方案:可将浮点型转为整形再操作。
9、raise can.CanError("Failed to transmit: %s" % exc) can.CanError: Failed to transmit: [Error 105] No buffer space available
——直接原因为CAN缓存溢出,一般发生在 can发送方法处;
- 方案:可以先尝试改大缓存,如果仍然报错,需要查找根本原因。
进入 root账户,在路径 /sys/class/net/can0下执行 echo 4096 > tx_queue_len;我这边再次报错:raise can.CanError(“Transmit buffer full”) can.CanError: Transmit buffer full,需要查找can报错根本原因,再改大缓存也是徒劳。 - 根本原因,程序参数错误,往总线波特率为 125k的 can总线上发送 250k的数据。改成统一波特率后报错消失。
——另外,这里补充一个设置树莓派 can波特率的指令和查询当前 can波特率的指令:
1)sudo ip link set can0 type can bitrate xxx;;
2)sudo ip -details link show can0。