Использование KpProps не для линии а для КП ?

Стартовая страница Форумы Разработка и интеграция Использование KpProps не для линии а для КП ?

Просмотр 15 сообщений - с 1 по 15 (из 22 всего)
  • Автор
    Записи
  • #14744
    manjey73
    Участник

    В драйвере Modbus используется для выбора режимов для всей линии (если правильно понял) ModbusRTU, ModbusASCII, ModbusTCP.

    Как я могу использовать это поле для каждого отдельного КП на линии ?

    Не могу разобраться что и где вызывать.

    CustomParams это вроде сортированный список. Вот как добавлять и не удалить уже добавленное для одной линии и читать из этого списка в KPxxxxLogic ?

    можно небольшой пример для понимания ?

    #14745
    Romiros
    Участник

    Это же свойства линии связи, а не КП. Обычно во всех программах одна линия связи — один тип связи.

    #14746
    manjey73
    Участник

    Ну как бы в настройках я сделал поле, которое связано именно с КП и это поле прекрасно меняется и сохраняется.

    kpProps.CustomParams[kpNum.ToString()] = textBox1.Text;

    Но вот вопрос, как достучаться к этой записи из драйвера ? то есть из секции кода KpXXXLogic ?

    В Modbus драйвере Михаил как-то передает в драйвер нумерованный список RTU, ASCII, TCP из этих полей согласно КП. А у меня лыжи не едут

    Просто в Modbus это используется для всей линии связи, я же хочу использовать для каждого КП на линии связи.

    private void btnOK_Click(object sender, EventArgs e)
            {
                kpProps.Modified = true;
                if (kpProps.Modified)
                {
                    kpProps.CmdLine = LineCmdText.Text;
                    if (!kpProps.CustomParams.ContainsKey(kpNum.ToString()))
                    {
                        kpProps.CustomParams.Add(kpNum.ToString(), textPass.Text);
                    }
                    else
                    {
                        kpProps.CustomParams[kpNum.ToString()] = textPass.Text;
                    }
    
                }
                DialogResult = DialogResult.OK;
            }

    Собственно вот. Можно сохранять что требуется. А вот как вытянуть ? или как передать при сохранении.

    • Ответ изменён 6 лет, 6 месяцев назад пользователем manjey73.
    • Ответ изменён 6 лет, 6 месяцев назад пользователем manjey73.
    #14749
    manjey73
    Участник

    Есть CustomParams.GetStringParam — вроде оно. Но не пойму как вытащить номер КП в драйвере ?

    #14750
    manjey73
    Участник

    Ла-лэй-ла-ла-лэй 🙂

    Нашел… Number

    CustomParams.GetStringParam(Number.ToString(), false, "555555")

    55555 это дефолт, вот как с этим оперировать пока не придумал…

    • Ответ изменён 6 лет, 6 месяцев назад пользователем manjey73.
    #14753
    Mikhail
    Модератор

    Если некий параметр задаётся для каждого КП, то рекомендую его записывать в поле командной строки. Пример

    #14758
    manjey73
    Участник

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

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

    В драйвере Меркурий так и сделано несколько параметров через разделитель ;
    но это еще и лишний код к тому же…

    • Ответ изменён 6 лет, 6 месяцев назад пользователем manjey73.
    #14761
    manjey73
    Участник

    Можно было бы сделать в интерфейсе несколько окон, и потом их склеивать в Командную строку, а в коде потом разбирать. При этом в интерфейсе окно Командной строки даже не отображать. Но неудобство в том, что окошко Командной строки есть в окне Коммуникатора «Опрос КП». Как ни прячь, а будет видно…

    #14767
    manjey73
    Участник

    Михаил, если можно, объясните как оперировать bool required и string defaultValue

    А то не особо разобрался применительно к CustomParams.GetStringParam

    #14768
    Romiros
    Участник

    manjey, разработайте один раз форму конфигурации с нужными полями для хранения в конфиге xml и используйте для разных драйверов, немного модернизируя. Или может вообще получится сделать универсальной, если драйверы похожи. Зато уже будете хранить что угодно и как угодно.

    #14769
    manjey73
    Участник

    Romiros если бы.
    Вот на пальцах. Несколько одинаковых приборов, пароли разные.
    В xml и так могу ввести пароль, если он останется одинаковым для всех на линии — работает.
    Если разные пароли ? — тиражирование файлов шаблонов ? глупо
    В командной строке для каждого счетчика на линии писать
    CE102M.xml;777776
    CE102M.xml;677777

    и так далее можно, но не красиво.
    Шаблон и так + — один и модернизируется под устройства, но с паролями это все не прокатывает… Да и мало ли у устройств может оказаться каких-нибудь настроек, которые могут меняться ?

    Я по этому и предлагаю Михаилу добавить в KpView и KpLogic механизм дублирования Dictionary и List , которые позволят проводить обмен данными между ними.
    По аналогии с Командной строкой и Пользовательскими. Думаю двух таких механизмов будет достаточно для создания UI настроек драйвера. Нужно два окошка, делаем два дубля Dictionary, или один Dictionary и один List. Или 5 экземпляров делаем и так далее…. Не нужно, ну и не нужно…
    Я так понимаю механизм с Dictionary уже есть — это Пользовательские настройки. Просто сделать его размножающимся…

    #14770
    Romiros
    Участник

    Если разные пароли ? — тиражирование файлов шаблонов ? глупо

    Под каждый КП на линии связи создаётся свой xml файл. У Вас же для трёх КП модбас будут три файла xml. Точно также для того же ек260 для каждого отдельный файл. В чем проблема? Количество xml файлов по-моему не та проблема с которой нужно заморачиваться. Просто использование одного файла для всех устройств не даёт гибкости. Вдруг завтра они будут различаться не только паролем, но и ещё двумя десятками параметров. Плюс в своей форме настройки можно сделать более удобно.

    #14777
    manjey73
    Участник

    Если приборы одинаковы, то файл XML используется один и тот же, те же счетчики Энергомера. Нет там ничего разного, кроме пароля, если он задан для каждого счетчика свой. Когда приборы отличаются, те же EK260 могут отличаться, в зависимости от конфигурации, тогда да… xml разные

    #14778
    Romiros
    Участник

    Тогда нужны CustomParams для КП, как у линии связи. Но вообще это не стандартный подход(не единообразный). Мне когда было лень писать юзер интерфейс для конфигурации я тоже CustomParams использовал :).

    #14779
    manjey73
    Участник

    Ну вот о чем и речь, просьба Михаилу продумать возможность создания CustomParams для КП. Что-то вроде шаблона сделать, чтобы можно было создавать разные параметры при необходимости, а не только строковые.

    Ну и соответственно немного упростит создание UI для драйверов.

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