Compare commits

..

1 Commits

Author SHA1 Message Date
4041481593 get 2025-01-15 16:49:07 +08:00
2 changed files with 61 additions and 12 deletions

BIN
myClient

Binary file not shown.

View File

@ -503,6 +503,59 @@ u32 Browse(long ConnectionHdl,UABrowseDescription BrowseDescription,u32 Continua
return retval; return retval;
} }
u32 UA_MethodGetHandleList(long ConnectionHdl,u16 NodeIDCount,UANodeID *ObjectNodeIDs,UANodeID *MethodNodeIDs,long *MethodHdls,u32 ErrorIDs[]){
UA_Client *c = (UA_Client*)ConnectionHdl;
u32 retval=0;
if(NodeIDCount>MAX_ELEMENTS_METHOD){
retval=0xA0000002;
return retval;
}
UA_CallRequest *request=malloc(sizeof(UA_CallRequest));
UA_CallRequest_init(request);
UA_CallMethodRequest *item = (UA_CallMethodRequest*)malloc(sizeof(UA_CallMethodRequest) * NodeIDCount);
for(int i = 0;i<NodeIDCount;i++){
UA_CallMethodRequest_init(&item[i]);
switch(ObjectNodeIDs[i].IdentifierType){
case 0:item[i].objectId=UA_NODEID_NUMERIC(ObjectNodeIDs[i].NamespaceIndex,ObjectNodeIDs[i].Identifier.data);break;
case 1:item[i].objectId=UA_NODEID_STRING(ObjectNodeIDs[i].NamespaceIndex,ObjectNodeIDs[i].Identifier.data);break;
case 2:item[i].objectId.identifierType=4;
item[i].objectId.identifier.string.data=ObjectNodeIDs[i].Identifier.data;
item[i].objectId.identifier.string.length=ObjectNodeIDs[i].Identifier.length;
item[i].objectId.namespaceIndex=ObjectNodeIDs[i].NamespaceIndex;break;
case 3:item[i].objectId=UA_NODEID_BYTESTRING(ObjectNodeIDs[i].NamespaceIndex,ObjectNodeIDs[i].Identifier.data);break;
default:ErrorIDs[i]==0xA0000301;retval=ErrorIDs[i];break;
}
switch(MethodNodeIDs[i].IdentifierType){
case 0:item[i].methodId=UA_NODEID_NUMERIC(MethodNodeIDs[i].NamespaceIndex,MethodNodeIDs[i].Identifier.data);break;
case 1:item[i].methodId=UA_NODEID_STRING(MethodNodeIDs[i].NamespaceIndex,MethodNodeIDs[i].Identifier.data);break;
case 2:item[i].methodId.identifierType=4;
item[i].methodId.identifier.string.data=MethodNodeIDs[i].Identifier.data;
item[i].methodId.identifier.string.length=MethodNodeIDs[i].Identifier.length;
item[i].methodId.namespaceIndex=MethodNodeIDs[i].NamespaceIndex;break;
case 3:item[i].methodId=UA_NODEID_BYTESTRING(MethodNodeIDs[i].NamespaceIndex,MethodNodeIDs[i].Identifier.data);break;
default:ErrorIDs[i]==0xA0000301;retval=ErrorIDs[i];break;
}
//UA_CallMethodRequest_clear(&item);
//UA_CallRequest_clear(request);
MethodHdls[i]=(long *)&item[i];
printf("%lld\n",MethodHdls[i]);
ErrorIDs[i]=0;
}
request->methodsToCall = &item;
request->methodsToCallSize = NodeIDCount;
return retval;
}
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
// long connecthdl; // long connecthdl;
@ -560,21 +613,17 @@ int main(int argc, char *argv[]) {
} }
UA_BrowseRequest_clear(&bReq); UA_BrowseRequest_clear(&bReq);
UA_BrowseResponse_clear(&bResp); UA_BrowseResponse_clear(&bResp);
u16 count;
UABrowseDescription browseDes;
browseDes.Direction = 1;
browseDes.StartingNodeID = nodes[0];
browseDes.ResultMask = 31;
browseDes.IncludeSubtypes = true;
browseDes.ReferenceTypeID.Identifier.length == NULL;
browseDes.NodeClass = 511;
UAReferenceDescription *browseResult = (UAReferenceDescription*)malloc(MAX_ELEMENTS_NODELIST * sizeof(UAReferenceDescription));
u32 resultOut;
Browse(hdl,browseDes,0,&count,browseResult,resultOut);
UANodeID ObjectNodeIDs[4];
UANodeID MethodNodeIDs[1];
long MethodHdls[4];
u32 ErrorIDs[1];
UA_MethodGetHandleList(hdl,4,nodes,MethodNodeIDs,MethodHdls,ErrorIDs);
printf("1111\n");
printf("%lld\n",MethodHdls[1]);
/* Clean up */ /* Clean up */
UA_Client_disconnect(client); UA_Client_disconnect(client);
UA_Client_delete(client); UA_Client_delete(client);
} }