Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
drac0Sha
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Вт окт 09, 2012 14:09:39

Re: Вопросы по С/С++ (СИ)

Сообщение drac0Sha »

там сообщения вида $7E$01$команда(0х31,0х32и тд)$кс(xor команды)
Реклама
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение vitalik_1984 »

Вам уже все сказали и показали
если в команде один символ, то контроль такой же как и символ, если несколько смотрите мой прошлый пост.
И не нужно путать пакет с сообщением.Сообщение это та полезная информация, что передается, остальное это служебные дополнения.
Сообщением в вашем случае является код команды длина его равна одному байту значит кс такая как и сообщение, если не один, то формула вам известна( смотрим предыдущий мой пост)
Реклама
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Вопросы по С/С++ (СИ)

Сообщение uldemir »

Тупой вопрос. А как в С пишутся бинарные константы? 0xEE - шестнадцатеричные, 077 - восьмеричные... А для бинарных?
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
juzik
Встал на лапы
Сообщения: 128
Зарегистрирован: Пт сен 23, 2011 23:49:20
Откуда: Симферополь, Украина

Re: Вопросы по С/С++ (СИ)

Сообщение juzik »

Не все компиляторы поддерживают бинарные константы, но те, что понимают, ожидают такое на входе: 0b11001010
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
DrGandalf
Встал на лапы
Сообщения: 110
Зарегистрирован: Пн дек 03, 2012 19:31:53
Откуда: Санкт-Петербург

Re: Вопросы по С/С++ (СИ)

Сообщение DrGandalf »

uldemir писал(а):Тупой вопрос. А как в С пишутся бинарные константы? 0xEE - шестнадцатеричные, 077 - восьмеричные... А для бинарных?
Никак.
Реклама
juzik
Встал на лапы
Сообщения: 128
Зарегистрирован: Пт сен 23, 2011 23:49:20
Откуда: Симферополь, Украина

Re: Вопросы по С/С++ (СИ)

Сообщение juzik »

Для уважаемого DrGandalf: http://gcc.gnu.org/onlinedocs/gcc/Binary-constants.html
Реклама
Аватара пользователя
DrGandalf
Встал на лапы
Сообщения: 110
Зарегистрирован: Пн дек 03, 2012 19:31:53
Откуда: Санкт-Петербург

Re: Вопросы по С/С++ (СИ)

Сообщение DrGandalf »

juzik писал(а):Для уважаемого DrGandalf: http://gcc.gnu.org/onlinedocs/gcc/Binary-constants.html
Фи, это не ANSI C
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение ibiza11 »

для уважаемого juzik: в GCC как и в CVAVR нестандартный Си. Вопрос был именно про Си, а не про GCC.
Ставим плюсы: )
juzik
Встал на лапы
Сообщения: 128
Зарегистрирован: Пт сен 23, 2011 23:49:20
Откуда: Симферополь, Украина

Re: Вопросы по С/С++ (СИ)

Сообщение juzik »

Находясь в форуме про программирование под МК логично было бы предположить именно эти версии компиляторов. Если бы мы были в форуме "стандарты ANSI C" тогда я бы с вами полностью согласился.

И прежде, чем критиковать обратите внимание на
juzik писал(а):Не все компиляторы поддерживают бинарные константы
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Вопросы по С/С++ (СИ)

Сообщение uldemir »

Пока я ковыряюсь в IAR. Там фокус с 0b0001, к сожалению, не проходит.
Собственно мне нужно для этого:

Код: Выделить всё

  switch (enc_state) {
  // Шаг вперед 1110 -> 1000 -> 0001 -> 0111
  // Шаг назад  1101 -> 0100 -> 0010 -> 1011
  
  // запрещенные комбинации 0011, 1100, 0110, 1001
  case 0x03: ;
  case 0x06: ;
  case 0x09: ;
  case 0x0C: ;  
  // нет движения 1111, 1010, 0101, 0000
  case 0x00: ;
  case 0x05: ;
  case 0x0A: ;
  case 0x0F: ;
  default: ;
  }
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: Вопросы по С/С++ (СИ)

