Laden...

Drucker- und Dateiauswahl sowie CMD Umsetzung

Erstellt von SteelLynx1978 vor 9 Jahren Letzter Beitrag vor 9 Jahren 2.357 Views
Thema geschlossen
S
SteelLynx1978 Themenstarter:in
3 Beiträge seit 2014
vor 9 Jahren
Drucker- und Dateiauswahl sowie CMD Umsetzung

Hallo zusammen,

nach drei Tagen Arbeit und vielen Versuchen mit Google sowie rumstümpern, muss ich jetzt mal nach Hilfe fragen.

Wir benutzen auf der Arbeit ein Tool (printraw.exe) mit welchem wir XXX.txt Files (in IPL) als Konfigurationseinstellungen an Drucker senden.
Bisherige vorgehensweisse:
CMD öffnen --> printraw.exe C:\DATA\blablabla.txt Drucker1 (jeweils mit Leerzeichen)
also -----------> Programm Konfig-Datei Installierter-Drucker

Da die IPL Programmierer das anscheinend nicht hinbekommen über die CMD, dachte ich mir: Mach ich ein kleiner Program, mit Eingabefeldern. Sprich C# WinForms 😃

Habe dann erstmal geschaut, ob das überhaupt klappt:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Project1
{
    class Class1
    {
        public static void Main()
        {
            //Variabelen
            string line1;
            string line2;
            string output;

            //Text Config
            Console.WriteLine("Config-File");
            Console.WriteLine();
            line1 = Console.ReadLine();

            //Text Printer
            Console.WriteLine("Printer");
            Console.WriteLine();
            line2 = Console.ReadLine();


            //String combine
            output = String.Format("/K C:\\DATA\\Intermec\\VW\\printraw.exe C:\\DATA\\Intermec\\VW\\{0} {1}", line1, line2);

            System.Diagnostics.Process.Start("CMD.exe", output);
        }
    }
}

Soweit, sogut! Nun die realisierung in der Forms-Variante:


using System;
using System.Diagnostics;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    

    public partial class Form1 : Form
    {
        
        //Variabelen
        static string Config;
        static string Printer;
        


        public Form1()
        {
            InitializeComponent();
        }

        //Config-File
        public void Configfile_TextChanged(object sender, EventArgs e)
        {
            
            Config = Configfile.Text;
        }

        //Printer
        public void Printername_TextChanged(object sender, EventArgs e)
        {
            Printer = Printername.Text;
        }

        public string Output = String.Format("/K \"C:\\DATA\\Intermec\\VW\\printraw.exe C:\\DATA\\Intermec\\VW\\{0} {1}\"", Config, Printer);


     

        //Sendbutton
        private void button1_Click(object sender, EventArgs e)
        {
            
           System.Diagnostics.Process.Start("CMD.exe", this.Output);
           
        }

       
    }
}

Und da klappt irgendwas nicht. Die CMD öffnet sich, ich erhalte aber immer eine Anzeige, als wenn ich nur Printraw.exe ohne Parameter eingegeben hätte.
Das ist bestimmt nur eine Kleinigkeit im Syntax, aber ich komme nicht drauf!
Bin "nur" ein Systemintegrator und meine Programmier-Erfahrung ist schon ein gutes stück eingerostet. Sorry, sollte es wirklich einfach sein, aber ich bin einfach am Ende.

(Anhang die Win-Form für Visual C#)

Danke schonmal für die Mühe

4.221 Beiträge seit 2005
vor 9 Jahren

Wenn es keinen Grund gibt dass man printraw verwenden muss... dann findest Du x-Beispiele im Internet wie das DIREKT geht (File einlesen und an einen Drucker pushen).

z.B: KB322091: Wie Sie unformatierte Daten an einen Drucker senden, indem Sie mithilfe von Visual C# .NET

Googeln nach "c# print raw"

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
SteelLynx1978 Themenstarter:in
3 Beiträge seit 2014
vor 9 Jahren

Hallo Programmierhans,

ist zwar ein guter Ansatz, aber zum einen macht C# RawPrinterHelper nichts anderes als Printraw.exe (außer das ich noch ganze seiten Code dazu schreiben muß), zum anderen wird es im RawPrinterHelper so beschrieben: "However, with the .NET Framework, you cannot send preformatted printer-ready data to a printer".
Heist also: keine formatierten Daten.

Um das nochmal deutlich zu machen, ICH WILL NICHT DRUCKEN, es geht um das Senden von, in IPL verfassten, Konfigurationsfiles.
Diese werden im Speicher des Druckers in vorgegebenen Locationen abgelegt und werden dann über SAP mit Daten gefüttert.

SAP-Zeichenketten + Konfig File = Barcode-Label

L
416 Beiträge seit 2008
vor 9 Jahren

Naja dein "Output" wird beim Start des Programs einmal gesetzt und bleibt dann für immer so. Das ist aber etwas was du innerhalb von 1 min hättest selber rausfinden können:
[Artikel] Debugger: Wie verwende ich den von Visual Studio?

4.221 Beiträge seit 2005
vor 9 Jahren

@SteelLynx1978

Na wenn Du keine erprobte Lösung willst, dann viel Spass beim frickeln.

Dieses Basisverfahren funktioniert bei Pago / Zebra / Intermec und sicher auch bei anderen Makrodruckern im Hostmodus.

Nb: ihr seid nicht die einzigen die aus SAP auf solche Druckertypen drucken.

Gruss
Programmierhans

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

4.221 Beiträge seit 2005
vor 9 Jahren

Wenn schon frickeln... Dann in etwa so

(Gar nicht so einfach zu editieren auf einem Pad)


using System;
using System.Diagnostics;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    

    public partial class Form1 : Form
    {
        
       

        public Form1()
        {
            InitializeComponent();
        }

        public string Output 
       {
          get
          {
             return String.Format("/K \"C:\\DATA\\Intermec\\VW\\printraw.exe C:\\DATA\\Intermec\\VW\\{0} {1}\"", Configfile.Text, Printername.Text);
          }
       }


     

        //Sendbutton
        private void button1_Click(object sender, EventArgs e)
        {
            
           System.Diagnostics.Process.Start("CMD.exe", this.Output);
           
        }

       
    }
}

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
SteelLynx1978 Themenstarter:in
3 Beiträge seit 2014
vor 9 Jahren

@Programmierhans

Ja!!! Genau das hatte ich gesucht.....Danke.

War schon etwas her bei mir, mit dem Programmieren, und ich bin einfach nicht mehr auf den get/set Syntax gekommen.

Hinweis von herbivore vor 9 Jahren

Welche wir allerdings als bekannt voraussetzen. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

Thema geschlossen