Вопросы по С/С++ (СИ)
Re: Вопросы по С/С++ (СИ)
Тоже не читал книги, и пхп немного знал когда он был еще простой как три копейки. Ну а так интерфейсы это в объекто-ориентированных си-подобных языках, т.к. множественное наследование запрещено, а если хочется, то один класс предок с наследованием реализации, и сколько угодно интерфейсов с наследованием объявлений методов, которые потом надо будет реализовать. Тогда кто-то со стороны уже будет заранее, зная тот-же интерфейс, и знать как обратиться к этому новому классу.
- Реклама
Re: Вопросы по С/С++ (СИ)
в с++ интерфейсов не было, там были абстгактные методы
я тогда понял, что можно использовать один метод display в моем быдловузном проекте, но сделать несколько абстгактных методов и реализаций
потому что в реальности у меня могло подключаться 2 или 3 разных индикатора с разными протоколами управления, а в главном файле не должно было быть 100500 разных методов управления индикаторами, потому что главный файл писал другой человек, который в железе нихера не понимает
в пхп для этого решили запилить интерфейсы
все оказалось довольно просто
я тогда понял, что можно использовать один метод display в моем быдловузном проекте, но сделать несколько абстгактных методов и реализаций
потому что в реальности у меня могло подключаться 2 или 3 разных индикатора с разными протоколами управления, а в главном файле не должно было быть 100500 разных методов управления индикаторами, потому что главный файл писал другой человек, который в железе нихера не понимает
в пхп для этого решили запилить интерфейсы
все оказалось довольно просто
тематические ответы только в форуме, в приват не пишите
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 486
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Доброго дня, уважаемые знатоки !
Помогите чайнику ! Всегда программировал на Баскоме, а тут попался очень заковыристый дисплей, упоминания о нем и тестовые подключалки нашел только на немецких сайтах, да и то всего две штуки.
Там прилагались архивы, как я понял - на Си. Тестовые программы. А вот как их скомпилировать в Хекс - так и не въехал.
Оба архива приложены, вроде как под мегу8 авторы компилировали. Сделайте пару хексов, пожалуйста !
PS Дисплей от телефонного аппарата Siemens Optipoint, интерфейс - SPI. 24х2.
Спасибо заранее !
Помогите чайнику ! Всегда программировал на Баскоме, а тут попался очень заковыристый дисплей, упоминания о нем и тестовые подключалки нашел только на немецких сайтах, да и то всего две штуки.
Там прилагались архивы, как я понял - на Си. Тестовые программы. А вот как их скомпилировать в Хекс - так и не въехал.
Оба архива приложены, вроде как под мегу8 авторы компилировали. Сделайте пару хексов, пожалуйста !
PS Дисплей от телефонного аппарата Siemens Optipoint, интерфейс - SPI. 24х2.
Спасибо заранее !
- Вложения
-
- spi_lcd.zip
- (4.04 КБ) 155 скачиваний
-
- myLoS-spi-0.2.tar.gz
- (13.42 КБ) 248 скачиваний
С уважением,
Алексей.
Алексей.
-
Rtmip
- Держит паяльник хвостом
- Сообщения: 963
- Зарегистрирован: Чт апр 03, 2014 23:16:55
- Откуда: Россия
Re: Вопросы по С/С++ (СИ)
Пожалуйста 
Надеюсь "файл.eep" сами "перегоните" в нужный формат для заливки в еепром атмеги8?
Оба хекса под 8 МГц.
В проекте, где есть энкодер и уарт не разбирался, что и куда подключается, какая скорость и тд,
думаю это неважно для проверки дисплея.
Надеюсь "файл.eep" сами "перегоните" в нужный формат для заливки в еепром атмеги8?
Оба хекса под 8 МГц.
В проекте, где есть энкодер и уарт не разбирался, что и куда подключается, какая скорость и тд,
думаю это неважно для проверки дисплея.
- Вложения
-
- spi__lcd.rar
- (984 байт) 109 скачиваний
-
- myLoS.rar
- (1.27 КБ) 127 скачиваний
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Да, всё что понадобилось для второго архива (myLoS-spi) - зайти в каталог с Makefile и сделать make. Можно было бы и не спрашивать.
Для первого тоже, наверное, простенького Makefile было бы достаточно, но лениво.
Для первого тоже, наверное, простенького Makefile было бы достаточно, но лениво.
- Реклама
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 486
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Конечно ! Огромное спасибо, все протестилось, все показывает !Rtmip писал(а): Надеюсь "файл.eep" сами "перегоните" в нужный формат для заливки в еепром атмеги8?
Обнаружил три модификации дисплея одного и того же телефонного аппарата. Два из них отлично завелись, третий (самый свежий, 2010 года) ни в какую !
Причем первые два - взаимозаменяемы (проверил на аппаратах и тестовой плате), третий - меняется только на такой же. Вот интересно...
С уважением,
Алексей.
Алексей.
Re: Вопросы по С/С++ (СИ)
Приветствую, есть задача, что-то вроде "интерпретации" кода.
Есть массив int, который пока заполняю руками:
массив[элемент 0] = тут я определяю, что это будет за действие.(Деление/Умножение/Сложение/Вычитание)
массив[элемент 1] и массив[элемент 2] = целая часть числа.
массив[элемент 3] и массив[элемент 4] = часть после "точки".
Не знаю как правильно из 1,2,3,4 элементов вынуть float число.
Есть массив int, который пока заполняю руками:
массив[элемент 0] = тут я определяю, что это будет за действие.(Деление/Умножение/Сложение/Вычитание)
массив[элемент 1] и массив[элемент 2] = целая часть числа.
массив[элемент 3] и массив[элемент 4] = часть после "точки".
Не знаю как правильно из 1,2,3,4 элементов вынуть float число.
->AVG-GCC
->Archlinux
->Wine -> Proteus
->Mono -> Avrdudes
->Archlinux
->Wine -> Proteus
->Mono -> Avrdudes
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
float f;
f = массив[1] + 256*массив[2] + 1E-5*(массив[3] + 256*массив[4]);
как-то так... правда, массив в этом примере байтовый, а не int. т.е. char - int-ы отводить для этих целей бессмысленно
f = массив[1] + 256*массив[2] + 1E-5*(массив[3] + 256*массив[4]);
как-то так... правда, массив в этом примере байтовый, а не int. т.е. char - int-ы отводить для этих целей бессмысленно
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
ARV, а почему 1E-5? Ведь char-ами 3 и 4 мы максимум получим в этом случае 0.65535 - числа вроде 0.7, 0.9 так не представимы.
А вообще задача какая-то странная, на самом деле. Не видя всего кода, уже ощущение каких-то костылей появляется.
А вообще задача какая-то странная, на самом деле. Не видя всего кода, уже ощущение каких-то костылей появляется.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
а почему бы и нет? ведьWiseLord писал(а):ARV, а почему 1E-5? Ведь char-ами 3 и 4 мы максимум получим в этом случае 0.65535 - числа вроде 0.7, 0.9 так не представимы.
WiseLord писал(а):задача какая-то странная, на самом деле. Не видя всего кода, уже ощущение каких-то костылей появляется.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Вопросы по С/С++ (СИ)
А кода собственно пока что и нет, задача встала не так уж давно 
Но примерную суть выражу так:
Есть массив int code[256];
Который заполнен данными.
Ну и собственно программа через switch проверяет что нужно сделать, в данном случае сложение.
И происходит:
Ну и программа дальше идет и проверяет остальные данные в code, пока не наткнется на \0.
Как-то так...Ну именно такой способ выбрал т.к для меня лично будет трудно написать обработчик подобного:
А может и стоит попробовать.
Но примерную суть выражу так:
Есть массив 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 после точки
И происходит:
Спойлер
Код: Выделить всё
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);Как-то так...Ну именно такой способ выбрал т.к для меня лично будет трудно написать обработчик подобного:
Спойлер
Код: Выделить всё
LET A=10
LET B=20
PRINT A+B->AVG-GCC
->Archlinux
->Wine -> Proteus
->Mono -> Avrdudes
->Archlinux
->Wine -> Proteus
->Mono -> Avrdudes
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Я не понимаю, что такое целая часть числа 1 и целая часть числа 2.
Например, если будет так:Какое это будет число?
И если чисел всего два - зачем code[10] и прочие до code[255]? Достаточно 1 байт на операции и 8 на числа ведь.
Например, если будет так:
Код: Выделить всё
code[1] = 0x2E // Целая часть числа 1
code[2] = 0x1E // Целая часть числа 1
code[3] = 0xF0 // Часть числа 1 после точки
code[4] = 0xC5 // Часть числа 1 после точкиИ если чисел всего два - зачем code[10] и прочие до code[255]? Достаточно 1 байт на операции и 8 на числа ведь.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
если вы собрались делать что-то типа калькулятора, то храните строку с выражением и вычисляйте его по символам - в сети много алгоритмов и примеров кода подобных "интерпретаторов".
нормальные программисты в массивах по кусочкам данные не хранят - или float, или int, или то, что надо - но не помесь негра с чемоданом.
нормальные программисты в массивах по кусочкам данные не хранят - или float, или int, или то, что надо - но не помесь негра с чемоданом.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Вопросы по С/С++ (СИ)
WiseLord, когда писал думал сделать так:
Ячейка[2] = 0xFF
Будет 255
Ячейка[1] = 0x01
Ячейка[2] = 0x00
Будет 256
Как-то так думал 
ARV, если вас не затруднит, поделитесь ссылками на материал
(переварю любой EN\RU текст)
Спойлер
Ячейка[1] = 0x00Ячейка[2] = 0xFF
Будет 255
Ячейка[1] = 0x01
Ячейка[2] = 0x00
Будет 256
ARV, если вас не затруднит, поделитесь ссылками на материал
->AVG-GCC
->Archlinux
->Wine -> Proteus
->Mono -> Avrdudes
->Archlinux
->Wine -> Proteus
->Mono -> Avrdudes
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Ок, пусть так для целой части. Но как с дробной частью быть?
Целая часть от 0x00/0x00 до 0xFF/0xFF даёт числа 0..65535. Пусть так.
А дробная? числа 0.00000..0.65535? Так, что ли? А число вроде 0.7 как указать тогда?
Целая часть от 0x00/0x00 до 0xFF/0xFF даёт числа 0..65535. Пусть так.
А дробная? числа 0.00000..0.65535? Так, что ли? А число вроде 0.7 как указать тогда?
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Это если только делать дробное число до 9999.WiseLord писал(а):А число вроде 0.7 как указать тогда?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Вопросы по С/С++ (СИ)
ARV,не поверите, уже читал про польскую и обратную запись
Ну сейчас буду что-то писать, возможно попрошу помощи у вас 
WiseLord, я же говорил, что пока код толком отсутствовал, это был самый первый вариант такого хранения данных
В моей голове получение (например) 7.7 выглядело так:
Ячейка[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
Такой вариант очень ужасен?
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
->AVG-GCC
->Archlinux
->Wine -> Proteus
->Mono -> Avrdudes
->Archlinux
->Wine -> Proteus
->Mono -> Avrdudes
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Почему на 10?Victor94 писал(а):Ячейка[3] и Ячейка[4] = 7(символ 1, значит делим на 10) и получаем 0.7
Как тогда представить числа 0.07, 0.007, 0.0007?
Re: Вопросы по С/С++ (СИ)
WiseLord, тут к сожалению я, да
,не подумал, но повторюсь это первый вариант 
->AVG-GCC
->Archlinux
->Wine -> Proteus
->Mono -> Avrdudes
->Archlinux
->Wine -> Proteus
->Mono -> Avrdudes