Сообщение Kavka »

Бинарные константы это расширение языка Си.
Добавьте gcc ключики -Wall -pedantic -pedantic-errors -std=iso9899:1999 и увидите "error: binary constants are a GCC extension".

На тему ANSI C, "Фи" и "не спортивно" - Как программировали Curiocity. Кто не знает, Curiocity ([къюриосити], "любопытство", "любознательность") это марсоход.
(Кто понимает английский - видео смотреть обязательно! :) ).
Последний раз редактировалось Kavka Вт дек 11, 2012 07:34:07, всего редактировалось 1 раз.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
juzik
Встал на лапы
Сообщения: 128
Зарегистрирован: Пт сен 23, 2011 23:49:20
Откуда: Симферополь, Украина

Re: Вопросы по С/С++ (СИ)

Сообщение juzik »

Я не писал под IAR, но может ему надо сказать как-то использовать имеено C99? Тогда по идее и бинарные константы должны появиться.
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

Re: Вопросы по С/С++ (СИ)

Сообщение ut1wpr »

juzik писал(а):Для уважаемого DrGandalf: http://gcc.gnu.org/onlinedocs/gcc/Binary-constants.html
Ну не все ведь под Гнутым Си живут. Анси Си не знает такого формата. Посмотрите в сторону спецификатора формата в printf. Уж он бы поддержал, если бы был такой стандарт.
С уважением,
Виктор.
Аватара пользователя
masmax
Открыл глаза
Сообщения: 43
Зарегистрирован: Ср дек 05, 2012 13:28:03
Откуда: Марляндия

Re: Вопросы по С/С++ (СИ)

Сообщение masmax »

Имеется десятичное число, например 45. Как его перевести в 16-тиричное 0x45? Просто дописать впереди "0х" текстом не помогает :)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Аlex »

Калькулятор Билла хорошо это делает. Набираем число и жмём "hex".
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Вопросы по С/С++ (СИ)

Сообщение Gudd-Head »

masmax писал(а):Как его перевести в 16-тиричное 0x45?
16-тиричное 0x45 это на самом деле десятичное 69 :idea:
+1 к виндовскому калькулятору. Хоть какой-то прок от него.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Tolmi »

Число, оно всегда число, независимо от системы исчисления.
И 45(10) тождественно равно числу 0x2D(16) или 00101101(2)
Никуда его переводить не надо. А вот символьное представление числа может быть разным.
In theory, theory and practice are the same. In practice, they're not.
Аватара пользователя
masmax
Открыл глаза
Сообщения: 43
Зарегистрирован: Ср дек 05, 2012 13:28:03
Откуда: Марляндия

Re: Вопросы по С/С++ (СИ)

Сообщение masmax »

Калькулятора билла нет в AtMega128 :)

Пишу прошивку для микроконотроллера. Команды к нему могут прийти двумя путями: нажатием кнопок (на выходе получаем код кнопки 45) или через RS-232 с внешнего устройства (генерирует код 0x45). События вызываются одни и теже поэтому для упрощения их обработки я хочу просто привести числа к одному виду и обрабатывать вместе события.

Протокол стандартный и зашит во многие устройства, поэтому изменять команду 0x45 на команду 0x69 очень геморно. Коды кнопок тоже не переделать уже, это в плате завязано. А плата массовая.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение ibiza11 »

прибавляйте к коду нажимаемой кнопки число 24 и будет вам счастье)
4510 + 2410 = 6910
6910 = 4516 = 0x45
:)))
Ставим плюсы: )
Аватара пользователя
masmax
Открыл глаза
Сообщения: 43
Зарегистрирован: Ср дек 05, 2012 13:28:03
Откуда: Марляндия

Re: Вопросы по С/С++ (СИ)

Сообщение masmax »

Ну 45 я привел для примера. Есть и другие коды клавиш :)

Ладно видимо это задача не имеет простого решения. Тогда проще вешать гирлянды из условий, как сейчас и сделано. Всё работает, только код не очень красивый.
Ответить

Вернуться в «Разные вопросы по МК»