Druckerinformationen abfragen (Konica Minolta)

  • VB.NET
  • .NET (FX) 4.0

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von CyberDannen.

    Druckerinformationen abfragen (Konica Minolta)

    Hallo zusammen,

    ich würde gerne Druckerinformationen, wie zb. Füllstand des Toners oder welches Papier gerade in welchem Fach ist, auslesen. Das ganze per vb.net.
    Das Drucken selber ist ja kein Problem, aber finde noch keine Informationen, wie ich solche Statusinformationen des Druckers abfragen kann.

    Darüber hinaus würde mich interessieren, ob man aus Vb.net den Drucker direkt über seine IP ansprechen kann, ohne das der Drucker auf dem PC, wo das Programm ausgeführt wird, installiert ist.

    Edit: Alternative besteht auch die Möglichkeit eine TCP Socketverbindung herzustellen. DIe Verbindung funktioniert soweit auch, finde aber keine Dokumentation dazu. Und der Rücgabestream vom Drucker ist leer :(

    Habt ihr hier Informationen zu ?

    Big THX

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „CyberDannen“ ()

    Hey,

    hierzu gibt es das sogenannte SNMP (Simple Network Management Protocol).
    Jeder Hersteller, der seine Geräte danach auslegt, stellt sogenannte MIBs/OIDs bereit, welche eine Art Tree darstellen zur jeweiligen Information.
    Lässt sich nach kurzem Einlesen sehr gut mit Arbeiten. Habe da auch schon was mit auf die Beine gestellt ;)

    Und ja, sofern der Drucker im gleichen Netzwerk ist, solltest du den per IP ansprechen können. ;)

    LG Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Guten Morgen,

    super die SNMP Verbindung läuft, suche nun nur noch nach der richtigen oidlib :(

    Das mit dem Drucken unter VB habe ich noch nicht richtig verstanden, ich suche mir ja den Standarddrucker raus und dann schicke ich den Druckauftrag. An welcher Stelle kann ich hier direkt die IP des Druckers angeben, ohne den Standard Drucker gewählt zu haben.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    CyberDannen schrieb:

    suche nun nur noch nach der richtigen oidlib

    Ja, das ist etwas komplexer. Was hast du für einen Drucker? Und was genau möchtest du auslesen?

    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    @RodFromGermany
    Klingt gut, habe nur Probleme, direkt den Printserver des Druckers abzufragen.Mein Localer Printserver funktioniert. Ist das direkte Abfragen überhaubt möglich ?

    Ich bekomme so nur Informationen, wenn ich einen Druckjob an den Drucker schicke, erst dann bekomme ich zb.die Info das die Tür offen ist.

    @Acr0most
    Finde zum Thema SNMP kein Hinweis auf eine direkt Implementationins dot net 4.5. Kennst du hier Informationsseiten? Über ein SNMP Testprogramm bekomme ich die Informationen. Nur die implementation ins VB.net Project macht mir zu schaffen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „CyberDannen“ ()

    Also ich habe damals die Lib SimpleSNMP verwendet.
    Du musst zunächst schauen, auf welcher SNMP-Version dein Drucker Daten zurückgibt.
    Dann benötigst du nur die richtigen OIDs und kannst damit Tonerstand etc. auslesen.

    Hier kurzes Beispiel auf der SimpleSNMP-Seite.

    Damit lässt sich auch ganz gut rumspielen.

    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Die meisten heutigen Drucker haben einen integrierten Webserver, wo diese Infos auf einer HTML-Seite stehen. Wenn man diese Seite ausliest, kommt man auch an die nötigen Infos. So mache ich es in der Firma. Zwar in PHP, aber spielt ja keine Rolle. Auf jeden Fall kommt man so ganz einfach an die Infos. Und die Seite wird sich nicht ändern, solange man kein Firmwareupdate macht. Nur als Tipp, falls der andere Weg zu kompliziert ist.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    CyberDannen schrieb:

    Testproblem

    Meinst bestimmt Testprogramm.

    Hast du auch bei snmp.Get(SnmpVersion.Ver3, requestOid) die anderen Versionen Ver1 und Ver2 getestet?
    Manche Drucker senden bspw. nur auf V2.

    Ansonsten passt die OID auch sicher zu deinem Drucker?

    @Marcus Gräfe:
    Auch eine gute Idee. Aber m.M.n. zu unbeständig. Wenn ein Firmwareupdate kommen sollte, und sich die Seite im Aufbau ändert, darfst du dein ganzes PHP-Skript neu schreiben. Die OIDs ändern sich nicht UND sind bei Druckern gleicher (ggf. auch verschiedener) Hersteller oft identisch. Sprich, wenn man das Programm für Drucker X auslegt, hat man ggf. Glück und kann damit auch Drucker Y auslesen. Die Webpage unterscheidet sich hingegen fast immer. Zudem genügt ein einfaches Mapping um OIDs mit den jeweiligen Properties zu verknüpfen ;)
    Aber je nach Anwendungsfall kann logischerweise auch die Web-Version vorteilhafter sein ^^

    LG Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    @Acr0most:
    Oh ja, Testprogramm :)

    V1 und V2 wird nicht untersützt, in der Weboberfläche ist auch zu lesen das SNMP V3 aktiviert ist. Über die ODI bekomme ich im Testprogramm eine ausgabe, das Selbe im simpleSNMP, bekomme ich keine Rückgabewert :(

    @Marcus Gräfe:
    Funktioniert in meinem Fall leider nicht so ohne Probleme, da die Struktur der Weboberfläche nicht einfach auszulesen ist. Alles in Frames und JS weiterleitungen mit Cookies und diversen Atributen verschachtelt.
    Poste mal deinen Code. Ggf. kann man dir da weiter helfen.

    PS: Hast du noch einen weiteren Drucker im Haus? Bspw. HP oder Kyocera? Da bin ich mir sicher, dass es funzt.

    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Gerne :_), nein leider keine anderen Drucker

    Quellcode

    1. Sub Get_Info_FromSNMP()
    2. Dim host As String = "xxx.xxx.xxx.xxx"
    3. Dim community As String = "initial"
    4. Dim requestOid() As String
    5. Dim result As Dictionary(Of Oid, AsnType)
    6. requestOid = New String() {"x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.xx"}
    7. Dim snmp As SimpleSnmp = New SimpleSnmp(host, community)
    8. If Not snmp.Valid Then
    9. Console.WriteLine("Invalid hostname/community.")
    10. Exit Sub
    11. End If
    12. result = snmp.Get(SnmpVersion.Ver3, requestOid)
    13. If result IsNot Nothing Then
    14. Dim kvp As KeyValuePair(Of Oid, AsnType)
    15. For Each kvp In result
    16. Debug.Print("{0}: ({1}) {2}", kvp.Key.ToString(), _
    17. SnmpConstants.GetTypeName(kvp.Value.Type), _
    18. kvp.Value.ToString())
    19. Next
    20. Else
    21. Debug.Print("No results received.")
    22. End If
    23. End Sub

    Versuche es mal bitte mit dem Community-string 'public'.

    Zudem ist SNMPv3 mit einer Art Verschlüsselung (User/PW) ausgestattet. Ggf. hat das der Gerätehersteller mit einbezogen und du musst du da nochwas mit hinschicken?


    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Also ich sag mal so: wenn dein Testprogramm auf OID XY was findet, dann solltest du das auch können und es liegt nur an eine Kleinigkeit - sprich Konfiguration oder sowas.
    Ansonsten kannst du noch eine weitere SNMP-Lib testen, vllt. geht es mir der. Oder weiter versuchen da was rauszubekommen.

    Aber ich denke auch: wenn v3 aktiviert ist, sollte man auch auf v2 was zurückbekommen.. Probier das bitte mal.

    Hast du ggf. noch eine Modell-Bezeichnung für deinen Drucker?

    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Model: KONICA MINOLTA 367

    Der Drucker hat auch einen Benachrichtigungsdienst, welchen man auf einen TCP Socket leiten kann. Auch schon versucht, aber irgendwie verschickt der Drucker nichts :(

    Ich denke mal, ich muss einfach was anders machen, und später nochmal dran, vieleicht fällt mir dann die Kleinigkeit auf :)
    Ok, dann warte ich mal gespannt auf eine Rückmeldung ;)

    Ich bin mir grad nicht sicher, aber hast du es bereits mit V1/V2 getestet oder nicht? Denn es kam nur, dass V3 aktiviert ist das du iwas üer TCP Socket leiten wolltest. Denn aus meiner Sicht kommen viele Bsp. im Netz mit V2 zum Einsatz - auch bei Konica Minolta.

    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup: