Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 23

Тема: Для тех, кто имеет достаточный опыт программирования

  1. #11
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,246

    По умолчанию

    Ааааа, да я хочу услышать кто как бы поступил, если бы пользователь захотел посмотреть значения с нескольких регистров, например он задал бы 51 ворд, а потом ему захотелось 8 реал и 10 реал, вот появилось три строки, есть несколько путей, по одиночке прочитать требуемые значения, второй вариант прочитать группу из 43 регисров из которых только пять полезных и третий вариант прочитать двумя запросами чеыре регистра и один регистр. Возвращаемся к массиву строк, нужно ПОУ которое преобразует эти строки в массив структур, в каждой из которых будет отражено начальный адрес регистра и количество регистров

  2. #12
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,290

    По умолчанию

    Так понял что нужно что-то откуда-то как-то извлечь и некоторым образом придать необходимый вид ?
    Есть подозрение что нужно типа мастера который динамический на уровне оператора
    Последний раз редактировалось Валенок; 19.09.2013 в 10:50.

  3. #13
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,290

    По умолчанию

    если бы пользователь захотел посмотреть значения с нескольких регистров, например он задал бы 51 ворд, а потом ему захотелось 8 реал и 10 реал, вот появилось три строки
    Вот такой кусочек поможет решить часть проблем ?
    Код:
    enum шо_вообще_есть{енто_инт, энто_реал, энто_стринг}
    struct  незнамо_что {шо_это: шо_вообще_есть; размер:word;  указатель: dword}
    
    function анукадайка(оно : незнамо_что):string
    var
    	Pинт : pointer to int;
    	Pреал: pointer to real;
    	Pстринг : pointer to string;
    begin
    	Pинт:=Pреал:=Рстринг:=оно.указатель;
    	case оно.шо_это of
    		енто_инт: анукадайка := int_to_string(Ринт^);
    		енто_реал: анукадайка := real_to_string(Рреал^);
    		енто_стринг: анукадайка := Pстринг^;
     	еlse
    		анукадайка := concat('фигня какая-то в ', word_to_string(оно.размер));
    		анукадайка := concat(анукадайка, ' байт');
    	end_case
    end

  4. #14
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,290

    По умолчанию

    нужно ПОУ которое преобразует эти строки в массив структур, в каждой из которых будет отражено начальный адрес регистра и количество регистров
    Синтаксический разбор строки для вытягивания значений для полей данной структуры ?
    А строка вида 'имя1=значение1;имя2=значение2;...' ?
    Последний раз редактировалось Валенок; 19.09.2013 в 11:35.

  5. #15
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,246

    По умолчанию

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

    Просто карта (ключ,значение) одной строкой мне кажется не подойдет, кроме того что я пошлю запросы и получу ответы, потребуется ведь еще обрабатывать где было 2-х,а где 4-х байтовое значение

  6. #16
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,290

    По умолчанию

    Один из ключей определяет "шо_это". Кол-во регистров вытекает автоматом.
    Последний раз редактировалось Валенок; 19.09.2013 в 12:40.

  7. #17
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,246

    По умолчанию

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

    ЗЫ возможно предложенное решение, если будет конечно, можно будет применить и на ПК, вдруг оно окажется оптимальнее

  8. #18
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,290

    По умолчанию

    на прямую его в ST не переведешь
    Сделал список структур и запустил его и занимаешься своими делами.

  9. #19
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    У меня есть готовая программа, где с панели вводится день месяц год, и обрабатывается структура, выдающая большое количество значений на дисплей,в ответ на запрос.
    Там наработка, количество выпущенных изделий, по сменно и на группе оборудования и на каждой машине.
    Если нужно, то могу сбросить в личку. Алгоритм примерно такой-же.
    Писал где-то года 1-2 назад.
    Работает.

  10. #20
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,246

    По умолчанию

    вот мой код на яве
    private void toProcess(ArrayList<String> stuff) {
    arr = new TreeMap<>();
    for (String line : stuff) {
    StringTokenizer st = new StringTokenizer(line,";");
    int uno = Integer.parseInt(st.nextToken());
    String duo = st.nextToken();
    TrendUnit tre = new TrendUnit();
    tre.setRegis(uno);
    StringBuilder sb = new StringBuilder();
    sb.append(uno/10000).append(uno/1000).append(uno/100).append(uno/10).append(uno%10);
    switch(duo) {
    case "Word" :
    tre.setType(1);
    break;
    case "DWord" :
    case "Real" :
    tre.setType(2);
    break;
    default:tre.setType(0);
    }
    sb.append(tre.getType());
    if (!arr.containsKey(sb.toString())) {
    arr.put(sb.toString(), tre);
    }
    }
    int iter = 0;
    int oldRegis = -1;
    rrr = new TreeMap<>();
    RequestUnit unit = null;
    for (Map.Entry<String,TrendUnit> entry : arr.entrySet()) {
    if (oldRegis==-1 || (entry.getValue().getRegis()-oldRegis)>10) {
    unit = new RequestUnit();
    unit.setRef(entry.getValue().getRegis());
    rrr.put(iter, unit);
    iter++;
    }
    int buf = (entry.getValue().getRegis()+(entry.getValue().get Type()))-unit.getRef();
    unit.setCount(buf);
    oldRegis = entry.getValue().getRegis();
    }
    }
    где
    TreeMap < String,TrendUnit > arr;
    и
    TreeMap < Integer,RequestUnit > rrr
    соответственно
    public class TrendUnit {
    private int regis,type;
    private float value;

    public int getRegis() {
    return regis;
    }

    public void setRegis(int regis) {
    this.regis = regis;
    }

    public float getValue() {
    return value;
    }

    public void setValue(float value) {
    this.value = value;
    }

    public int getType() {
    return type;
    }

    public void setType(int type) {
    this.type = type;
    }
    @Override
    public String toString() {
    return regis+" "+type+" "+value;
    }
    }
    и
    public class RequestUnit {
    private int ref;
    private int count;

    public int getRef() {
    return ref;
    }

    public void setRef(int ref) {
    this.ref = ref;
    }

    public int getCount() {
    return count;
    }

    public void setCount(int count) {
    this.count = count;
    }
    }
    как бы не знаю, стоит вообще это на ST переводить или вообще от этой идеии отказаться, тут где то промелькнуло от разработчиков, что каким то образом КДС v3 стала поддерживать яву

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Оборудование для программирования
    от kest547 в разделе Подбор Оборудования
    Ответов: 4
    Последнее сообщение: 02.12.2011, 15:59
  2. примеры для программирования
    от РоманычЪ в разделе ПЛК1хх
    Ответов: 24
    Последнее сообщение: 26.09.2011, 09:27
  3. Ответов: 2
    Последнее сообщение: 28.04.2008, 15:56

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •