create_messageT_create_messageCreateMessageCreateMessagecreate_message创建消息(算子)

名称

create_messageT_create_messageCreateMessageCreateMessagecreate_message — 创建新的空消息。

签名

create_message( : : : MessageHandle)

Herror T_create_message(Htuple* MessageHandle)

void CreateMessage(HTuple* MessageHandle)

void HMessage::HMessage()

void HMessage::CreateMessage()

static void HOperatorSet.CreateMessage(out HTuple messageHandle)

public HMessage()

void HMessage.CreateMessage()

def create_message() -> HHandle

描述

create_messagecreate_messageCreateMessageCreateMessageCreateMessagecreate_message 创建一个新的空消息。输出参数 MessageHandleMessageHandleMessageHandleMessageHandlemessageHandlemessage_handle 是新创建消息的句柄,用于在后续调用算子时识别该消息。

该消息作为类似字典的容器,可通过异步消息队列在应用程序的线程间传递。此外,HALCON 还提供字典(create_dictcreate_dictCreateDictCreateDictCreateDictcreate_dict)功能,用于在程序和函数内分组参数。

消息可存储任意数量的条目,每个条目均拥有唯一键值(字符串或整数)及其关联值。每个键值可指向控制参数元组或图标对象。这些数据分别通过 set_message_tupleset_message_tupleSetMessageTupleSetMessageTupleSetMessageTupleset_message_tupleset_message_objset_message_objSetMessageObjSetMessageObjSetMessageObjset_message_obj 存储至消息中,并可通过 get_message_tupleget_message_tupleGetMessageTupleGetMessageTupleGetMessageTupleget_message_tupleget_message_objget_message_objGetMessageObjGetMessageObjGetMessageObjget_message_obj 再次提取。

消息中存储的控制参数元组始终是原始数据的深度副本。因此调用 set_message_tupleset_message_tupleSetMessageTupleSetMessageTupleSetMessageTupleset_message_tuple 后原始数据可立即复用,且不影响消息内容。句柄是显著例外:存储句柄时仅复制句柄值,不复制其背后的资源。

如前所述,消息可通过异步消息队列在应用程序的线程间传递。多个生产者线程可使用 enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message 将数据追加至队列,多个接收者线程则可使用 dequeue_messagedequeue_messageDequeueMessageDequeueMessageDequeueMessagedequeue_message 从队列中提取数据。所有这些操作在内部均得到妥善同步。因此所有生产者和消费者均可安全访问队列,无需显式加锁。所有入队消息均由 enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message 操作复制生成。原始消息在调用 enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message 后可立即被重复使用,且不影响队列中的副本。

执行信息

参数

MessageHandleMessageHandleMessageHandleMessageHandlemessageHandlemessage_handle (输出控制)  message HMessage, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

新创建消息的句柄。

元素数量: MessageHandle == 1

断言: MessageHandle != 0

示例(HDevelop)

MessageHandles := []
for idx := 0 to 4 by 1
  create_message (MessageHandle)
  MessageHandles[idx]:= MessageHandle
endfor
* ...

结果

除非发生资源分配错误,否则返回 2 (H_MSG_TRUE)。

可能的后继

set_message_tupleset_message_tupleSetMessageTupleSetMessageTupleSetMessageTupleset_message_tuple, set_message_objset_message_objSetMessageObjSetMessageObjSetMessageObjset_message_obj

替代

create_dictcreate_dictCreateDictCreateDictCreateDictcreate_dict

另见

clear_messageclear_messageClearMessageClearMessageClearMessageclear_message, set_message_tupleset_message_tupleSetMessageTupleSetMessageTupleSetMessageTupleset_message_tuple, get_message_tupleget_message_tupleGetMessageTupleGetMessageTupleGetMessageTupleget_message_tuple, set_message_objset_message_objSetMessageObjSetMessageObjSetMessageObjset_message_obj, 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

模块

基础