开发工具:
文件大小: 23kb
下载次数: 0
上传时间: 2018-06-20
详细说明:
下面这段代码是网上抄来的,相信有人也找到过这段,实际上真正运行的时候就会发现其实是有问题的,我把它修改了下,能正常读写了。 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为设定的数值,用户将根据变量的类型设定数值 /// bVal、lVal、fVal、sVal为设定的数值,用户将根据变量的类型设定数值 /// bVal、lVal、fVal、sVal为设定的数值,用户将根据变量的类型设定数值 /// 返回错误码,见附录 [DllImport("kingvewcliend.dll")] public static extern int WriteTag(ushort TagId, bool bVal, long lVal, float fVal, ref char sVal); /// /// 从组态王中读某个项目的数据 /// /// 要采集的变量的表示号 /// bVal、lVal、fVal、sVal为设定的数值,用户将根据变量的类型设定数值 /// bVal、lVal、fVal、sVal为设定的数值,用户将根据变量的类型设定数值 /// bVal、lVal、fVal、sVal为设定的数值,用户将根据变量的类型设定数值 /// bVal、lVal、fVal、sVal为设定的数值,用户将根据变量的类型设定数值 /// 返回错误码,见附录 [DllImport("kingvewcliend.dll")] public static extern int ReadTag(int TagId, ref bool bVal, ref long lVal, ref Single fVal, StringBuilder sVal); /// /// 断开与组态王OPC的连接 /// /// 返回错误码,见附录 [DllImport("kingvewcliend.dll")] public static extern int StopCliend(); // 错误码含义 //0 //连接成功 //-1 //OPC SERVER已经被非法关闭 //-2 //找不到OPC SERVER的PROGID //-3 //连接OPC SERVER不成功 //-4 //枚举ITEMS错误 //-5 //OPC SERVER没有定义ITEMS //-6 //内存分配错误 //-7 //在向GROUP中加入ITEMS时出现错误 //-8 //未使用 //-9 //读ITEMS时出现错误 //-10 //不能识别的数据类型 //-11 //读ITEMS的质量戳时出现错误 //-12 //向ITEMS中写入数据时出现错误 //-13 //用户添加变量的变量名错误 //-14 //用户读取的变量序号越界 public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Console.WriteLine("连接到本地服务器···"); StartCliend(""); Console.WriteLine("得到项的个数"); int itemCount = ReadItemNo(); Console.WriteLine("得到项的个数为:"+itemCount.ToString()); StringBuilder regname = new StringBuilder(256); string[] name = new string[itemCount]; Console.WriteLine("得到所有的Item····"); for (int i = 0; i < itemCount - 1; i++) { GetItemNames(regname, i); name[i] = regname.ToString(); } Console.WriteLine("输出所有的Item····"); for (int i = 0; i < itemCount - 1; i++) { Console.WriteLine(name[i].ToString()); } int[] tagId =new int[itemCount]; int[] tagType =new int[itemCount]; Console.WriteLine("开始将要监控的Item添加····"); for (int i = 0; i < itemCount - 1; i++) { AddTag(name[i].ToString(), ref tagId[i], ref tagType[i]); } bool[] bVal = new bool[itemCount]; long[] lVal = new long[itemCount]; Single[] fVal = new Single[itemCount]; StringBuilder sVal =new StringBuilder(255); string[] sValString = new string[itemCount]; Console.WriteLine("开始读取数据····"); for (int x = 1; x <5; x++) { Console.WriteLine("第"+x.ToString()+"次读取数据:"); for (int i = 0; i < itemCount - 1; i++) { ReadTag(tagId[i], ref bVal[i], ref lVal[i], ref fVal[i], sVal); sValString[i] = sVal.ToString(); Console.WriteLine("item:" + name[i].ToString() + "值:" + sValString[i].ToString()); } } } } } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.