• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено Откуда лишний символ?

MiDash

Member
Здравствуйте!
Вожусь с отображением температуры на популярном OLED экранчике. Все работает, но...
Вывожу вот так:
Код:
function write_OLED()
  disp:firstPage()
  repeat
    disp:setFont(u8g.font_6x10)
    disp:drawStr(0, 10,  string.format("%3.1f °C",t))
    disp:setFont(u8g.font_profont29)
    disp:drawStr(0, 50,  string.format("%3.1f °C",t))
  until disp:nextPage() == false
end
И получаю вот это:

Twochars.jpg

Т.е. независимо от шрифта вместо одного символа ° получаю два символа °.
Пробел убирал, не помогло.
Что за WTF, не подскажете?

P.S. Прошивка с nodemcu-build.com
 
Последнее редактирование:

MiDash

Member
Гугл показал мне Oled_SetFont в нескольких местах. Что-то мне кажется, что это нифига не Lua.

Может быть, мою задачу может решить вот такой костыль?
Код:
function write_OLED()
  disp:firstPage()
  repeat
    disp:setFont(u8g.font_profont29)
    disp:drawStr(0, 50,  string.format("%3.1f°C",t))
    disp:drawStr(0, 50,  string.format("%3.1f ",t))
  until disp:nextPage() == false
end
Забить на лишний символ и не докапываться до причины?
 

sboganov

Member
Гугл показал мне Oled_SetFont в нескольких местах. Что-то мне кажется, что это нифига не Lua.

Может быть, мою задачу может решить вот такой костыль?
Код:
function write_OLED()
  disp:firstPage()
  repeat
    disp:setFont(u8g.font_profont29)
    disp:drawStr(0, 50,  string.format("%3.1f°C",t))
    disp:drawStr(0, 50,  string.format("%3.1f ",t))
  until disp:nextPage() == false
end
Забить на лишний символ и не докапываться до причины?
Что то мне подсказывает что твой редактор соxраняет в UTF-8 -> и этот символ как раз и занимает 2 байта. Попробуй этот символ закодировать через \0xBB (только найди правильный код для этого символа)
 

MiDash

Member
Пользую ESPlorer под Дебианом. Про UTF тоже думаю. Смутило - почему только один знак? Всякие там Hello World выводил, но проблем не было.
Код 176=0xb0
Спасибо, попробую.
 
Сверху Снизу