Compare commits

..

1 Commits

Author SHA1 Message Date
d502361b2d 12.25 2024-12-25 14:24:03 +08:00
2 changed files with 12 additions and 61 deletions

BIN
myClient

Binary file not shown.

View File

@ -503,59 +503,6 @@ u32 Browse(long ConnectionHdl,UABrowseDescription BrowseDescription,u32 Continua
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[]) {
// long connecthdl;
@ -613,17 +560,21 @@ int main(int argc, char *argv[]) {
}
UA_BrowseRequest_clear(&bReq);
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 */
UA_Client_disconnect(client);
UA_Client_delete(client);
}