【English】5.16

本文探讨了在日常交流中如何恰当地使用'nevermind'和'donotbother'等表达来传达无需关注或继续的意思,同时也涉及了如何改变想法以及处理无关紧要的话题。文章通过具体情境展示了这些短语的应用,如回应是否介意某事、对待垃圾邮件的态度以及如何礼貌地取消先前的约定。

never mind

  1. do not bother
    Do not bother with him.
    Never mind him,he is just a jerk.
  2. change your mind
    Never mind, I do not want to go out anymore.
  3. tell sb. not to worry about sth.
    Never mind about what I just said. It is irrelevant.
  4. = you are welcome 不用谢

drop it 别提了!

ignore it.忽视它吧。
You should ignore it ,It is just spam email.
垃圾邮件。

A: Would you mind if I smoke here?

B:Sure.(省略了go ahead) 表示当然不介意。

in your mind 你有什么看法

on your mind 你在担心什么

package org.example.opcua; import org.eclipse.milo.opcua.sdk.client.OpcUaClient; import org.eclipse.milo.opcua.sdk.client.api.subscriptions.UaMonitoredItem; import org.eclipse.milo.opcua.sdk.client.api.subscriptions.UaSubscription; import org.eclipse.milo.opcua.stack.core.Identifiers; import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue; import org.eclipse.milo.opcua.stack.core.types.builtin.LocalizedText; import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId; import org.eclipse.milo.opcua.stack.core.types.builtin.unsigned.UInteger; import org.eclipse.milo.opcua.stack.core.types.enumerated.MonitoringMode; import org.eclipse.milo.opcua.stack.core.types.enumerated.TimestampsToReturn; import org.eclipse.milo.opcua.stack.core.types.structured.MonitoredItemCreateRequest; import org.eclipse.milo.opcua.stack.core.types.structured.MonitoringParameters; import org.eclipse.milo.opcua.stack.core.types.structured.ReadValueId; import javax.jms.JMSException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; /** * OPC UA客户端监控器(无加密连接) */ public class OpcUaMonitor implements AutoCloseable { private final OpcUaClient opcClient; /** * 初始化OPC UA客户端(无加密) * @param endpointUrl OPC UA服务器地址(如:opc.tcp://localhost:4840) */ public OpcUaMonitor(String endpointUrl) throws Exception { // 构建无加密的OPC UA客户端(Milo 1.0.6适配) this.opcClient = OpcUaClient.builder() .setEndpoint(endpointUrl) .setApplicationName(LocalizedText.english("OPC-UA-JMS-Bridge")) .setApplicationUri("urn:org:example:opcua-jms-bridge") .setRequestTimeout(UInteger.valueOf(5000)) // 超时设置 .build(); // 连接服务器 opcClient.connect().get(); System.out.println("OPC UA客户端已连接: " + endpointUrl); } /** * 订阅指定Tag,当值变化时发送到ActiveMQ * @param tagMappings TagID与JMS主题的映射关系 * @param mqProducer ActiveMQ消息生产者 */ public void subscribeTags(Map<String, String> tagMappings, ActiveMQProducer mqProducer) throws ExecutionException, InterruptedException { // 创建订阅(采样间隔1秒) CompletableFuture<UaSubscription> subscriptionFuture = opcClient.getSubscriptionManager() .createSubscription(1000.0); // 采样间隔(ms) UaSubscription subscription = subscriptionFuture.get(); List<MonitoredItemCreateRequest> monitorRequests = new ArrayList<>(); // 为每个Tag创建监控请求 for (String tagId : tagMappings.keySet()) { NodeId nodeId = NodeId.parseOrNull(tagId); if (nodeId == null) { System.err.println("无效的TagID格式: " + tagId); continue; } // 构建读取值的标识(监控"值"属性) ReadValueId readValueId = new ReadValueId( nodeId, Identifiers.AttributeId_Value, // 监控节点的"值"属性 null, null ); // 监控参数配置 MonitoringParameters monitoringParameters = new MonitoringParameters( opcClient.nextRequestHandle(), // 唯一请求ID 1000.0, // 采样间隔(ms) null, UInteger.valueOf(10), // 队列大小 true // 触发通知 ); // 创建监控项请求 MonitoredItemCreateRequest request = new MonitoredItemCreateRequest( readValueId, MonitoringMode.Reporting, // 启用报告模式 monitoringParameters ); monitorRequests.add(request); } // 订阅监控项并注册值变化回调 subscription.createMonitoredItems( TimestampsToReturn.Both, // 返回服务器和源时间戳 monitorRequests, (item, statusCode) -> { // 监控项创建成功后,注册值变化消费者 item.setValueConsumer((monitoredItem, dataValue) -> { handleTagValueChange(monitoredItem, dataValue, tagMappings, mqProducer); }); } ).get(); System.out.println("成功订阅 " + monitorRequests.size() + " 个Tag"); } /** * 处理Tag值变化事件,发送到ActiveMQ */ private void handleTagValueChange(UaMonitoredItem monitoredItem, DataValue dataValue, Map<String, String> tagMappings, ActiveMQProducer mqProducer) { try { // 获取TagID和对应的JMS主题 String tagId = monitoredItem.getReadValueId().getNodeId().toParseableString(); String jmsTopic = tagMappings.get(tagId); if (jmsTopic == null) { System.err.println("未找到TagID对应的JMS主题: " + tagId); return; } // 构建消息内容(包含值和时间戳) String message = String.format( "TagID: %s, Value: %s, ServerTimestamp: %s", tagId, dataValue.getValue().getValue(), // 实际值 dataValue.getServerTimestamp() // 服务器时间戳 ); // 发送到ActiveMQ mqProducer.sendToTopic(jmsTopic, message); } catch (JMSException e) { System.err.println("发送JMS消息失败: " + e.getMessage()); } } @Override public void close() throws Exception { if (opcClient != null) { opcClient.disconnect().get(); System.out.println("OPC UA客户端已断开连接"); } } }使用 <dependency> <groupId>org.eclipse.milo</groupId> <artifactId>milo-sdk-client</artifactId> <version>1.0.6</version> </dependency>优化代码
10-23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值