问题描述
用c#语言写的,只要有理都会给分opc读取opc服务器的数据,多个变量的方法用的是,参考的是这里的方法http://www.cnblogs.com/punkrocker/archive/2012/09/01/2666307.html这个里的方法,哪位大神加我下KepGroup_DataChange里只能返回最后一个参数的值//点开始按钮,将变量名传入调用获取变量的方法这个方法应该是错的只能获取最后一个,求大神指导和修改,给个代码和自己的理解privatevoidbtnStart_Click(objectsender,EventArgse){this.btnStart.Text="结束";List<string>getValue=newList<string>();foreach(stringiteminConfigForm.selectarr){OpcAuto.Default.ReadParamValue(item);}}///<summary>///获取变量的值///</summary>publicvoidReadParamValue(stringparam){try{if(itmHandleClient!=0){ArrayErrors;OPCItembItem=KepItems.GetOPCItem(itmHandleServer);int[]temp=newint[2]{0,bItem.ServerHandle};ArrayserverHandle=(Array)temp;//移除上一次的变量KepItems.Remove(KepItems.Count,refserverHandle,outErrors);}itmHandleClient=1234;KepItem=KepItems.AddItem(param,itmHandleClient);itmHandleServer=KepItem.ServerHandle;txtName=param.Split('.')[2];}catch(Exceptionerr){//没有任何权限的项,都是OPC服务器保留的系统项,此处可不做处理。itmHandleClient=0;MessageBox.Show("此项为系统保留项:"+err.Message,"提示信息");}}///<summary>///每当项数据有变化时执行的事件///</summary>///<paramname="TransactionID">处理ID</param>///<paramname="NumItems">项个数</param>///<paramname="ClientHandles">项客户端句柄</param>///<paramname="ItemValues">TAG值</param>///<paramname="Qualities">品质</param>///<paramname="TimeStamps">时间戳</param>voidKepGroup_DataChange(intTransactionID,intNumItems,refArrayClientHandles,refArrayItemValues,refArrayQualities,refArrayTimeStamps){//为了测试,所以加了控制台的输出,来查看事物ID号//Console.WriteLine("********"+TransactionID.ToString()+"*********");for(inti=1;i<=NumItems;i++){MessageBox.Show("值是"+ItemValues.GetValue(i).ToString());//MainFormtry{MainForm.ActiveForm.Controls["txt"+txtName].Text=ItemValues.GetValue(i).ToString();}catch(Exceptionerr){MessageBox.Show(err.ToString());}//this.txtTagValue.Text=ItemValues.GetValue(i).ToString();//this.txtQualities.Text=Qualities.GetValue(i).ToString();//this.txtTimeStamps.Text=TimeStamps.GetValue(i).ToString();}}
解决方案
解决方案二:
请问你是在北京给汽车部件公司做吗?
解决方案三:
我这有读写opc的类。。。如果要的话就加我...276081678