Спасибо! Заработало! Немного переделал, теперь летает! На печать всего буфера (384х134 точек) уходит в среднем 600 мс. При чем скорость печати зависит от количества точек в линии: меньше точек - меньше время на прожиг - быстрее печать. А если точек в линии нет, то вообще пропускается без задержки на прожиг!
Три строчки "среднего" шрифта печатаются "примерно" за 500 мс!!!
Картинка панды печатается дольше, до 1 сек. Из-за того что там много сплошных участков.
Функция печати:
Я использовал не линейную зависимость длительности прожига от количества пикселей в линии. График функции выглядит как парабола. Формула выглядит так:
- Код:
((FireH-FireL)/100.0*(0.17667*(sq(StrobeEn)/100.0*StrobeEn)))/1000+FireL
где:
FireH - максимальное время прожига линий с наибольшим заполнением. Измеряется в мс. У меня установлено значение 12 мс
FireL - минимальное время прожига, если точек очень мало (на пример одна...) Измеряется в мс. У меня установлено 2 мс
StrobeEn - количество пикселей в строке
0.17667 - коэффициент: 100/566, как высчитал 566, уже не вспомню... расчеты не сохранил. Но он на прямую зависит от количества точек на головке (384).
_Standby() - функция отключает питание шаговика, чтобы не перегрелся.
Функция принимает не линейное значение от 2 до 12 (FireH и FireL)
Конечно, можно было так не заморачиваться, но я хотел добиться одинаковой "яркости" линий с разным заполнением, и при этом не жечь на всю катушку... В общем пытался поймать золотую середину между пережиганием пикселей (когда точки расплываются и сливаются от нагрева) и пропусками от очень слабого нагрева.
Остальной код не менял, но в будущем нужно будет переписать большинство функций.
Завтра скину фотки и видео работы.