Стартовая страница › Форумы › Разработка и интеграция › Использование KpProps не для линии а для КП ?
- В этой теме 21 ответ, 3 участника, последнее обновление 6 лет, 6 месяцев назад сделано
manjey73.
-
АвторЗаписи
-
11.02.2020 в 11:24 #14744
manjey73УчастникВ драйвере Modbus используется для выбора режимов для всей линии (если правильно понял) ModbusRTU, ModbusASCII, ModbusTCP.
Как я могу использовать это поле для каждого отдельного КП на линии ?
Не могу разобраться что и где вызывать.
CustomParams это вроде сортированный список. Вот как добавлять и не удалить уже добавленное для одной линии и читать из этого списка в KPxxxxLogic ?
можно небольшой пример для понимания ?
11.02.2020 в 15:59 #14745Romiros
УчастникЭто же свойства линии связи, а не КП. Обычно во всех программах одна линия связи — один тип связи.
11.02.2020 в 16:22 #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; }Собственно вот. Можно сохранять что требуется. А вот как вытянуть ? или как передать при сохранении.
11.02.2020 в 16:37 #14749
manjey73УчастникЕсть CustomParams.GetStringParam — вроде оно. Но не пойму как вытащить номер КП в драйвере ?
11.02.2020 в 16:58 #14750
manjey73УчастникЛа-лэй-ла-ла-лэй 🙂
Нашел… Number
CustomParams.GetStringParam(Number.ToString(), false, "555555")55555 это дефолт, вот как с этим оперировать пока не придумал…
-
Ответ изменён 6 лет, 6 месяцев назад пользователем
manjey73.
11.02.2020 в 17:57 #14753
MikhailМодераторЕсли некий параметр задаётся для каждого КП, то рекомендую его записывать в поле командной строки. Пример
11.02.2020 в 21:51 #14758
manjey73УчастникВ поле Командной строки записано имя файла шаблона как бы, не красиво туда пихать еще и пароль того же счетчика.
з.ы. на будущее, сделайте создаваемые поля для настроек. Кроме пароля мало ли что может понадобиться, и кроме имени шаблона. Не очень красиво пихать все в одну строку, хотя и это можно, в том числе и имя шаблона. Но удобнее и красивее когда поля разные.
В драйвере Меркурий так и сделано несколько параметров через разделитель ;
но это еще и лишний код к тому же…-
Ответ изменён 6 лет, 6 месяцев назад пользователем
manjey73.
11.02.2020 в 22:29 #14761
manjey73УчастникМожно было бы сделать в интерфейсе несколько окон, и потом их склеивать в Командную строку, а в коде потом разбирать. При этом в интерфейсе окно Командной строки даже не отображать. Но неудобство в том, что окошко Командной строки есть в окне Коммуникатора «Опрос КП». Как ни прячь, а будет видно…
12.02.2020 в 09:59 #14767
manjey73УчастникМихаил, если можно, объясните как оперировать bool required и string defaultValue
А то не особо разобрался применительно к CustomParams.GetStringParam
12.02.2020 в 10:04 #14768Romiros
Участникmanjey, разработайте один раз форму конфигурации с нужными полями для хранения в конфиге xml и используйте для разных драйверов, немного модернизируя. Или может вообще получится сделать универсальной, если драйверы похожи. Зато уже будете хранить что угодно и как угодно.
12.02.2020 в 10:30 #14769
manjey73УчастникRomiros если бы.
Вот на пальцах. Несколько одинаковых приборов, пароли разные.
В xml и так могу ввести пароль, если он останется одинаковым для всех на линии — работает.
Если разные пароли ? — тиражирование файлов шаблонов ? глупо
В командной строке для каждого счетчика на линии писать
CE102M.xml;777776
CE102M.xml;677777и так далее можно, но не красиво.
Шаблон и так + — один и модернизируется под устройства, но с паролями это все не прокатывает… Да и мало ли у устройств может оказаться каких-нибудь настроек, которые могут меняться ?Я по этому и предлагаю Михаилу добавить в KpView и KpLogic механизм дублирования Dictionary и List , которые позволят проводить обмен данными между ними.
По аналогии с Командной строкой и Пользовательскими. Думаю двух таких механизмов будет достаточно для создания UI настроек драйвера. Нужно два окошка, делаем два дубля Dictionary, или один Dictionary и один List. Или 5 экземпляров делаем и так далее…. Не нужно, ну и не нужно…
Я так понимаю механизм с Dictionary уже есть — это Пользовательские настройки. Просто сделать его размножающимся…12.02.2020 в 11:55 #14770Romiros
УчастникЕсли разные пароли ? — тиражирование файлов шаблонов ? глупо
Под каждый КП на линии связи создаётся свой xml файл. У Вас же для трёх КП модбас будут три файла xml. Точно также для того же ек260 для каждого отдельный файл. В чем проблема? Количество xml файлов по-моему не та проблема с которой нужно заморачиваться. Просто использование одного файла для всех устройств не даёт гибкости. Вдруг завтра они будут различаться не только паролем, но и ещё двумя десятками параметров. Плюс в своей форме настройки можно сделать более удобно.
12.02.2020 в 13:58 #14777
manjey73УчастникЕсли приборы одинаковы, то файл XML используется один и тот же, те же счетчики Энергомера. Нет там ничего разного, кроме пароля, если он задан для каждого счетчика свой. Когда приборы отличаются, те же EK260 могут отличаться, в зависимости от конфигурации, тогда да… xml разные
12.02.2020 в 14:04 #14778Romiros
УчастникТогда нужны CustomParams для КП, как у линии связи. Но вообще это не стандартный подход(не единообразный). Мне когда было лень писать юзер интерфейс для конфигурации я тоже CustomParams использовал :).
12.02.2020 в 15:38 #14779
manjey73УчастникНу вот о чем и речь, просьба Михаилу продумать возможность создания CustomParams для КП. Что-то вроде шаблона сделать, чтобы можно было создавать разные параметры при необходимости, а не только строковые.
Ну и соответственно немного упростит создание UI для драйверов.
-
Ответ изменён 6 лет, 6 месяцев назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.