set_message_objT_set_message_objSetMessageObjSetMessageObjset_message_obj (算子)
名称
set_message_objT_set_message_objSetMessageObjSetMessageObjset_message_obj — 在消息中添加键/对象对。
签名
描述
set_message_objset_message_objSetMessageObjSetMessageObjSetMessageObjset_message_obj stores an object associated with a key in the
message, which behaves as a dictionary-like data container.
The message is denoted by the MessageHandleMessageHandleMessageHandleMessageHandlemessageHandlemessage_handle parameter.
ObjectDataObjectDataObjectDataObjectDataobjectDataobject_data is copied by the operation (copying the object data
in HALCON's object database, see copy_objcopy_objCopyObjCopyObjCopyObjcopy_obj), and can thus be
immediately reused. Both an empty object or an object tuple are considered
as a valid value that can be associated with the key.
If any data (tuple or object) was already associated with given key
(KeyKeyKeyKeykeykey), the old data is destroyed by set_message_objset_message_objSetMessageObjSetMessageObjSetMessageObjset_message_obj
and replaced by ObjectDataObjectDataObjectDataObjectDataobjectDataobject_data。
The KeyKeyKeyKeykeykey has to be a string or an integer.
String keys are treated case sensitive.
The object data for the given key can be retrieved again from the message
using get_message_objget_message_objGetMessageObjGetMessageObjGetMessageObjget_message_obj。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 未采用并行化处理。
此算子修改后续输入参数的状态:
在执行此算子时,若该参数值需在多个线程间使用,则必须对其访问进行同步。
参数
ObjectDataObjectDataObjectDataObjectDataobjectDataobject_data (输入对象) object(-array) → objectHObjectHObjectHObjectHobject
Object to be associated with the key.
MessageHandleMessageHandleMessageHandleMessageHandlemessageHandlemessage_handle (输入控制,状态被修改) message → HMessage, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Message handle.
元素数量:
MessageHandle == 1
限制:
MessageHandle != 0
KeyKeyKeyKeykeykey (输入控制) string → HTupleUnion[str, int]HTupleHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong)
Key string or integer.
元素数量:
Key == 1
示例(HDevelop)
create_message (Message)
read_image( Image, 'filename')
set_message_obj (Image, Message, 'my_image')
结果
If the operation succeeds, set_message_tupleset_message_tupleSetMessageTupleSetMessageTupleSetMessageTupleset_message_tuple 返回 2 ( H_MSG_TRUE )。否则将抛出异常。 Possible error conditions include
invalid parameters (handle or key) or resource allocation error.
可能的前趋
create_messagecreate_messageCreateMessageCreateMessageCreateMessagecreate_message
可能的后继
enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message,
set_message_tupleset_message_tupleSetMessageTupleSetMessageTupleSetMessageTupleset_message_tuple
替代
set_message_tupleset_message_tupleSetMessageTupleSetMessageTupleSetMessageTupleset_message_tuple
另见
create_messagecreate_messageCreateMessageCreateMessageCreateMessagecreate_message,
clear_messageclear_messageClearMessageClearMessageClearMessageclear_message,
set_message_tupleset_message_tupleSetMessageTupleSetMessageTupleSetMessageTupleset_message_tuple,
get_message_tupleget_message_tupleGetMessageTupleGetMessageTupleGetMessageTupleget_message_tuple,
get_message_objget_message_objGetMessageObjGetMessageObjGetMessageObjget_message_obj,
set_message_paramset_message_paramSetMessageParamSetMessageParamSetMessageParamset_message_param,
get_message_paramget_message_paramGetMessageParamGetMessageParamGetMessageParamget_message_param,
enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message,
dequeue_messagedequeue_messageDequeueMessageDequeueMessageDequeueMessagedequeue_message
模块
基础