![]() |
Anzahl der Drucke eines Druckers abfragen
Hallo,
ich möchte ein Tool schreiben, mit dem ich die Anzahl der Ausdrucke eines Druckers abfragen kann. Das hat den zweck dass man weiß, wann eine Trommeleinheit ausgetauscht werden muss. Diese Drucker global verteil also in ganz Deutschland. Nur leider weiß ich nicht wie ich die Drucker ansprechen kann. :?::?::?: |
AW: Anzahl der Drucke eines Druckers abfragen
Hallo, vielleicht ist ja diese
![]() |
AW: Anzahl der Drucke eines Druckers abfragen
Ich würde mich wundern, wenn diese Komponente das allgemein könnte.
Wir mussten dafür über die druckerspezifische API des Druckerherstellers gehen. |
AW: Anzahl der Drucke eines Druckers abfragen
geht das denn nicht über die IP oder so ?
ich bin ein anfänger in Delphi nicht wundern :D |
AW: Anzahl der Drucke eines Druckers abfragen
Es geht über SNMP. Die MIB sind aber oft druckerspezifisch. Oft erfolgt auch die Rückgabe der Tonerstände in 25%-Schritten und ist damit nicht vernünftig zu verwenden. Hier mal ein Ansatz, die MIBs sind in der Funktion InitMibValues einfach anpassbar bzw. erweiterbar:
Delphi-Quellcode:
uses IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient, IdSNMP;
{$R *.dfm} procedure TForm1.btnQueryClick(Sender: TObject); var Snmp: TIdSNMP; MibIndex: Integer; MibValues : TStringList; MibLabel : string; ValIndex : Integer; begin Snmp := TIdSNMP.Create(nil); MibValues := TStringList.Create; try Snmp.Query.Host := edtIp.Text; Snmp.Query.Community := 'public'; Snmp.Query.PDUType := PDUGetRequest; InitMibValues(MibValues); for MibIndex := 0 to MibValues.Count -1 do begin Snmp.Query.MIBOID.Clear; MibLabel := MibValues.Names[MibIndex]; Snmp.Query.MIBAdd(MibValues.ValueFromIndex[MibIndex], ''); if Snmp.SendQuery then begin for ValIndex := 0 to Snmp.Reply.ValueCount - 1 do MemoResult.Lines.Add(Format('%-20s: %s', [MibLabel, Snmp.Reply.Value[0]])); end; end; finally MibValues.Free; Snmp.Free; end; end; procedure TForm1.InitMibValues(AList: TStrings); const PrintPrefix = '1.3.6.1.2.1.'; var i : integer; begin AList.Values['Geräteinformation'] := '1.1.0'; AList.Values['Gesamtseiten'] := '43.10.2.1.4.1.1'; AList.Values['Tonerstand 1'] := '43.11.1.1.9.1.1'; AList.Values['Tonerstand 2'] := '43.11.1.1.9.1.2'; AList.Values['Tonerstand 3'] := '43.11.1.1.9.1.3'; AList.Values['Tonerstand 4'] := '43.11.1.1.9.1.4'; for i := 0 to AList.Count-1 do begin AList.ValueFromIndex[i] := PrintPrefix + AList.ValueFromIndex[i]; end; end; |
AW: Anzahl der Drucke eines Druckers abfragen
Okay versuche gerade deinen quellcode zu benutzen aber ich habe noch ein kleines problem und zwar zeigt er mir an, dass InitMibValues ein undeklarierter Bezeichner ist
wo liegt den mein Fehler? |
AW: Anzahl der Drucke eines Druckers abfragen
Ich habe das als Methode des Formularobjekts deklariert. Entweder Du machst das auch, oder Du machst eine normale Funktion draus und verlagerst sie vor den Aufrufer.
Delphi-Quellcode:
type
TForm1 = class(TForm) btnQuery: TButton; edtIP: TEdit; Label1: TLabel; memoResult: TMemo; procedure btnQueryClick(Sender: TObject); private { Private-Deklarationen } procedure InitMibValues(AList : TStrings); // <<<<<<<<<<<< hier deklarieren public { Public-Deklarationen } end; |
AW: Anzahl der Drucke eines Druckers abfragen
okay danke jz habe ich keine Fehler mehr auf dem Bildschirm.
Jetzt bleibt nur noch die Frage wie ich das Tool benutze ich habe oben im Edit Feld die Ip des Druckers eingegeben doch da passiert nichts ? Tut mir leid es ist früh am Morgen ich steh ein bisschen auf dem Schlauch zudem bin ich ein anfänger in Delphi :stupid: |
AW: Anzahl der Drucke eines Druckers abfragen
Zitat:
Schau mal hier: ![]() Insbesondere Kapitel 5! |
AW: Anzahl der Drucke eines Druckers abfragen
hnm.... und wie bringe ich es jz zum laufen ?
|
AW: Anzahl der Drucke eines Druckers abfragen
Welchen Druckertyp hast Du? Und läuft das SNMP.SendQuery ohne Fehler durch?
|
AW: Anzahl der Drucke eines Druckers abfragen
utax clp 3626 ja es läuft ohne fehler durch nur am ende kommt kein resultat heraus
|
AW: Anzahl der Drucke eines Druckers abfragen
Eigentlich sollten die Werte auch für TA / Utax stimmen. Ansonsten kontaktierst Du den Support von denen. SMNP muß beim Drucker eingeschaltet sein.
|
AW: Anzahl der Drucke eines Druckers abfragen
Aber so einfache Dinge wie OnClick des Buttons im Objectinspektor zugewiesen hast du schon gemacht?
|
AW: Anzahl der Drucke eines Druckers abfragen
ja natürlich soviel weis ich auch :D
|
AW: Anzahl der Drucke eines Druckers abfragen
Entschuldige. Ist bei dir Snmp.Reply.ValueCount = 0?
|
AW: Anzahl der Drucke eines Druckers abfragen
Delphi-Quellcode:
ja
for ValIndex := 0 to Snmp.Reply.ValueCount - 1 do
MemoResult.Lines.Add(Format('%-20s: %s', [MibLabel, Snmp.Reply.Value[0]])); end; |
AW: Anzahl der Drucke eines Druckers abfragen
In diesem Fall sind die OID falsch bzw. ist SNMP auf dem Gerät deaktiviert. Wenigstens das Geräteinfo sollte nämlich sonst immer kommen:
Code:
Geräteinformation : Brother NC-6700h, Firmware Ver.1.02 (11.05.12),MID 8CE-217,FID 2
Gesamtseiten : 558 Tonerstand 1 : -3 Tonerstand 2 : -3 Tonerstand 3 : -3 Tonerstand 4 : -3 |
AW: Anzahl der Drucke eines Druckers abfragen
Hmn ich habe schon gegoogelt ob es einstellungen für den Drucker gibt die SNMP bestreffen aber nichts gefunden also gehe ich davon aus das es Standardmäßig aktiv ist.
Ich habe auch meinen Computer überprüft dort scheint alles in ordnung zu sein von den Einstellungen usw.. hmn |
AW: Anzahl der Drucke eines Druckers abfragen
Kannst Du über das Webinterface auf den Drucker zugreifen? Und hast Du schon mit einigen der frei verfügbaren SMNP Tools geprüft ob die was liefern?
|
AW: Anzahl der Drucke eines Druckers abfragen
aber wenn wir schon dabei sind habe ich mal eine Verständnisfrage:
Delphi-Quellcode:
wie kommst du auf diese Zahlen ? :cyclops:
AList.Values['Geräteinformation'] := '1.1.0';
AList.Values['Gesamtseiten'] := '43.10.2.1.4.1.1'; AList.Values['Tonerstand 1'] := '43.11.1.1.9.1.1'; AList.Values['Tonerstand 2'] := '43.11.1.1.9.1.2'; AList.Values['Tonerstand 3'] := '43.11.1.1.9.1.3'; AList.Values['Tonerstand 4'] := '43.11.1.1.9.1.4'; |
AW: Anzahl der Drucke eines Druckers abfragen
Durch Suche im Internet.
|
AW: Anzahl der Drucke eines Druckers abfragen
okay danke :)
und wie komme ich auf das webinterface meines druckers?:stupid::stupid: |
AW: Anzahl der Drucke eines Druckers abfragen
Im Browser die IP des Druckers aufrufen.
|
AW: Anzahl der Drucke eines Druckers abfragen
hmn das habe ich jz schon öfters probiert klappt aber nicht, deshalb auch die frage
|
AW: Anzahl der Drucke eines Druckers abfragen
Zitat:
Das scheinen aber nur Gerüchte zu sein :roll: |
AW: Anzahl der Drucke eines Druckers abfragen
Hat der Drucker überhaupt ein Webinterface? Union scheint sich da zwar sicher zu sein, aber ich würde einfach mal einen Blick ins Handbuch werfen, vielleicht erledigen sich die anderen Probleme (z.B. Aktivieren von SNMP) damit auch von selbst.
|
AW: Anzahl der Drucke eines Druckers abfragen
Liste der Anhänge anzeigen (Anzahl: 1)
okay ich werde das jz mit einem anderen drucker versuchen um dessen ip heraus zu bekommen ich habe dafür eine funktion
Delphi-Quellcode:
doch wenn ich den code ausführen will erhalte ich diese Fehlermeldungen (Bild im Anhang)
function GetLocalIPs(const Lines:TStrings):Boolean;
type PPInAddr= ^PInAddr; var wsaData: TWSAData; HostInfo: PHostEnt; HostName: Array[0..255] of Char; Addr: PPInAddr; begin Result:=False; Lines.Clear; if WSAStartup($0102, wsaData)=0 then try if gethostname(HostName, SizeOf(HostName)) = 0 then Begin HostInfo:= gethostbyname(HostName); if HostInfo<>nil then Begin Addr:=Pointer(HostInfo^.h_addr_list); if (Addr<>nil) AND (Addr^<>nil) then Repeat Lines.Add(StrPas(inet_ntoa(Addr^^))); inc(Addr); Until Addr^=nil; end; end; Result:=True; finally WSACleanup; end; end; |
AW: Anzahl der Drucke eines Druckers abfragen
Ändere
Delphi-Quellcode:
in
HostName: Array[0..255] of Char;
Delphi-Quellcode:
ab.
HostName: Array[0..255] of AnsiChar;
EDIT : Diese Funktion liefert dir allerdings meiner Meinung nach die IP-Adresse deines Rechners. |
AW: Anzahl der Drucke eines Druckers abfragen
gut danke habe das problem jetzt gefunden ist leicht peinlich der drucker war nicht am netzwerk angeschlossen :D sorry und danke für eure hilfe
|
AW: Anzahl der Drucke eines Druckers abfragen
Richtig.
Zitat:
|
AW: Anzahl der Drucke eines Druckers abfragen
Der war gut. Geht es denn jetzt?
|
AW: Anzahl der Drucke eines Druckers abfragen
ja danke :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz