Автор Тема: Траблики с меню  (Прочитано 6172 раз)

0 Пользователей и 1 Гость просматривают эту тему.

pumpkin

  • Модератор Раздела
  • Профи
  • *
  • Сообщений: 240
  • Карма: 2
  • Пол: Мужской
  • Это Я :-)
    • Просмотр профиля
Re: Траблики с меню
« Ответ #15 : 10 Ноябрь 2013, 14:59:32 »
Там, в первом вопросе проблема в том, что глобальные статические переменные можно инициализировать только константами и литеральными строками (типа "юроюлрпаобаьрвтчпак").
Так что придется обходить одним из вышеперечисленных способов.

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1719
  • Карма: 13
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Re: Траблики с меню
« Ответ #16 : 10 Ноябрь 2013, 15:14:06 »
Ну я исходил из того, что строки - это суть массивы. Какая хрен разница - строка или массив, думал поменять пару строк где-то и все. И в меню передавать тупо массив. И макрос pgm_read_byte один на все  типы массивов, только там он почему то pgm_read_word...
« Последнее редактирование: 10 Ноябрь 2013, 15:18:09 от admin »
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

pumpkin

  • Модератор Раздела
  • Профи
  • *
  • Сообщений: 240
  • Карма: 2
  • Пол: Мужской
  • Это Я :-)
    • Просмотр профиля
Re: Траблики с меню
« Ответ #17 : 10 Ноябрь 2013, 15:31:33 »
Цитировать
Жалко всю таблицу в код тащить, там нужен то десяток символов, а в твоем приемере она вообще будет в озу висеть. И раскиданы они по всему полю...
Ну это-то да, если бы не русская П, то в 85 уложилось бы. Можно попробовать оптимизировать.

Хотя избавление от конструкций вида   BYTE Version  [] PROGMEM = {_P_ , _L_ , _POINT_ , _1_, _0_, _END_}  ; //"PLAT.10"   должно компенсировать эти байты.
« Последнее редактирование: 10 Ноябрь 2013, 16:46:06 от pumpkin »

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1719
  • Карма: 13
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Re: Траблики с меню
« Ответ #18 : 10 Ноябрь 2013, 16:53:26 »
Как это интерестно избавится? Эта конструкция хотя бы леко редактируется. А на сегментник все равно строго определенные байты нужны, и нкуда от этого не денешся. Дефайны НЕ компилируюся в код в данном случае кроме цифр, а служат основой для удобного задания массивов псевдострок. Правда с названием меню приходится помучатся, но таково требование заказчика - поставить семисегментик. Он еще с драйвером, управляется по SPI.
« Последнее редактирование: 10 Ноябрь 2013, 16:59:24 от admin »
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

pumpkin

  • Модератор Раздела
  • Профи
  • *
  • Сообщений: 240
  • Карма: 2
  • Пол: Мужской
  • Это Я :-)
    • Просмотр профиля
Re: Траблики с меню
« Ответ #19 : 10 Ноябрь 2013, 17:01:44 »
Имею в виду избавиться, если пойти по вот этому пути:
Цитировать
MENU_ITEM(Menu_1, Menu_2, Menu_3, NULL_MENU, NULL_MENU, NULL, NULL, "PL.10^");
MENU_ITEM(Menu_2, Menu_3, Menu_1, NULL_MENU, NULL_MENU, NULL, NULL, "0BG-^");
MENU_ITEM(Menu_3, Menu_1, Menu_2, NULL_MENU, NULL_MENU, NULL, NULL, "CT0-^");

void PrintLED_F(BYTE *mass ){
  char* table = "\\x00\\x35\\x77\\x55\\xff\\x00............. ";
  SPI_Init();
  STB_LOW;
  OutLED(DispAdressSet);

  while (pgm_read_byte(mass)!=\'^\'){
    if (pgm_read_byte(mass)==\'.\'){
      pgm_read_byte(mass++);
      OutLED(table[pgm_read_byte(mass++)]|0x80); //Выводим символ с точкой
      }
    OutLED(table[pgm_read_byte(mass++)]);
  }
  STB_HI;
}

