自学内容网 自学内容网

OPC学习笔记

一. 解决使用milo读取OPC设备字符串类型时,出现中文和特殊符号乱码的情况

  1. 解决前,读取字符串:你好

在这里插入图片描述
2. 解决后,读取字符串:你好
在这里插入图片描述
3. 解决前,读取字符串:165℃
在这里插入图片描述

  1. 解决后,读取字符串,165℃
    在这里插入图片描述

  2. 解决核心代码
    在取到值时转码

//  如果值是字符串 转码 ,不然会出现中文或特殊符号乱码
if (value instanceof String) {
 value = decodeGBK((String) value);
   }

 // 解码GBK乱码的方法
    private String decodeGBK(String value) {
        try {
            // 将乱码字符串按ISO-8859-1编码转为字节数组
            byte[] bytes = value.getBytes(StandardCharsets.ISO_8859_1);

            // 使用GBK解码
            return new String(bytes, Charset.forName("GBK"));
        } catch (Exception e) {
            return value;  // 解码失败时返回原始值
        }
    }

二 为什么会在 OPC UA 中出现乱码

OPC UA 协议与编码:OPC UA 协议支持多种数据类型和编码格式,服务器和客户端之间传输的文本数据通常需要进行正确的编码和解码。如果在数据传输时未指定明确的编码方式,或者客户端和服务器之间使用了不同的编码格式,读取时可能就会出现乱码。

设备的默认编码:某些设备(如 PLC 或传感器)可能使用特定的编码格式(如 GBK 或 Windows-1252)。如果 OPC UA 客户端没有正确处理这些编码,读取到的数据就可能是乱码。

所以如果以后其他设备有别的编码方式,可能还需要增加解码逻辑。

持续更新…

end 2024/11/11

三、写入数组点位时,要么全部写入,要么只能写入数组中某个元素的值,不可以写入不全的数组点位

end 2024/11/12


原文地址:https://blog.csdn.net/weixin_42469135/article/details/143683175

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!