Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Drucker- und Dateiauswahl sowie CMD Umsetzung
SteelLynx1978
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

Drucker- und Dateiauswahl sowie CMD Umsetzung

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von SteelLynx1978 am .
Attachments
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
SteelLynx1978
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von SteelLynx1978 am .
private Nachricht | Beiträge des Benutzers
Lennart
myCSharp.de - Member



Dabei seit:
Beiträge: 416
Herkunft: Bawü

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

beantworten | zitieren | melden

@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...
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
SteelLynx1978
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

beantworten | zitieren | melden

@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.
private Nachricht | Beiträge des Benutzers

Moderationshinweis von herbivore (06.11.2014 - 12:04)

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