我使用的是来自Unified Automation的SDK,该SDK本质上是一些C#源代码,用于创建和运行OPC UA服务器。目前,由于代码中写入功能的性质,我只能写入初始化为整数或双精度的数据标签。每种数据类型都有一个写函数,如下所示:
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中阅读它时,我得到了一个异常的结果: See the first line
任何帮助表示赞赏。