我正在使用来自 Unified Automation 的 SDK,它本质上是一些创建和运行 OPC UA 服务器的 C# 源代码。目前,由于代码中写入函数的性质,我只能写入初始化为整数或双精度的数据标签。每种数据类型都有一个写入函数,如下所示:
private void Write(int blockAddress, int offset, int value)
{
byte[] bytes = BitConverter.GetBytes(value);
Array.Copy(bytes, 0, m_registers, blockAddress + offset, bytes.Length);
}
private void Write(int blockAddress, int offset, double value)
{
byte[] bytes = BitConverter.GetBytes((float)value);
Array.Copy(bytes, 0, m_registers, blockAddress + offset, bytes.Length);
}
问题在于 BitConverter,因为转换字符串并不那么简单。到目前为止,我已经尝试使用:
private void Write(int blockAddress, int offset, string value)
{
byte[] bytes = Encoding.ASCII.GetBytes(value);
Array.Copy(bytes, 0, m_registers, blockAddress + offset, bytes.Length);
}
然而,后来在 Kepware 中阅读它时,我得到了一个不寻常的结果: 见第一行
任何帮助表示赞赏。