C# i Brother QL-810W

Programowanie w C# pod Visual Studio
ODPOWIEDZ
Awatar użytkownika
SunRiver
Administrator
Posty: 591
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

C# i Brother QL-810W

Post autor: SunRiver » 09 sty 2019, 19:57

Obrazek

Drukarki etykiet f-my Brother są alternatywą dla drukarek Dymo ,
Dysponują programem P-Touch Editor umożliwiającym tworzenie etykietek ,
chyba nawet nieco lepszym od Dymo, przy instalacji trzeba podać nr seryjny urządzenia które posiadamy.

Obrazek

Obrazek

Istnieje też pewna analogia do drukarek Dymo ...
Również w tym wypadku musimy sobie przygotować wzór naklejki dla naszej aplikacji w której chcemy drukować
etykiety. Tu jest chyba nawet nieco przejrzyściej niż w przypadku DYMO ...

................:: Przygotowanie naklejki ::...................

Zatem przygotujmy sobie naklejkę

Obrazek

Jak widzicie nasza naklejka ma rozmiar 62x29mm, oczywiście możecie ustawić sobie dla dowolnego papieru
jaki posiadacie do swojej drukarki istotne są elementy na naklejce .
Nasza prototypowa naklejka będzie posiadać 4 elementy zmienne :

-- Text tytułu
-- Druga linia
-- Trzecia linia
-- Kod paskowy

Są też umieszczone 2 obiekty stałe w tym wypadku 2 linie , ale może być to grafika , ramka itd...
Nasze napisy posiadają ważną wartość pola Nazwa obiektu we właściwościach , które widać po
prawej stronie na obrazku wyżej ..

Dotyczy ono właściwości elementu Text tytułu i jak widać ustawiłem wartość na objTytul , analogicznie
postępujemy z innymi elementami, których zawartość chcemy zmieniać w naszej aplikacji i tak dla naszej
naklejki są to :

-- Text tytułu .... objTytul
-- Druga linia .... objDwiersz
-- Trzecia linia .. objTwiersz
-- Kod paskowy . objBar

i te nazwy obiektów są dla nas ważne ... naklejkę zapisujemy sobie jako np templ62x29 w formacie
Brothera czyli powinniśmy uzyskać plik templ62x29.lbx np na pulpicie bo musimy skopiować ten plik
do folderu naszej aplikacji w C#.

................:: Potrzebne programy ::...................

Teraz gdy mamy już gotową templatkę musimy pobrać i zainstalować SDK dla Brothera,
co też czynimy pod adresem : https://www.brother.co.jp/eng/dev/bpac/ ... index.aspx
i wybieramy jaki nam potrzeba .... ja wybrałem na tą chwile najnowszy 64bitowy dla windows.

Obrazek

i instalujemy ... Tu niema żadnych problemów i każdy sobie poradzi ... , możemy się
też zapoznać z przykładami dla VB, C++ , C# ..
Są one dość skromne i słabe , ale zawsze coś ... ważniejsza jest dokumentacja, w której są dostępne
opisy wszystkich funkcji dostępnych w bibliotekach.

................:: Piszemy program w C# ::...................

Mamy gotową templatkę , mamy SDK czas odpalić Visual Studio i utworzyć nowy projekt ....
Tu niema nic specjalnie tajemniczego więc ... powiem tylko ze to typowy projekt CLR Windows Form
który sobie nazwiemy BrotherNaklejka...

Obrazek

Teraz na spokojnie otwieramy folder projektu i folder z SDK musimy skopiować do projektu 2 pliki :)
pierwszy jak się domyślacie to nasza templatka naklejki, a drugi to biblioteka dla brothera.

Obrazek

i od tej strony gotowe wracamy do VS bo teraz musimy dodać referencje w projekcie dla Brothera.
To oczywiście też jest jasne dla wszystkich więc dodajemy refki i dopisujemy w kodzie linijkę
  1.  
  2. using bpac;
  3.  
która pozwoli nam używać funkcji z biblioteki Interop.bpac w naszej aplikacji ....

Obrazek

Czas dodać klika obiektów do naszego formularza windows ...
Dokładnie będą to cztery textBoxy i Przycisk. Oczywiście mogą to być np comboBoxy z podłączonym
źródłem danych z bazy lub inne jakie potrzebujemy tutaj tak na szybko i jak najprościej ...

Obrazek

o np tak .... żeby było przejrzyście i w sumie nic więcej nie potrzebujemy w tym przypadku gdyż cała
aplikacja jest tylko do poglądowego pokazania jak się zabrać za ten model drukarki. Teraz wszystko co ważne dla nas odbywać się będzie już w kodzie naszego programu. Za tym co najlepsze czas zacząć :)

Musimy sobie stworzyć kilka zmiennych by wskazać programowi gdzie co mamy :
  1.  
  2.         private const string Folder_Naklejek = @"Naklejki/";
  3.         private const string Nasza_Naklejka = "templ62x29.lbx";
  4.  

