Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Drukarka termiczna - Drukowanie obrazka bezpośrednio z uP (C++/Bascom)

Pawel_1985 27 Paź 2015 11:02 876 6
  • #1 27 Paź 2015 11:02
    Pawel_1985
    Poziom 6  

    Witam!

    Na początku podzielę się zdobytą dokumentacją i wiedzą, może komuś się przydać w przyszłości.

    W ostatnim czasie zakupiłem drukarkę termiczną Pay Print Beta 1 (link do drukarki poniżej), a w załączniku przesyłam sterowniki oraz dokumentację do tej drukarki (otrzymane bezpośrednio od producenta).

    http://www.payprint.it/en/printers/kiosk-prin...8-60-mm/printer-payprint-beta-1-dettagli.html

    Od producenta (swoją drogą bardzo fajny kontakt, odpowiadają na każdy mail) dowiedziałem się, że sterowniki pod systemy 64 bitowe są dopiero w opracowaniu, tak samo jak płytka umożliwiająca wgrywanie do wewnętrznej pamięci eeprom drukarki obrazka / logo.

    I własnie z tym ostatnim mam spory problem. Drukarka może wydrukować obrazek umieszczony w swojej pamięci eeprom (wystarczy wysłać prostą komendę po RS232), ale ja go nie mogę zmienić, bo nie mam płytki programującej. Producent nie ma jej w sprzedaży i jedynie zaproponował wysłanie drukarki do nich celem darmowego wgrania logo.

    Z drugiej strony po podłączeniu drukarki pod windows można drukować na niej obrazki jak przy zwykłej drukarce np. drukuje stronę testową z logiem windowsa.

    No i tutaj mam pytanie, w jaki sposób rozbić rysunek (bitmapa) na ciąg zer i jedynek, tak abym mógł wydrukować moje logo na tej drukarce. Drukarka posiada polecenia drukowania grafik.

    Drukarkę steruję bezpośrednio z uP po RS232. Język oprogramowania dowolny może być Bascom lub C++.

    Na elektrodzie widziałem projekty z drukarkami termicznymi (drukowanie plansz do sudoku itp.), ale nie doszukałem się jak tam jest przetwarzany obrazek.

    Pozdrawiam!

    0 6
  • #2 27 Paź 2015 12:05
    BlueDraco
    Specjalista - Mikrokontrolery

    I pomyśleć, że w Polsce produkuje się drukarki termiczne, do których pliki z wzorcami wydruków możesz wgrać prze USB jak na Pendrive, w dodatku mają one drivery do wszystkich możliwych Windows...

    Konwersję z kolorów czyodcieni szarości zapewni Ci dowolny program do przetwarzanai obrazków, np. GIMP. Najprościej będzie zapisać to w formacie .BMP 1 bit na piksel, a następnie napisać prosty programik, który zamieni obrazek na polecenia drukarki - jakieś 40 linii w C.

    1
  • #3 28 Paź 2015 21:03
    Pawel_1985
    Poziom 6  

    Mam czarno białą bitmapę o rozmiarze 192 x 49 pikseli, co daję mi obrazek o pojemności 1176 bajtów.

    W internetach znalazłem programik, który przerobił mi obrazek na ciąg bajtów, w których bit o wartości 1 oznaczał czarną kropkę, a 0 oznacza białą kropkę.

    Przy wykorzystaniu komend drukarki udało mi się wydrukować obrazek, jednak wydaję mi się, że jest lepsza metoda niż ręczne przepisywanie danych z programu konwertującego do kompilatora.

    Czy jest jakaś metoda, aby obrazek wrzucać do uP, tak aby robił zarówno konwersje obrazka na ciąg 0 i 1?

    Nie chcę gotowca, bo tego nie potrzebuję. Potrzebne mi tylko lekkie naprowadzenie ;)

    0
  • #4 29 Paź 2015 00:37
    piotrva
    Moderator na urlopie...

    Czy da się - na pewno na jakimś uC tak.
    Ale zadajmy sobie kilka pytań - ile pamięci zajmuje obrazek przed konwersją?
    Czy zmieści się do Twojego uC?

    Dalej - jaki to format i z jaką kompresją? Bo niektóre formaty (np. bmp bez kompresji) bez problemu zdekoduje i AVR, ale np. z jpeg już się nieźle namęczy.

    Jeśli obrazek się zmieści to wtedy nie ma problemu - dokumentacje bmp do ręki bierz (jest dosyć dobrze to opisane w sieci) i można dekodować.

    Ja robiąc taką drukarkę po prostu podpinałem się do samej głowicy drukujacej i drukowałem linijka po linijce, piksel po pikselu to co chciałem. Dla oszczędności RAM dodatkowo daną linię obliczałem w locie.

    0
  • #5 29 Paź 2015 07:22
    Pawel_1985
    Poziom 6  

    Moim celem jest drukowanie logo firmy w pewnym urządzeniu, które będzie w swojej budowie zawierać mechanizm drukujący. Na potrzeby prototypu kupiłem tanią używaną firmy PayPrint, aby nauczyć się sterować takimi drukarkami, bo nigdy wcześniej nie miałem takiej przyjemności.

    Co do sterowania to również podpinam się bezpośrednio do głowicy i drukuję obrazek piksel po pikselu, a wszystkie dane wpisałem do pamięci flash uP i faktycznie zajmuję to sporo miejsca.

    Zastanawiam się czy jest szansa jakoś to zoptymalizować, póki co zmniejszyłem obrazek dwukrotnie i przy wydruku powiększam każdy piksel wzdłuż i wszerz za pomocą komend drukarki.

    Po prostu chciałbym to zrobić mądrzej, wyliczać jakoś dane do druku, a nie trzymać je na sztywno w pamięci.

    Piotrva - napisałeś, że obliczałeś coś w locie... możesz to bardziej opisać?

    0
  • #6 29 Paź 2015 11:06
    piotrva
    Moderator na urlopie...

    Np. druk czcionek - nie robiłem bufora przechowującego cały napis w formie pikseli, a po prostu drukując każdą linię odczytywałem dane na bieżąco z tablicy czcionek.

    Wcześniej pisałeś coś o połączeniu przez RS232.

    Obrazki można kompresować różnymi metodami, zawsze można dołożyć pamięć zewnętrzną na nie (np. eeprom, jeśli ma to być zmieniane częściej to karta SD lub pendrive)

    0
  • #7 29 Paź 2015 23:45
    BlueDraco
    Specjalista - Mikrokontrolery

    Firma Mefa (http://www.mefa.com.pl/) produkuje od wielu lat drukarki o takich możliwościach. Po co się męczyć?

    0