Страница 226 из 386
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср сен 23, 2015 16:19:40
ks0
Тоже не читал книги, и пхп немного знал когда он был еще простой как три копейки. Ну а так интерфейсы это в объекто-ориентированных си-подобных языках, т.к. множественное наследование запрещено, а если хочется, то один класс предок с наследованием реализации, и сколько угодно интерфейсов с наследованием объявлений методов, которые потом надо будет реализовать. Тогда кто-то со стороны уже будет заранее, зная тот-же интерфейс, и знать как обратиться к этому новому классу.
Re: Вопросы по С/С++ (СИ)
Добавлено: Сб сен 26, 2015 11:43:59
kalobyte
в с++ интерфейсов не было, там были абстгактные методы
я тогда понял, что можно использовать один метод display в моем быдловузном проекте, но сделать несколько абстгактных методов и реализаций
потому что в реальности у меня могло подключаться 2 или 3 разных индикатора с разными протоколами управления, а в главном файле не должно было быть 100500 разных методов управления индикаторами, потому что главный файл писал другой человек, который в железе нихера не понимает
в пхп для этого решили запилить интерфейсы
все оказалось довольно просто
Re: Вопросы по С/С++ (СИ)
Добавлено: Пн сен 28, 2015 15:01:26
Gordon Shumway
Доброго дня, уважаемые знатоки !
Помогите чайнику ! Всегда программировал на Баскоме, а тут попался очень заковыристый дисплей, упоминания о нем и тестовые подключалки нашел только на немецких сайтах, да и то всего две штуки.
Там прилагались архивы, как я понял - на Си. Тестовые программы. А вот как их скомпилировать в Хекс - так и не въехал.
Оба архива приложены, вроде как под мегу8 авторы компилировали. Сделайте пару хексов, пожалуйста !
PS Дисплей от телефонного аппарата Siemens Optipoint, интерфейс - SPI. 24х2.
Спасибо заранее !
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт сен 29, 2015 02:00:46
Rtmip
Пожалуйста

Надеюсь "файл.eep" сами "перегоните" в нужный формат для заливки в еепром атмеги8?
Оба хекса под 8 МГц.
В проекте, где есть энкодер и уарт не разбирался, что и куда подключается, какая скорость и тд,
думаю это неважно для проверки дисплея.
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт сен 29, 2015 03:01:44
WiseLord
Да, всё что понадобилось для второго архива (myLoS-spi) - зайти в каталог с Makefile и сделать make. Можно было бы и не спрашивать.
Для первого тоже, наверное, простенького Makefile было бы достаточно, но лениво.
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт сен 29, 2015 06:10:14
Gordon Shumway
Rtmip писал(а):
Надеюсь "файл.eep" сами "перегоните" в нужный формат для заливки в еепром атмеги8?
Конечно ! Огромное спасибо, все протестилось, все показывает !
Обнаружил три модификации дисплея одного и того же телефонного аппарата. Два из них отлично завелись, третий (самый свежий, 2010 года) ни в какую !
Причем первые два - взаимозаменяемы (проверил на аппаратах и тестовой плате), третий - меняется только на такой же. Вот интересно...
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт сен 29, 2015 10:02:35
Victor94
Приветствую, есть задача, что-то вроде "интерпретации" кода.
Есть массив int, который пока заполняю руками:
массив[элемент 0] = тут я определяю, что это будет за действие.(Деление/Умножение/Сложение/Вычитание)
массив[элемент 1] и массив[элемент 2] = целая часть числа.
массив[элемент 3] и массив[элемент 4] = часть после "точки".
Не знаю как правильно из 1,2,3,4 элементов вынуть float число.
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт сен 29, 2015 11:00:17
ARV
float f;
f = массив[1] + 256*массив[2] + 1E-5*(массив[3] + 256*массив[4]);
как-то так... правда, массив в этом примере байтовый, а не int. т.е. char - int-ы отводить для этих целей бессмысленно
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт сен 29, 2015 14:55:44
WiseLord
ARV, а почему 1E-5? Ведь char-ами 3 и 4 мы максимум получим в этом случае 0.65535 - числа вроде 0.7, 0.9 так не представимы.
А вообще задача какая-то странная, на самом деле. Не видя всего кода, уже ощущение каких-то костылей появляется.
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт сен 29, 2015 15:15:55
ARV
WiseLord писал(а):ARV, а почему 1E-5? Ведь char-ами 3 и 4 мы максимум получим в этом случае 0.65535 - числа вроде 0.7, 0.9 так не представимы.
а почему бы и нет? ведь
WiseLord писал(а):задача какая-то странная, на самом деле. Не видя всего кода, уже ощущение каких-то костылей появляется.
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт сен 29, 2015 16:36:31
Victor94
А кода собственно пока что и нет, задача встала не так уж давно

Но примерную суть выражу так:
Есть массив int code[256];
Который заполнен данными.
Спойлер
Код: Выделить всё
code[0] = 0x01 // Действите сложения двух элементов
code[1] = 0x00 // Целая часть числа 1
code[2] = 0x05 // Целая часть числа 1
code[3] = 0x00 // Часть числа 1 после точки
code[4] = 0x05 // Часть числа 1 после точки
code[5] = 0x00 // Целая часть числа 2
code[6] = 0x02 // Целая часть числа 2
code[7] = 0x00 // Часть числа 2 после точки
code[8] = 0x01 // Часть числа 2 после точки
Ну и собственно программа через switch проверяет что нужно сделать, в данном случае сложение.
И происходит:
Спойлер
Код: Выделить всё
temp_var = ((code[current] + code[current+1]) + 1E-5*(code[current+2] + code[current+3])) + ((code[current+4] + code[current+5]) + 1E-5*(code[current+6] + code[current+7]));
printf("Result:%f",temp_var);
Ну и программа дальше идет и проверяет остальные данные в code, пока не наткнется на \0.
Как-то так...Ну именно такой способ выбрал т.к для меня лично будет трудно написать обработчик подобного:
Спойлер
А может и стоит попробовать.
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт сен 29, 2015 18:12:44
WiseLord
Я не понимаю, что такое целая часть числа 1 и целая часть числа 2.
Например, если будет так:
Код: Выделить всё
code[1] = 0x2E // Целая часть числа 1
code[2] = 0x1E // Целая часть числа 1
code[3] = 0xF0 // Часть числа 1 после точки
code[4] = 0xC5 // Часть числа 1 после точки
Какое это будет число?
И если чисел всего два - зачем code[10] и прочие до code[255]? Достаточно 1 байт на операции и 8 на числа ведь.
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт сен 29, 2015 18:36:46
ARV
если вы собрались делать что-то типа калькулятора, то храните строку с выражением и вычисляйте его по символам - в сети много алгоритмов и примеров кода подобных "интерпретаторов".
нормальные программисты в массивах по кусочкам данные не хранят - или float, или int, или то, что надо - но не помесь негра с чемоданом.
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср сен 30, 2015 06:54:14
Victor94
WiseLord, когда писал думал сделать так:
Спойлер
Ячейка[1] = 0x00
Ячейка[2] = 0xFF
Будет 255
Ячейка[1] = 0x01
Ячейка[2] = 0x00
Будет 256
Как-то так думал

ARV, если вас не затруднит, поделитесь ссылками на материал

(переварю любой EN\RU текст)
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср сен 30, 2015 07:14:01
WiseLord
Ок, пусть так для целой части. Но как с дробной частью быть?
Целая часть от 0x00/0x00 до 0xFF/0xFF даёт числа 0..65535. Пусть так.
А дробная? числа 0.00000..0.65535? Так, что ли? А число вроде 0.7 как указать тогда?
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср сен 30, 2015 07:39:48
Аlex
WiseLord писал(а):А число вроде 0.7 как указать тогда?
Это если только делать дробное число до 9999.
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср сен 30, 2015 08:11:05
ARV
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср сен 30, 2015 08:27:43
Victor94
ARV,не поверите, уже читал про польскую и обратную запись

Ну сейчас буду что-то писать, возможно попрошу помощи у вас

WiseLord, я же говорил, что пока код толком отсутствовал, это был самый первый вариант такого хранения данных

В моей голове получение (например) 7.7 выглядело так:
Спойлер
Ячейка[1] = 0x00
Ячейка[2] = 0x07
Ячейка[3] = 0x00
Ячейка[4] = 0x07
И я бы сделал
Ячейка[1] и Ячейка[2] = 7
Ячейка[3] и Ячейка[4] = 7(символ 1, значит делим на 10) и получаем 0.7
7+0.7 = 7.7
Если в ячейках 3 и 4 было бы число 77(4D?) это два символа и мы 77/100 ну и соотв.
7+0.77 = 7.77
Такой вариант очень ужасен?
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср сен 30, 2015 08:54:53
WiseLord
Victor94 писал(а):Ячейка[3] и Ячейка[4] = 7(символ 1, значит делим на 10) и получаем 0.7
Почему на 10?
Как тогда представить числа 0.07, 0.007, 0.0007?
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср сен 30, 2015 09:00:34
Victor94
WiseLord, тут к сожалению я, да

,не подумал, но повторюсь это первый вариант
