2015-11-03 16 views
2

Я думаю, что это то, что, вероятно, было решено раньше, и если бы у меня был правильный математический словарь, я мог бы, возможно, просто его перевести. Я пишу приложение, которое генерирует код для микроконтроллеров, таких как Arduino, и часть этого процесса отображает соединения, необходимые устройству, например датчику, самому микроконтроллеру.Алгоритм для сопоставления соединений

Проблема заключается не в том, что все соединения на микроконтроллере одинаково способны, некоторые могут выполнять только цифровой ввод-вывод, некоторые могут выполнять аналоговый аналоговый выход IO +, некоторые могут использовать цифровой аналоговый вход IO +, а некоторые могут делать как цифровые и аналогового ввода-вывода. Так что, если, например, у меня закончились чисто цифровые соединения IO и потребовалось больше, я бы все же мог использовать, например, цифровой вход IO + Analog In. Но если бы это был единственный цифровой аналоговый IO + в pin, и тогда мне действительно нужна была эта функциональность для другого соединения, тогда мне нужно было бы переместить его на другой тип булавки.

Так что в принципе мне нужен алгоритм, который может создать такой вид отображения, если он вообще возможен. Проблема немного в том, что детская игра с формованными блоками и соответствующими отверстиями, некоторые формы могут поместиться в несколько отверстий, некоторые не могут понять, можете ли вы поместить все данные блоки в отверстия?

+0

Похоже, вы пришли к удовлетворительному ответу на этот случай, но в целом вам нужен термин «Задача назначения». –

ответ

0

Хорошо, это было не так плохо, как я думал, я решил это самостоятельно.

Таким образом, мы имеем четыре категории функциональности (DIO + AIO, DIO + AI, DIO + AO, DIO только)

1) Назначить любые запрашиваемое соединение для наиболее функционального штифта (DIO + AIO), если Тереза недостаточно, его не будет работать

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

3) Соединения AI не могут использовать контакты AO и наоборот, поэтому они оба конкурируют за свободные контакты AIO в этой точке, если есть больше переполненных AI & AO-соединений, то доступны AIO-штырьки , его отказ, в противном случае назначить переполненные AI & соединения AO с контактами AIO.

4) Назначьте любые переполненные цифровые соединения в свободные контакты AI и AO, если их недостаточно.

5) Если вы здесь, у вас должна быть связная карта соединений!

Смежные вопросы