Двойная запись в журнале событий

Стартовая страница Форумы Понять, как работает ПО Двойная запись в журнале событий

Просмотр 9 сообщений - с 31 по 39 (из 39 всего)
  • Автор
    Записи
  • #25049
    saprin8
    Участник

    Код в методе выглядит так:

    public double StringToDouble(double cnlNum)
    {
    string s = DecodeAscii(cnlNum);
    return (ScadaUtils.ParseDouble(s));
    }
    #25050
    saprin8
    Участник

    Попробовал метод MyStat, что выше — не помогло, все также приходит статус 3.

    #25057
    Mikhail
    Модератор

    Сделайте так:

    public double StringToDouble(double cnlNum)
    {
      try
      {
        string s = DecodeAscii(cnlNum);
        return ScadaUtils.ParseDouble(s);
      }
      catch
      {
        return 0;
      }
    }
    #25059
    saprin8
    Участник

    Не прокатило, странно, что значения каналов приходят нормально, а статус — нет

    #25060
    saprin8
    Участник

    В общем и целом решил оставить формулу StringToDouble; StringToDouble+число, при нормальной работе сервера вроде работает, а вот когда отключается, то дичь присылает и засирает журнал, но это можно исправить.

    #25067
    manjey73
    Участник

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

    #25068
    saprin8
    Участник

    Когда отваливается связь, то приходит ничего. Нет связи и обрабатывать нечего, может поэтому и приходит ошибка, а если через генератор ставлю 1, то он не может обработать правильно число, потому что приходит не строковое значение. Сделал свой серв, стринговую переменную линкую и все работает.

    #25069
    Romiros
    Участник

    Попробуйте сначала проверить статус:

    public double StringToDouble(double cnlNum)
    {
      if(Stat(cnlNum)>0)
      {
        string s = DecodeAscii(cnlNum);
        return (ScadaUtils.ParseDouble(s));
      }
      else
        return 0;
    }
    • Ответ изменён 3 года, 10 месяцев назад пользователем Mikhail.
    #25071
    Mikhail
    Модератор

    Параметр функции называется cnlNum. Если это номер канала, то он должен быть целым. Если это не номер канала, то лучше изменить наименование аргумента.

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