kostenloser Webspace werbefrei: lima-city


Über USB Daten an Etikettendrucker senden

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    karikato

    Kostenloser Webspace von karikato

    karikato hat kostenlosen Webspace.

    Hallo,

    ich bin noch ganz neu in dem Bereich Geräte über eigenprogrammierte Programme ansprechen und bin mir grad etwas unsicher.
    Ich habe einen Etikettendrucker vorliegen - dieser hat eine Vorlage ,mit Hilfe eines Programms, im Speicher und in dieser Vorlage gibt es Felder, die variabel sind.
    Um diese variablen Felder zu füllen, möcht ich nun ein Programm schreiben, bei dem man in einer Oberfläche die Sachen schön eingibt und diese Daten dann per USB gesendet werden.
    Nun weiß ich nicht genau, wie ich das mit dem USB tue.

    Muss ich da bestimmte Bibliotheken einbinden, oder geht das einfach so, solange ich die anzusprechenden Adressen kenne?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo,

    es wäre ganz schön zu wissen mit welcher Programmiersprache du das bewerkstelligen möchtest. Für USB brauchst du auf jeden Fall Bibliotheken, die gewisse Treiber ansprechen können und dir die notwendigen Funktionen (Senden, Empfangen, etc.) zur Verfügung stellen. Die USB-Bibliothek kommt meist in Form einer DLL-Datei. Die musst du in dein Programm einbinden, um die Funktionen nutzen zu können.

    Leider ist die Sache mit USB nicht mehr so einfach wie es mit RS-232 (serielle Schnittstelle) einmal war. Es gibt viel mehr zu beachten. Es wäre gut, wenn du dir etwas Literatur dazu aneignest (ob aus dem Web oder der Bücherei, ist mir egal^^). Du musst nicht alles bis auf das Letzte Detail kennen. Aber die prinzipielle Funktionsweise wie z.B. Initialisierungsphase, Übertragungsmodi (es gibt 4 davon!), GeräteID's und den Protokollrahmen solltest du schon irgendwie kennen. Sonst wird das überhaupt nichts mit dem Programm.

    Es gibt verschiedene Bibliotheken, die das eigentlich schon recht bequem machen. Zu nennen wäre hier zum Beispiel
    libusb-win32. Kannst du z.B. von dieser Seite her kriegen:
    http://sourceforge.net/apps/trac/libusb-win32/wiki
    Einige der Funktionen werden z.B. hier beschrieben (hier findest du auch ein Beispiel in C-Code):
    http://sourceforge.net/apps/trac/libusb-win32/wiki/libusbwin32_documentation

    Ok, noch einige Fragen von meiner Seite aus:
    - Was meinst du mit Vorlage?
    - Wird zu dem Etikettendrucker noch eine Software mitgeliefert? (muss ja eigentlich, oder nicht?)
    - Wenn ja, dann beschreib mal bitte die Funktionalitäten der Software etwas genauer.
    - Kann man mithilfe der Software die Daten zum Etikettendrucker schicken?
    - Ist die Software nur zum Konfigurieren des Etikettendruckers da?
    - Muss man immer mit der Software die Daten des Etikettendruckers ändern, um ein neues Etikett mit anderer Aufschrift druckern zu können? Oder hat der Etikettendrucker auch eine Eingabetastatur, mit der man den Text vorgeben kann? (es gibt nämlich beides, ich vermute aber du hast ersteres)

    Wenn du Glück hast, dann brauchst du dich selber überhaupt nicht um diese USB-Sache kümmern. Wenn die Software des Etikettendruckers "manipulierbar" ist, dann könntest du mit deiner eigenen Oberfläche die Daten "schön" eintragen, im Hintergrund jedoch die Daten über die mitgelieferte Software zum Etikettendrucker schicken. Also ich würde das so in der Art machen.
    Sich da über USB so einzuarbeiten, dass es was wird, dauert zu lange. Dazu kommt noch, dass du überhaupt nicht weißt, in welcher Form der Etikettendrucker die Daten überhaupt haben will. Da steckt bestimmt auch eine Art Kommunikationsprotokoll dahinter. Und das ist herstellerabhängig. Dass heißt im Klartext: du kriegst keine Dokumentation dazu, die dir die notwendigen Infos liefert. Dann müsstest du es irgendwie selber rausfinden, und das kannst du (fast) vergessen.

    Lange Rede kurzer Sinn: wenn du bisher keine Erfahrung mit Schnittstellenprogrammierung hast, dann fang nicht mit USB an. Auch wenn es das weit verbreiteste Momentan ist, heißt es nicht dass es am Besten und am Einfachsten ist^^

    Viele Grüße


    Edit: Oh, jetzt sehe ich es erst. Da du es im C++ Forum postest, nehme ich an, dass du es mit C++ programmieren willst. Dann entschuldige bitte die Frage am Anfang :-)

    Beitrag zuletzt geändert: 18.5.2010 19:59:22 von tangoal
  4. Autor dieses Themas

    karikato

    Kostenloser Webspace von karikato

    karikato hat kostenlosen Webspace.

    Herzlichen Dank erstmal an die gute Info! :)
    Werde mir die zwei Verlinkungen mal zu Gemüte führen

    Und ja, ich wollt das ganze in C++ schreiben :)
    Hätte noch die Möglichkeit es in Delphi zu machen, aber damit habe ich bisher noch nie programmiert, also lasse ichs fürs erste lieber ;)

    Also beim Etikettendrucker ist eine mitgelieferte Software "BarTender".
    Wenn ich es richtig verstanden habe, kann man dort sozusagen Vorlagen entwerfen, wie die Etiketten aussehen sollen, wo variable Felder sind, an die man eben unterschiedliche Sachen übergeben kann, damit man auch angepasste Etikette bekommt (z.B. Artikel-Nr. immer anders usw.)
    Mit dieser Software kann man auch direkt die Etiketten drucken, aber ich soll eben so eine Vorlage auf den Speicher des Druckers spielen, um den über eine normale .exe Datei anzusteuern, so dass auf dem Zielcomputer BarTender nicht installiert sein muss.
    Mit der Software lässt sich der Drucker also nicht nur konfigurieren, sondern auch bedienen (wobei ich bisher auch noch nichts drucken konnte.. aber das ist ja ein anderes Problem ^^)
    Und der Etikettendrucker ist ein ganz kleiner ohne jegliche Bedienung - lässt sich also ausschließlich mit externen Geräten steuern.
  5. Ok, dass heißt mit "BarTender" kann man Vorlagen machen. Eine Vorlage wird als Datei gespeichert (binär oder ascii). In diese Vorlage können die notwendigen Daten in den entsprechenden Feldern eingetragen werden. Aus dieser ausgefüllten Vorlage wird der Datenstrom ermittelt, der zu dem Etikettendrucker geschickt wird. Wobei auch die Infos gesendet werden müssen, wie oft dieses Etikett gedruckt werden soll, usw. Das heißt, da kommen noch Daten dazu, die nicht in der ausgefüllten Vorlage drin sind und auch übertragen werden müssen.

    Aber folgendes habe ich noch nicht verstanden: "BarTender" ist auf irgendeinem Rechner installiert. Aber an diesem Rechner ist der Etikettendrucker nicht angeschlossen. Stattdessen ist der Drucker auf einem anderen Rechner angeschlossen, wo aber kein "BarTender" installiert ist. Dort soll aber deine Exe laufen, die den Drucker ansteuert. Per USB versteht sich. Merkwürdige Anforderungen. Wird aber bestimmt seine Gründe haben.

    Aber wie gesagt. Auch wenn du herauskriegst wie das mit der Ansteuerung von USB funktioniert (was du früher oder später ja auch schaffen wirst^^), musst du noch herausfinden, wie der Etikettendrucker angesprochen wird. Wenn's unbedingt sein muss, dann würde ich dir folgendes vorschlagen:
    (1) sich in USB schlau machen und herausfinden wie man sendet UND empfängt
    (2) mit der Empfangsroutine kannst du dann den Datenstrom abfangen, der von "BarTender" beim Konfigurieren + Bedienen des Druckers gesendet wird. So kannst du dann vielleicht herausfinden, wie der Drucker angesprochen wird. An deiner Stelle würde ich es zumindest versuchen beim Hersteller noch einige Infos da raus zu kriegen. Am besten E-Mail oder per Telefon kontaktieren und nachfragen, ob die die Dokumentation des Kommunikationsprotokolls herausrücken.

    Hoffe ich konnte dir etwas helfen. Falls ich noch weiteres in Erfahrung bringen kann oder eine andere Idee habe, dann poste ich das hier wieder oder schreibe dir eine PN. Falls sich was neues ergibt, dann meld dich ruhig auch per PN.
  6. Autor dieses Themas

    karikato

    Kostenloser Webspace von karikato

    karikato hat kostenlosen Webspace.

    So langsam bekomme ich das Gefühl, dass ich die Anleitung möglicherweise noch nicht genug studiert habe ^^
    Im Endeffekt sollte der Drucker an einen Rechner mit Windows angeschlossen sein, der kein BarTender drauf hat, aber eben durch die .exe den Drucker bedienen kann. BarTender liefert somit die Vorkonfiguration.

    Aber ich glaub, da hab ich noch viel vor mir - danke für die große Hilfe! :)
    Werd mich auf jeden Fall weiter bei Fachleuten mal dazu erkundigen.
  7. Wie das Protokoll aufgebaut ist, wirst du nicht in der Anleitung finden. Dort wirst du nur das allernotwendigste finden, was du zum Bedienen der Software und des Etikettendruckers benötigst. Hersteller legen ein Produkt selten so aus, dass man es ändern kann und auf seine Bedürfnisse anpassen kann. Bei Massenprodukten sowieso nicht.
    Habe gerade so eine Pdf gefunden. Ist es möglicherweise dieses Programm:
    http://www.barcode-fonts.de/seagull/bartender.pdf

    Also ich wünsche dir viel Erfolg bei der Umsetzung. Es ist auf jeden Fall ein spannendes Projekt, das die eine oder andere Hürde bereitstellt. Mit sehr viel Zeit und Ehrgeiz ist es aber machbar. Wäre schön wenn du mich auf dem Laufenden hälst. Ist wirklich ein cooles Projekt. Wenn man sowas erfolgreich gemeistert hat, dann erschliesst man sich noch viel mehr Themengebiete auf einen Schlag.
  8. Autor dieses Themas

    karikato

    Kostenloser Webspace von karikato

    karikato hat kostenlosen Webspace.

    Ja genau das ist es :)
    Das PDF ist mir auch schon untergekommen, das erklärt das Funktionsprinzip
    Habe auf der Seite des Herstellers inzwischen auch die einzubindende DLL gefunden und auch zwei Beispielprogramme dafür.. allerdings in Delphi.
    Da aber mein Auftraggeber sowieso das Hauptprojekt in Delphi schreiben wollte, muss ich mich so oder so damit auseinandersetzen
    Also werd ichs nun wohl in Delphi angehen - passt nur leider nicht mehr ganz hier ins Forum :)

    Und dankeschön für die Motivation! Das gibt grad wieder einen Schub :)
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!