📄 d174.bmp.txt
字号:
ItemArray【i】.szAccessPath=T20LE("RS ViewProj ectName”);
/,RSViewProjectName为RSView32项目名称
ItemArray[il.vtRequestedDataType =VT_R4;删改据项的数据类型(VT—R4表示浮点)
1
ItemArray[Ol.szItemID =T20LE("AI\\KUANGSffl");//数据项”KUANGSHI”的标识
ItemArray[ll.szltemID =T20LE("AI\LJIANFEN”);,,数据项”JIANFEN”的标识
ItemArray[21.szItemID =T20LE("AO\\KUANGSffl”);//数据项”KUANGSH[”的标识
ItemArray[3J.szItemID =T20LE("AOMANFEN");/,数据项”JIANFEN”的标识
hRet=ppUnknown->Querylnterface(IID_IOPCltemMgt,(void **)&pOPCItemMgt);
pOPCltemMgt->Addltems (ItemNumber,ltemArray,
(OPCITEMRESULT**)&pItemResult,(HRESULT **)&pErrors);
茌RSView32组态软件中,读取一个物理量的数据值时有一个标记(数据项),称为输
入量;改变该物理量时用另一个标记,称为输出量。因此,对一个物理量进行读和写两种操
作,就需要添加2个数据项。在这里,假设所有的输入量都保存在名为RSViewProjectName
的RSView32项目中的AI文件夹中,所有的输出量都保存在AO文件夹中,按照以上代码
初始化ItemArray结构数组后,ItemArray[0】和ItemArray [11分别为矿石和碱粉输入量的信息,
而ItemArray [2J和ItemArrayl3J分别为矿石和碱粉输出量的信息,共有4个数据项。
10)读写数据。添加完数据项后,就可以用IOPCSyncl0接口的Read0和Write()方法进
行读写操作,为了匹配两种方法的参数,需要将添加结果传递给OPCHANDLE类型的变量
(前面已定义)。为了便于数据的读和写,将2个输入量和2个输出量的信息分别传递给两
个不同的OPCHANDLE类型的数组变量,代码如下:
for(i=O;k2;1++)
hServerAW =pItemResult[il.hServer;
for(i=O;k2;1H)
hS erverAO[i】=pltemResult[i+2] .hServer;
这段程序执行的结果是:hServerAI[Ol和hServerAI[l]分别为矿石和碱粉输入数据项的
HANDLE,用来读数据;hServerAO[O]和hServerAO[lJ分别为矿石和碱粉输出数据项的
HANDLE,用来写数据。
读写数据前,先用IUnknown接口的Querylnterface()方法请求IOPCSyncl0接口指针。
代码如下:
ppUnknown->QueryInterface(IID_IOPCSynclO,(void **)&pOPCSync);
从初始化COM库开始以上所有代码都可以添加到COPCClientDlg::OnInitDialog()中。根
据步骤2中应用程序的设计框架,读取矿石和碱粉两个数据值的程序代码要添加到“读取数
据”按钮的消息映射函数中,写操作代码要添加到“发送数据”按钮的消息映射函数中,所
以分别对IDC_READ和IDC_SEND添加针对BN_CLICKED事件的函数,并编辑诙函数。
174
void COPCClientDlg::OnRead()
{
// TODO: Add your control notification handler code here
int ItemNumber=2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -