解决方案 »

  1.   

    if(serialPort. BytesToRead==0)  //断开连接或if(serialPort. IsOpen == false)  //断开连接
      

  2.   

    你可以分开2个部分说。
    1.串口通讯,你不一定要现在这样轮询方式,如果是api操作,可以用信号量同步,如果SerialPort可以用DataReceived事件。
    2.心跳检测,你可以开定时器,检查心跳状态即可。
    两者并行,不要混为一谈,串口通过事件或信号量方式处理,收到心跳就设置标记,定时器到时间检测标记,并重置标记,仅此而已,简单问题别复杂化。
      

  3.   

    串口用DataReceived的回调事件
    心跳用timer
    然后定义个整形变量
    timer每秒给它-1
    DataReceived收到消息就重置变成15
    如果timer里-1之后,它变成0了,说明没有被重置过,判断为断开