关于serialPort.open()的一些问题

zc3500 2016-04-24 08:12:37
想写一个串口读写数据的界面,使用serialPort控件。
对控件进行初始化的时候使用了serialPort1.open()语句,即打开串口,因为执行完serialPort1.open()语句后,串口打开是需要一定时间的,立即进行下一步读数据操作就会读到错误数据,如果等一会再读取,就没问题了(经过很多次验证)。
于是就想后面写读取串口数据的时候想先判断一下串口是不是被打开了,不知道怎么判断一下,例如使用if语句,串口打开我再读,没打开的话,就等到打开串口后再执行读取语句。
不知道哪位大神能帮帮我,初学者,菜鸟,还请大家说的具体一点,能附上代码回答,在这里向大家请教一下。谢谢大家了。
...全文
1325 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
为轮子而生 2016-04-25
  • 打赏
  • 举报
回复
也可以把TimeoutException改为Exception
为轮子而生 2016-04-25
  • 打赏
  • 举报
回复
一楼的办法可以尝试,也可以参照msdn上的方式,忽略端口未打开或超时的问题,最好放在多线程中,因为打开或读写都可能会阻塞线程 public static void Read() { while (_continue) { try { string message = _serialPort.ReadLine(); Console.WriteLine(message); } catch (TimeoutException) { } } }
han494127027 2016-04-24
  • 打赏
  • 举报
回复
//读取数据的时候判断串口是否打开 if (! SerialPortName.IsOpen) { SerialPortName.open(); } else { //读取数据 }

111,080

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