标题:怎样检测串口是否有数据?
只看楼主
foxqd
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-24
结帖率:0
 问题点数:0 回复次数:4 
怎样检测串口是否有数据?
.net vs 2005 c#程序。
我的计算机通过串口接收外设(仪表)持续发来的数据,串口serialPort有一个DataReceived()事件,当接收到数据时就会触发这个事件。这部分我已做好了。
现在的问题是:我想加一个功能,即在屏幕上放上红、绿两个小图标,当串口有数据来时显示红灯图标,无信号来时显示绿灯图标。这样在  
  private void serialPort_DataReceived(object sender, e)
  {
  //接收串口事件后触发事件

  this.picRed.Visible = true; //开红灯
  this.picGreen.Visible = false;
  }

但是当串口拔掉或外设仪表关掉后如何能检测到以便使用以下代码关闭红灯而显示绿灯:
this.picRed.Visible = false; //开绿灯
this.picGreen.Visible = true;

我的代码的大致结构如下:
serialPort = new ();
private delegate void myDelegate();
......
private void Form1_Load(object sender, EventArgs e)
  {   
  serialPort.DataReceived += new (serialPort_DataReceived);
  this.openSerialPort();
  }

  private void serialPort_DataReceived(object sender, e)
  {
  //接收串口事件后触发事件
  txtDigit.Invoke(new myDelegate(updateTextBox), new object[] { });
  }

private void updateTextBox()
  {
  //txtDigit.Font = new Font("Grramond", 22.0F, FontStyle.Bold);
  //int tempData = 0;

  this.picRed.Visible = true; //开红灯
  this.picGreen.Visible = false;

  if (serialPort.BytesToRead > 0)
  {
  serialPort.Read(message, 0, 1);
  ......
  }
}
搜索更多相关主题的帖子: 串口 数据 检测 
2010-05-10 12:08
hainandgm
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:111
专家分:475
注 册:2007-6-21
得分:0 
serialPort.BytesToRead //接收缓冲区未读取的字节数
2010-05-10 20:02
hainandgm
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:111
专家分:475
注 册:2007-6-21
得分:0 
serialPort.BytesToRead //接收缓冲区未读取的字节数
2010-05-10 20:05
zhouxiaoga
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2009-5-12
得分:0 
同上
2010-06-13 15:55
ghl2312
Rank: 4
等 级:业余侠客
威 望:2
帖 子:208
专家分:226
注 册:2008-7-10
得分:0 
serialPort.BytesToRead //接收缓冲区未读取的字节数

向灰太狼学习
2010-06-13 16:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-306052-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.289306 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved