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

为何设置1小时SerialPort.ReadTimeout后超时提示未触发?

问题根源与修复方案

核心错误:超时单位误解

SerialPort.ReadTimeout的单位是毫秒,不是分钟或小时:

  • 原代码60*1000*5计算的是300000毫秒,对应5分钟,符合你的预期。
  • 改成60后,实际仅设置了60毫秒(0.06秒)的超时,和你想要的1小时完全不符。

为什么改后没触发错误提示?

  1. 极短的超时可能导致check_connection_sensor()内的串口操作还没进入等待读取的阶段就完成了流程,根本没触发超时异常。
  2. 如果check_connection_sensor()内部有自己的try/catch块,可能把TimeoutException拦截并处理了,没传递到外层的catch逻辑里。

修复步骤

  • 修正超时值:要设置1小时超时,正确代码是:
    mySerialPort.ReadTimeout = 60 * 1000 * 60; // 3600000毫秒 = 1小时
    
  • 排查异常捕获逻辑:检查check_connection_sensor()方法内部是否有未对外抛出的异常处理,确保TimeoutException能传递到外层的catch块。
  • 添加调试日志:在check_connection_sensor()里添加日志输出,跟踪串口读取的状态,确认超时是否被触发,比如:
    // 在check_connection_sensor内部读取串口前添加
    Console.WriteLine($"当前ReadTimeout设置:{mySerialPort.ReadTimeout}毫秒");
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:55:06