紧急求教 C#连接OPC 报错“vs值不在预期的范围内范围内”

紧急求教 C#连接OPC 报错“值不在预期范围内” 谢谢!
请教熟悉C#的朋友们一个OPC连接问题,
我在网上找了一端C#连接OPC&Server的代码,调试后可以连接,但是报错“值不在预期范围内”,请问是怎么回事?谢谢。
报错及代码如下:
using&System.Collections.G
using&ponentM
using&System.D
using&System.D
using&System.L
using&System.T
using&System.Windows.F
using&OPCA
using&System.T
namespace&OPCtestgulian
&&&&public&partial&class&Form1&:&Form
&&&&&&&&OPCServer&KepS
&&&&&&&&OPCGroups&KepG
&&&&&&&&OPCGroup&KepG
&&&&&&&&OPCItems&KepI
&&&&&&&&OPCItem&KepI
&&&&&&&&public&Form1()
&&&&&&&&&&&&InitializeComponent();
&&&&&&&&private&void&button1_Click(object&sender,&EventArgs&e)
&&&&&&&&&&&&try
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&String&serIp&=&"192.168.5.31";//服务器的IP地址
&&&&&&&&&&&&&&&&String&serverName&=&"BACHMANN.OPCStandardServer";//OPC服务器名称
&&&&&&&&&&&&&&&&KepServer&=&new&OPCServer();
&&&&&&&&&&&&&&&&//连接OPC服务器,opc服务名,ip
&&&&&&&&&&&&&&&&KepServer.Connect(serverName,&serIp);
&&&&&&&&&&&&&&&&//判断连接状态
&&&&&&&&&&&&&&&&if&(KepServer.ServerState&==&(int)OPCServerState.OPCRunning)
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&textBox1.Text&=&"已连接到-"&+&KepServer.ServerName&+&"&&&";
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&//这里你可以根据返回的状态来自定义显示信息,请查看自动化接口API文档
&&&&&&&&&&&&&&&&&&&&textBox1.Text&=&"状态:"&+&KepServer.ServerState.ToString()&+&"&&&";
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&KepGroups&=&KepServer.OPCG
&&&&&&&&&&&&&&&&Thread&t1;&//&开1个线程用于读取数据
&&&&&&&&&&&&&&&&t1&=&new&Thread(new&ThreadStart(kepProcess));
&&&&&&&&&&&&&&&&t1.Start();
&&&&&&&&&&&&}catch(Exception&ex){
&&&&&&&&&&&&&&&&textBox1.Text&=&ex.M
&&&&&&&&&&&&}
&&&&&&&&public&void&KepGroup_DataChange(int&TransactionID,&int&NumItems,&ref&Array&ClientHandles,&ref&Array&ItemValues,&ref&Array&Qualities,&ref&Array&TimeStamps)
&&&&&&&&&&&&listBox1.Items.Add(ItemValues.GetValue(1));//取到改变的值
&&&&&&&&public&void&kepProcess()
&&&&&&&&&&&&KepGroup&=&KepGroups.Add("Group0");
&&&&&&&&&&&&KepGroup.UpdateRate&=&250;
&&&&&&&&&&&&KepGroup.IsActive&=&
&&&&&&&&&&&&KepGroup.IsSubscribed&=&
&&&&&&&&&&&&//当KepGroup中数据发生改变的触发事件
&&&&&&&&&&&&KepGroup.DataChange&+=&new&DIOPCGroupEvent_DataChangeEventHandler(KepGroup_DataChange);
&&&&&&&&&&&&KepItems&=&KepGroup.OPCI
&&&&&&&&&&&&int[]&temp&=&new&int[2];
&&&&&&&&&&&&temp[0]&=&0;
&&&&&&&&&&&&KepItems.AddItem("Random&Int1",&1);
&&&&&&&&&&&&OPCItem&bItem&=&KepItems.Item(1);
&&&&&&&&&&&&Array&serverHandles&=&(Array)
&&&&&&&&&&&&Array&
&&&&&&&&&&&&Array&E
&&&&&&&&&&&&Object&
&&&&&&&&&&&&Object&Q
&&&&&&&&&&&&KepGroup.SyncRead((short)OPCAutomation.OPCDataSource.OPCCache,&serverHandles.Length,&ref&serverHandles,&out&values,&out&Errors,&out&Qualities,&out&cancel);
&&&&&&&&//关闭连接
&&&&&&&&private&void&button2_Click(object&sender,&EventArgs&e)
&&&&&&&&&&&&label6.Text&=&KepServer.CurrentTime.ToString();
&&&&&&&&&&&&KepServer.Disconnect();//关闭连服务器
&&&&&&&&&&&&textBox1.Text&=&"未连接&";
&&&&&&&&private&void&Form1_Load(object&sender,&EventArgs&e)
“多一少一”问题占程序员常犯错误的10%以上!
避免“多一少一”问题的方法之一是将比如&10甚至&5的数代入程序片断,搬手指头心算验证一下程序到底应该写为
x、x-1、x+1中的哪个?
&、&=、==、&、&=中的哪个?
引用&1&楼&zhao4zhong1&的回复:“多一少一”问题占程序员常犯错误的10%以上!
避免“多一少一”问题的方法之一是将比如&10甚至&5的数代入程序片断,搬手指头心算验证一下程序到底应该写为
x、x-1、x+1中的哪个?
&、&=、==、&、&=中的哪个?
请问您具体意思?
引用&3&楼&zhao4zhong1&的回复:Item(0)&?
谢谢朋友,还是不行。
光标放在Item上点鼠标右键,选转到定义,看看Item是否接收整型常量作为参数。
&KepItems.AddItem("Random&Int1",&1);
&OPCItem&bItem&=&KepItems.Item(1);
第一行的Random&int&1,改为你的工控系统中定义的实际变量。如果你不确认变量是否有效,可以先用OPC客户端工具读取一下。
第二行的Item(1)不要变,因为OPC标准就是从1开始的。
好多人自己都不明白的技术领域,却以大师的姿态去教训别人,真是无语了。
楼上正解,不过我的是SyncRead出现这个错误,能不能帮我看看。
楼主有没有解决问题,遇到的是相同的问题,求教啊
解决了吗&把后来你报错那句“syncread”注释掉就好了&并不需要那一句。
引用&8&楼&weixin_&的回复:楼主有没有解决问题,遇到的是相同的问题,求教啊
即使是一小步也想与你分享2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 vs值不在预期的范围内 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信