нужна помощь

Тема в разделе "Проводная и беспроводная связь", создана пользователем sergeyv, 30 авг 2015.

  1. sergeyv

    sergeyv Нуб

    Привет всем! Помогите новичку. Не могу понять, как правильно перевести мак-адрес в нужный формат, чтобы использовать его в скетче.
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    а какой формат нужный?
     
  3. sergeyv

    sergeyv Нуб

    4C-0F-6E-19-31-F6 ну вот бычный мак адресс, а как сюда его правильно прописать, " byte mac[] = { 0xDE, 0xAD, 0xBE, 0x00, 0x00, 0x00 }; //MAC-адрес Arduino " , не получается , выдаёт ошибку , или я что то не понимаю
     
  4. Tomasina

    Tomasina Сушитель лампочек Модератор

    byte mac[] = { 4C, 0F, 6E, 19, 31, F6 };
     
  5. sergeyv

    sergeyv Нуб

    выдаёт ошибки "
    Arduino: 1.6.2 (Windows 7), Плата"Arduino Uno"

    Изменена опция сборки, пересобираем все

    sketch_aug30a.ino:17:16: error: invalid suffix "C" on integer constant

    sketch_aug30a.ino:17:20: error: invalid suffix "F" on integer constant

    sketch_aug30a.ino:17:24: error: exponent has no digits

    sketch_aug30a.ino:17:36: error: 'F6' was not declared in this scope

    Ошибка компиляции.
     
  6. Tomasina

    Tomasina Сушитель лампочек Модератор

    а с тем адресом, что был по умолчанию, компилируется?
     
  7. geher

    geher Гуру

    byte mac[] = { 0x4C, 0x0F, 0x6E, 0x19, 0x31, 0xF6 };
     
  8. sergeyv

    sergeyv Нуб

    Вроде бы скомпелировался скетч, буду пробовать, большое спасибо за помощь!!!!!
     
  9. geher

    geher Гуру

    Для справки. МАК-адрес по жизни - это шесть байт. Не больше и не меньше. Точно так же как IP v4 - это всего лишь четыре байта.
    Для удобства представления при отображении или публикации адрес записывается в виде строки, в которой просто идут значения байт, разделяемые дополнительным символом, чтобы просто отделять один байт от другого. Причем форма записи (символ-разделитель) и формат значений (десятичный/шестнадцатеричный) изначально, похоже, берутся от балды. Кстати, для мак-адреса иногда используется текстовое представление без разделителей, когда шестнадцатеричные значения байт просто записываются по две шестнадцатеричные цифры одно за другим (что, впрочем, раздражает, поскольку столь длинная последовательность без разделителей плохо воспринимается, потому, кстати, и телефонные номера при записи разбавляют скобками и тире).
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0x00, 0x00, 0x00 }; - это представление в программе (именуемой также скетчем). Все те же шесть байт, записанных в виде последовательности из шести чисел, инициализирующей массив байтовых значений, в результате чего в памяти в виде значения означенного массива будет мак адрес в своем родном физическом представлении (6 байт) во всей своей красе.
    Для того, чтобы в ячейку (элемент) массива поместить байт, нужно задать его значение. Значение можно задать и в десятичной системе, переведя в него исходную шестнадцатеричную пару цифр, но, чтобы не возиться с преобразованиями, проще и нагляднее оставить константы-значения байт шестнадцатиричными. Чтобы компилятор понял, что ему скармливают числа в шестнадцатеричном формате, каждое число предваряется префиксом из двух символов - 0x.
     
  10. sergeyv

    sergeyv Нуб

    Спасибо! очень информативно!