Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Сортировка


Сортировка

Сообщений 1 страница 3 из 3

1

доброго времени суток, !

я на контроллере использую 48 портов на вход ( дискретный вход)  , к каждому входу пользователь подключает устройство  с определенным номером(адресом)
затем в меню назначает какой порт = какому устройству, например:
порт №1 = устройство № 2
порт №2 = устройство № 4
порт №3 = устройство № 17
порт №4 = устройство № 7
порт №19 = устройство № 21
порт №32 = устройство № 1

в программе я это присваиваю так :

Dim Useport(48) As Byte

Useport(idport)= adrdevice

где Useport массив адресов устройств
idport - номер порта
adrdevice - адрес устройства

вроде все просто,  в меню  настроек я перелистываю № порта кнопками "вверх" и "вниз"  так :
incr idport  или decr idport
Upperline : Lcd " {168}op{191}:" ; idport              (  порт:1  порт:2  порт:3  ... порт:48

номера идут по порядку как и надо (на экране LCD)

но при работе пользователь должен  кнопками "вверх" и "вниз" выбирать не № порта а адрес устройства!
и если я при нажатии кнопок обрабатываю incr idport  или decr idport
то адреса устройств идут в разнобой ( така как их присвоии портам )
Upperline : Lcd " № device:" ;Useport(idport)             (  № device:2  № device:4 № device:14)

вопрос: как отсортировать вывод значения массива  по порядку по возрастающей?
чтоб получить

порт №32 = устройство № 1
порт №1 = устройство № 2
порт №2= устройство № 4
порт №4 = устройство № 7
порт №3= устройство № 17
порт №19= устройство № 21

0

2

так по логике, каждому порту присваивается уникальный адрес устройства
а раз так
то вам скорее всего может сделать на оборот всё?
массив из устройств (номера), а заполнять их портами
и сортировать не придется
потому как есть оператор сортировки, но он как бы сортирует внутри массив и непонятно как он будет (и может ли вообще делать) с каким-нить двумерным массивом

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

0

3

вы так не отсортируете..

отсортировать значения массива можно командой Sort но тогда потеряете соответствие портов из 1=4 2=14 3=2 будет 1=2  2=4  3=14

еще как вариант использовать все наоборот adrdevice(id)=idport если адреса до 256 пустые по условию пропускать, конешн вариант расточителен...

ну или писать функцию сортировки.



пока писал...    RDW все разъяснил ))))))))

Отредактировано Yuriy.pv (2016-12-25 23:41:56)

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Сортировка