Jak widzicie w tych stringach przechowuję ścieżkę do naklejki Naklejki/
oraz nazwę naszego pliku z wzorem naklejki którą utworzyliśmy templ62x29.lbx, co jak widzicie jest
bardzo istotne i wskazuje nam od razu dalszą drogę przez co musimy w folderze z programem umieścić
folder w którym znajdzie się nasza naklejka. To też może się przydać gdy zechcemy mieć więcej
naklejek i móc je wybierać w programie ... ale w tej chwili zajmiemy się tylko jedną i to przypisaną
na stałe w programie.

Obrazek

Teraz najważniejszy jest przycisk Drukuj , właśnie on będzie odpowiadał za odczytanie danych z naszych
tekstBoxów i podstawienie właściwych pól do właściwych obiektów na templatce oraz wysłanie tak
spreparowanej naklejki do drukarki ... o ile samo otwarcie templatki jest proste o tyle do podstawienia
tekstów skorzystamy z funkcji dostępnej w bibliotece bpac czyli GetObject() ale w kodzie wszystko
za chwilę stanie się jasne teraz musimy sobie tylko przypomnieć nazwy naszych obiektów na naklejce
bo właśnie one są kluczowe jako parametr dla GetObject() i musimy też stworzyć sobie wirtualny dokument oraz prosto obsłużyć błąd na wypadek kłopotów z wczytaniem templatki )

Tymczasem kod dla przycisku Drukuj wygląda następująco:
  1.  
  2.             string sciezkaNaklejki = Folder_Naklejek;
  3.    
  4.             sciezkaNaklejki += Nasza_Naklejka;
  5.  
  6.             bpac.Document dokupac = new Document();
  7.             if (dokupac.Open(sciezkaNaklejki) != false)
  8.             {
  9.                
  10.                 dokupac.GetObject("objTytuł").Text = txtTytul.Text;
  11.                 dokupac.GetObject("objDwiersz").Text = txtDwiersz.Text;
  12.                 dokupac.GetObject("objTwiersz").Text = txtTwiersz.Text;
  13.                 dokupac.GetObject("objBar").Text = txtBarKode.Text;
  14.                
  15.                 dokupac.StartPrint("", PrintOptionConstants.bpoDefault);
  16.                 dokupac.PrintOut(1, PrintOptionConstants.bpoDefault);
  17.                 dokupac.EndPrint();
  18.                 dokupac.Close();
  19.  
  20.             }
  21.             else
  22.             {
  23.                 MessageBox.Show("Otwarcie etykiety błąd: " + dokupac.ErrorCode + "Nieznaleziono pliku");
  24.             }
  25.  
I to by było na tyle .... program działa i drukuje naklejki z naszymi danymi ... to Dobre rozwiązanie dla każdego,
kto używa np jednego lub kilku naklejek i potrzebuje szybko edytować dane na utworzonej już wcześniej
naklejce :)


Tymczasem cały kod wygląda następująco :
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Windows.Forms;
  10. using System.IO;
  11.  
  12. using bpac;
  13.  
  14.  
  15. namespace BrotherNaklejka
  16. {
  17.     public partial class Form1 : Form
  18.     {
  19.  
  20.         private const string Folder_Naklejek = @"Naklejki/";
  21.         private const string Nasza_Naklejka = "templ62x29.lbx";
  22.        
  23.  
  24.         public Form1()
  25.         {
  26.             InitializeComponent();
  27.         }
  28.  
  29.         private void Form1_Load(object sender, EventArgs e)
  30.         {
  31.  
  32.         }
  33.  
  34.         private void button1_Click(object sender, EventArgs e)
  35.         {
  36.             string sciezkaNaklejki = Folder_Naklejek;
  37.  
  38.             sciezkaNaklejki += Nasza_Naklejka;
  39.  
  40.             bpac.Document dokupac = new Document();
  41.             if (dokupac.Open(sciezkaNaklejki) != false)
  42.             {
  43.                 dokupac.GetObject("objTytuł").Text = txtTytul.Text;
  44.                 dokupac.GetObject("objDwiersz").Text = txtDwiersz.Text;
  45.                 dokupac.GetObject("objTwiersz").Text = txtTwiersz.Text;
  46.                 dokupac.GetObject("objBar").Text = txtBarKode.Text;
  47.                
  48.                 dokupac.StartPrint("", PrintOptionConstants.bpoDefault);
  49.                 dokupac.PrintOut(1, PrintOptionConstants.bpoDefault);
  50.                 dokupac.EndPrint();
  51.                 dokupac.Close();
  52.             }
  53.             else
  54.             {
  55.                 MessageBox.Show("Otwarcie etykiety błąd: " + dokupac.ErrorCode + "Nieznaleziono pliku");
  56.             }
  57.         }
  58.     }
  59. }
  60.  
  61.  
  62.  
Jak widać jest prosty i nie wymaga wiele omawiania , działa sprawnie i szybko, a my się nie przepracowaliśmy pisząc go :)
.... z każdym bitem serca ....
💫SunDUINO
💦GitHUB
💦Google Drive
💦Sotton

ODPOWIEDZ