C#如何与OPC实时写入和监控

掉毛天使 2018-01-10 08:24:00

自己做了个读写OPC数据的小程序,只是点击按钮写入,我想实现按下按钮后写入1,松开按钮后写入0,并实时显示在OPC标签中。


刚开始学习,搞了半天没结果,谢谢大神们。




private void button2_Click(object sender, EventArgs e)
{


Array AsyncValue_Wt;
Array SerHandles;
object[] tmpWtData = new object[3];//写入的数据必须是object型的,否则会报错
int[] tmpSerHdles = new int[3];
//将输入数据赋给数组,然后再转成Array型送给AsyncValue_Wt
tmpWtData[1] =??????? ; //tmpWtData[1] = (object)textBox1.Text;
// tmpWtData[2] = (object)textBox2.Text;
AsyncValue_Wt = (Array)tmpWtData;
//将输入数据送给的Item对应服务器句柄赋给数组,然后再转成Array型送给SerHandles
tmpSerHdles[1] = Convert.ToInt32(lserverhandles.GetValue(1));
tmpSerHdles[2] = Convert.ToInt32(lserverhandles.GetValue(2));
SerHandles = (Array)tmpSerHdles;
objGroup.AsyncWrite(2, ref SerHandles, ref AsyncValue_Wt, out lErrors_Wt, lTransID_Wt, out lCancelID_Wt);

}
...全文
855 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
H洪H 2021-02-01
  • 打赏
  • 举报
回复
楼主问题解决了吗?如果不同的按钮写入不同的变量要如何写入,楼主能指点一下吗?
掉毛天使 2018-01-12
  • 打赏
  • 举报
回复
掉毛天使 2018-01-11
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
http://download.csdn.net/download/xdrt81y/4984856
感谢版主的关注,但是您把我从一个坑引到了另一个坑。
threenewbee 2018-01-10
  • 打赏
  • 举报
回复
http://download.csdn.net/download/xdrt81y/4984856
掉毛天使 2018-01-10
  • 打赏
  • 举报
回复
先谢过各位大师了
下面这段代码是网上抄来的,相信有人也找到过这段,实际上真正运行的时候就会发现其实是有问题的,我把它修改了下,能正常读写了。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace kingview { public partial class Form1 : Form { /// /// 与组态王建立连接 /// 每次应用程序启动时,必须用该函数与组态王建立连接 /// /// node为节点(IP),如果是本机,其值为空 /// 返回错误码,见附录。 [DllImport("kingvewcliend.dll")] public static extern int StartCliend(string node); /// /// 得到组态王SDK中列出的项目(包括变量及其域)总数 /// [DllImport("kingvewcliend.dll")] public static extern int ReadItemNo(); /// /// 得到某个项目的名称 /// 将返回组态王的项目的名称 /// 为用户写入的其要取的变量的索引号,其为ReadItemNo返回的范围内的某个数 /// 返回错误码,见附录 /// [DllImport("kingvewcliend.dll")] //[SecurityPermission(SecurityAction.Assert, Unrestricted = true)] public static extern int GetItemNames(StringBuilder sName, int wItemId); /// /// 将某个项目添加到采集列中 /// 是要加入采集的项目名 /// TagId项目采集的标识号 /// 项目的数据类型 /// 返回错误码,见附录 /// [DllImport("kingvewcliend.dll")] public static extern int AddTag(string sRegName, ref int TagId, ref int TagDataType); /// /// 向某个项目中有应用程序向组态王方向写数据 /// /// 为要采集项目的标识号 /// bVal、lVal、fVal、sVal为设定的数值,用户将根据变量的类型设定数值 /// bVal、lVal、fVal、sVal为设定的数值,用户将根据变量的类型设定数值 /// b

110,534

社区成员

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

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

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