Как написать строковый тег на сервере OPC UA в C#?
Я использую SDK от Unified Automation, который по сути представляет собой некоторый исходный код C#, который создает и запускает OPC UA Server. На данный момент я могу писать только в теги данных, которые либо инициализируются как целые числа, либо удваиваются из-за особенностей функций записи в коде. Существует функция записи для каждого типа данных, как показано:
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, я получаю необычный результат: см. Первую строку
Любая помощь приветствуется.