Visual Studio 2010--C#跟西门子1200(Sharp7)窗体控制⑥--循环读取
上期回顾(上期完成了,循环读取Dint变量的,功能代码的主要编写):
本期将完成启动和定时器计数,然后调试,基本上就好了
1.0 因为我们需要他,当窗体开启时定时器就循环响应,一直刷新来自PLC的数据,因此,我们只需要当窗体开启后,直接启动定时器,后面也不用关,启动代码直接加载Form1里面
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
timer1.Start();
}
}
2.0 下面在写个定时器的扫描计数,方便调试,很简单,先声明下
//定时器计数
int time_num = 0;
3.0 就在定时器响应程序timer1_Tick中,加上代码,变量time_num自加1,,然后输出到Lable中显示,Lable就把刚才做的OK的Lable复制一个好了,看下什么名字就行,这里是Lable5
private void timer1_Tick(object sender, EventArgs e)
{
var client = new S7Client();//创建S7客户端对象
client.ConnectTo("192.168.0.1", 0, 1);//接受来次通讯的结果
var buffer = new byte[38];
//读取DB1的从地址0开始的38个字节的数据,读到buffer
client.DBRead(1, 0, buffer.Length, buffer);
int db1da16 = S7.GetDIntAt(buffer, 8);
OK.Text = db1da16.ToString();
// int db1da20 = S7.GetDIntAt(buffer, 12);
// label4.Text = db1da20.ToString();
time_num = time_num + 1;
label5.Text = time_num.ToString();
client.Disconnect();//断开
}
4.0 这里代码就都写完了,接下来保存,按F5调试,如下图,PLC监控数据为6666,实际我们监控到的也是6666,如果你更改后,C#也会更改,并且定时器响应次数会以200MS一次的速度一直计数,这样你的数据就读取成功了