Ошибка формулы

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Записи
  • #28314
    manjey73
    Участник
    public class Formulas1 : Scripts {
    public CnlData CalcCnlData150() { return ToCnlData(ds18b20(28-c6a1359616ff)); }
    }
    }

    Формула в скриптах ds18b20 во входном параметре имеет string который идентифицирует имя файла датчика в папке ScadaComm/Log

    Но при этом ошибка сервера выглядит так

    Ошибка при компиляции исходного кода скриптов и формул:
        (385,63): error CS0103: The name 'c6a1359616ff' does not exist in the current context

    а где собственно часть строки «28-» ????

    Собственно недоделанная формула, чтобы было понятнее

    // Чтение датчиков Dallas ds18b20 из файла, созданного скриптом в crontab
    string pathLog = @"/var/log/scada/ScadaComm/Log";
    
    public double ds18b20(string dsID)
    {
    double res = 0;
    string filePath = Path.Combine(pathLog, dsID);
    string[] DataDs = File.ReadAllLines(filePath, Encoding.UTF8);
    int iOfChar = DataDs[1].IndexOf("t=");
    res = Convert.ToDouble(iOfChar);
    return res;
    }

    Пока пытаюсь в расчетный канал просто вынуть индекс из требуемой строки
    и данные, которые находятся в файле датчика

    9b 01 55 00 7f ff 0c 10 e1 : crc=e1 YES
    9b 01 55 00 7f ff 0c 10 e1 t=25687
    

    у формулы всего один параметр — строка, но ошибка указывает только на часть строки, а именно на c6a1359616ff а не на полное имя 28-c6a1359616ff

    #28316
    manjey73
    Участник

    Если вписать сразу в переменную пути

    string pathLog = @»/var/log/scada/ScadaComm/Log/28-c6a1359616ff»;

    и использовать при чтении файла, то все работает.. Но тогда на каждый датчик придется копировать формулы, что неудобно

    #28317
    manjey73
    Участник

    Тормоз, строку для формулы надо экранировать ds18b20(«28-c6a1359616ff») 🙂

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Для ответа в этой теме необходимо авторизоваться.