|
|
C#上位机循环读取下位机数据 |
|
|
Setp1:创建串口对象,并配置其属性,也可以使用SerialPort控件
SerialPort sp = new SerialPort();
sp.DataBits = 8;
sp.StopBits = StopBits.One;
sp.ReadBufferSize = 500000;
//读写超时,如果底层串口驱动效率问题,能有效的避免死锁
sp.ReadTimeout = 200;
sp.WriteTimeout = 200;
sp.DtrEnable = true; //如果是RS232转RS485,此句必须要,否则不能通讯
sp.NewLine = "\r\n";
sp.Open();
Step2:创建定时器对象,也可以用Timer控件
Timer tScan =Timer();
tScan.Interval = 1000;//表示一秒钟扫描一次
tScan.Enable=true;
Step3 利用ReceivedData方法接收下位机数据并显示下位机数据
在Timer事件里添加
byte[] Received_Datas = new byte[29];
DataManager.ReceivedData(Received_Datas, 0, Received_Datas.Length, sp);
//显示下位机数据
如:txtControlVol.Text=Received_Datas.toString();
/// <summary>
/// 接收信息
/// </summary>
/// <param name="data">存储接收到的信息</param>
/// <param name="offset">缓冲区数组中开始写入的偏移量</param>
/// <param name="count">要读取的字节数</param>
/// <param name="sp">串行口</param>
/// <returns></returns>
public bool ReceivedData(byte[] data, int offset, int count,SerialPort sp)
{
if (sp.IsOpen)
{
try
{
//System.Threading.Thread.Sleep(50);
sp.Read(data, offset, count);
return true;
}
catch
{
return false;
}
}
else
{
return false;
}
}
如需更复杂的通讯(如多线程监控,多设备数据并发处理)请留言给我。文字文字 |
|
|
|
评论仅代表评论人个人看法,不表明博客主人及中国工控网同意其观点或其描述 共2条评论 共1页 第1页
|
评论人署名:liyiping12 |
|
评论时间:2010/9/8 17:25:00 |
我要发表评论 |
你好,看了你写的代码,受益匪浅,我刚学C#,在做一个通过上位机软件和下位机的通讯,采集温湿度数据,并且显示图形和数据,然后存储的上位机,对于上位机采集的方式代码和过程不是很了解,串口方面也不是很懂,希望得到指导,谢谢,我的邮箱:468024123@qq.coom |
|
评论人署名:tr14466 |
|
评论时间:2012/8/24 17:48:00 |
我要发表评论 |
你好,我正在做一个c#写的上位机软件通讯软件,但之前没做过,无从下手,希望您能多指教指教,不胜感激。我的邮箱是1072131870@qq.com(邮件联系,急急急急急),谢谢,好人一生平安。 |
|
相关博客新闻: |
|
|