Тут еще легче радактируется.
« Последнее редактирование: 10 Ноябрь 2013, 17:03:52 от pumpkin »

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1719
  • Карма: 13
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Re: Траблики с меню
« Ответ #20 : 10 Ноябрь 2013, 17:11:24 »
Ага, таблицы я часто использую, особенно когда ее размер меньше, чем код программной реализации того же функцианала. Но в данном случае таблица занимает лишнее место в памяти. В массиве меню УЖЕ  есть вся необходимая информация, просто "кодировка не та". И больше никогда не пригодися для других дисплеев, так как разводить плату с сегментниками  и драйвером лучше и нужно всегда одинаково. Поэтому "всего-то" надо как то впихнуть массив вместо строки.
« Последнее редактирование: 10 Ноябрь 2013, 17:15:04 от admin »
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

pumpkin

  • Модератор Раздела
  • Профи
  • *
  • Сообщений: 240
  • Карма: 2
  • Пол: Мужской
  • Это Я :-)
    • Просмотр профиля
Re: Траблики с меню
« Ответ #21 : 10 Ноябрь 2013, 17:20:10 »
Цитировать
Поэтому "всего-то" надо как то впихнуть массив вместо строки. 
Ну тогда инициализировать пустыми, а потом в коде присваивать.
Или не использовать это меню as is, а видоизменьить меню по-своему как-нибудь.
« Последнее редактирование: 10 Ноябрь 2013, 17:21:55 от pumpkin »

Thomaslism

  • Новичок
  • *
  • Сообщений: 1
  • Карма: 0
  • Пол: Мужской
  • Это Я :-)
    • Просмотр профиля
Траблики с меню
« Ответ #22 : 11 Апрель 2016, 20:59:40 »
Перечитав некоторую инфу по С я так понял что нужно прописывать что-то вроде

wc.lpszMenuName=НАЗВАНИЕ_ФУНКЦИИ_С_МЕНЮ;

Где можно найти инфу о том как прописывать эту функцию?

_______________
 
Белоснежка И Охотник 2

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1719
  • Карма: 13
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Re: Траблики с меню
« Ответ #23 : 12 Апрель 2016, 03:28:06 »
Перечитав некоторую инфу по С я так понял что нужно прописывать что-то вроде

wc.lpszMenuName=НАЗВАНИЕ_ФУНКЦИИ_С_МЕНЮ;

Где можно найти инфу о том как прописывать эту функцию?

_______________
 
Белоснежка И Охотник 2

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

http://www.sbp-program.ru/c/sbp-c-function-pointer.htm
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

kodak_service

  • Права бана
  • Эксперт
  • *
  • Сообщений: 12208
  • Карма: 135
  • Пол: Мужской
  • Бесплатная информация недостоверна
    • Просмотр профиля
Re: Траблики с меню
« Ответ #24 : 12 Апрель 2016, 09:05:11 »
Ёпрст... :o
Андрей, ты начал общаться с ботами? ;)
Запчасти Noritsu, Fuji & Konica со склада и под заказ,
ремонт лазеров и АОМ-драйверов Noritsu, Fuji и Agfa,
документация, сервис, техн. консультации.
Рабочий телефон (812) 275-29-51  kodak_service@mail.ru

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1719
  • Карма: 13
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Re: Траблики с меню
« Ответ #25 : 12 Апрель 2016, 10:20:07 »
Боты какие то умные пошли, по Си вопросы задают...  :o
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

kodak_service

  • Права бана
  • Эксперт
  • *
  • Сообщений: 12208
  • Карма: 135
  • Пол: Мужской
  • Бесплатная информация недостоверна
    • Просмотр профиля
Re: Траблики с меню
« Ответ #26 : 12 Апрель 2016, 10:30:17 »
Думаю, что это полуавтоматический бот (типа первых машин для игры в шахматы с человеком внутри)  ;D
Запчасти Noritsu, Fuji & Konica со склада и под заказ,
ремонт лазеров и АОМ-драйверов Noritsu, Fuji и Agfa,
документация, сервис, техн. консультации.
Рабочий телефон (812) 275-29-51  kodak_service@mail.ru