You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用round()报错:NoneType无__round__方法,浮点变量为何无法取整?

问题原因与解决方案

核心原因

你看到的float输出只是部分成功的调用结果,实际上pg.get_pressure()并非每次都返回浮点值——偶尔会返回None,只是之前的测试没遇到这个场景。

串口通信类的方法很容易因为以下原因返回None:

  • 硬件连接松动、信号干扰
  • 设备通信超时、响应不完整
  • 数据解析失败(比如返回的格式不符合预期)

当pressure值为None时,调用round()自然会触发TypeError,因为NoneType没有__round__方法。

验证与临时修复

可以修改代码,先判断值是否有效再处理,同时捕捉到返回None的场景:

def  Inficon():
    try:
        with BGP400_RS232("/dev/serial0") as pg:
            while True:
                pressure = pg.get_pressure(PressureGaugeUnit.MBAR)
                print(type(pressure), pressure)
                if pressure is not None:
                    print(round(pressure, 1))
                else:
                    print("Failed to read pressure data")
                time.sleep(0.5)
    except KeyboardInterrupt:
        print("Measurement stopped by user.")
Inficon()

根本解决方向

  • 检查硬件:确认串口线连接牢固,设备供电正常,通信参数(波特率、奇偶校验等)与设备匹配
  • 查看类文档:查阅BGP400_RS232的官方文档,明确get_pressure返回None的具体触发条件,针对性优化通信逻辑

内容的提问来源于stack exchange,提问作者adamssson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:21:09