博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
检测串口是否掉线的思路
阅读量:4589 次
发布时间:2019-06-09

本文共 1743 字,大约阅读时间需要 5 分钟。

思路记录下,免得忘记

设置spFlag =false;

在SendCmd时,spFlag=false;触发IsRec();

在Received事件中,spFlag=true;

实测:收不到数据是可以报错的。PC条件不够,没法测试接收到数据后是否正常,通过模拟点击一个按钮,设置spFlag=true后,没有触发MessagBox

1 public partial class Form1 : Form 2     { 3         private bool spFlag = false; 4         SerialPort sp = null; 5         private long startTime = 0; 6         public Form1() 7         { 8             InitializeComponent(); 9             sp = new SerialPort();10             sp.PortName = "COM1";11             if (sp.IsOpen)12             {13                 sp.Close();14             }15             sp.Open();16 17             sp.DataReceived += sp_DataReceived;18         }19 20         21 22         private void button1_Click(object sender, EventArgs e)23         {24             SendCmd();25         }26         private void SendCmd()27         {28             spFlag = false;29             sp.Write("aaaaaa");30             startTime = System.DateTime.Now.Ticks;31             Thread recThread = new Thread(new ThreadStart(IsRec));32             recThread.IsBackground = true;33             recThread.Start();34         }35 36         void IsRec()37         {38             while ((System.DateTime.Now.Ticks - startTime) < 10000000*5)39             {40                 if (spFlag)41                 {42                     break;43                 }44             }45             if(!spFlag)46                 MessageBox.Show("接收超时,串口可能掉线,");47         }48         void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)49         {50             spFlag = true;51         }52 53         private void button2_Click(object sender, EventArgs e)54         {55             this.spFlag = true;56         }57     }

 

转载于:https://www.cnblogs.com/czicy/p/9187940.html

你可能感兴趣的文章
c#通用语言运行时CLR
查看>>
编译和执行 C# 应用程序
查看>>
c#命名空间
查看>>
c#字面量
查看>>
C# 应用程序文件夹结构
查看>>
c# Format() 方法
查看>>
c#实例
查看>>
c# Format() 方法
查看>>
c# String 常用方法应用
查看>>
c# 枚举和位标志
查看>>
c# 枚举
查看>>
c# System.Enum的方法
查看>>
c# 数组
查看>>
C# 的基本数据类型
查看>>
c# 结构
查看>>
c# 装箱与拆箱
查看>>
c# 引用类型和值类型的内存分配
查看>>
c# 选择结构
查看>>
C#的预处理指令
查看>>
c# 运算符和表达式
查看>>