Forum: Markt Auftrag für ein VB Programm


von Meister E. (edson)


Lesenswert?

Hallo Forum,

ich suche jemanden, der mir eine .exe erstellt, die folgende Leistungen 
abdecken soll:

Das Programm soll in einstellbaren Intervallen eine Datei in einem 
definierbaren Verzeichnis auslesen und deren Inhalt über den Serialport 
ausgeben. Über den Serialport empfangene Daten müssen in eine zweite 
Datei geschrieben werden. Zusätzlich muss das Programm eine Pfadangabe 
aus der ersten Datei erkennen und die am 'Ende' des Pfads abgelegte 
.PDF-Datei über einen Druckertreiber an den Drucker ausgeben.

Soweit die Beschreibung im Groben, mehr Infos gibts wenn sich was 
konkretes 'abzeichnet'.

Eins noch: Ich habe schon selbst versucht dieses Programm unter VB2008 
zu erstellen, habe aber keine Ahnung von Druckertreibern und deren 
'Anbindung' an ein Windows-Programm. Wer mir Hilfe leistet in Form 
verwertbarer Informationen, soll also auch nicht leer ausgehen.

Also meldet euch bitte wenns euch interessiert. Nennt auch einen 
Zeitrahmen und eine Preisvorstellung, ich antworte garantiert.

Gruss,
Edson

von Meister E. (edson)


Lesenswert?

Entschuldigung, kann bitte einer der Moderatoren diesen Beitrag nach 
'Ausbildung&Beruf' verschieben?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Ist das auf EXE beschränkt, oder darf es auch ein Javaprogramm sein?
--> mit Java wärs recht leicht hinzukriegen denk ich ;)

von Sven P. (Gast)


Lesenswert?

Hmm... evtl. täts da schon ein Shellskript...

* Regelmäßigkeit: Cronjob bzw. Schleife mit einfachem "sleep"
* Drucken: "lp datei.pdf"
* Schnittstelle einrichten: "stty"
* Senden: "echo blabla > /dev/ttyS0"
* Lesen: "cat /dev/ttyS0 > protokolldatei.txt"

Und jetzt sag noch einer, die Linux-Konsole wär net effizient?!
(Seitenhieb: Beitrag "wieso ist linux sicherer" )

Unter Windows würd mal sowas wenn überhaupt denk ich mal mit VBScript 
anpacken.

von Meister E. (edson)


Lesenswert?

@Läubi

>oder darf es auch ein Javaprogramm sein?

Ehrlich gesagt wäre es mir als .exe lieber, habe mich noch nie mit Java 
beschäftigt. Da ich ohnehin eine Sprache für die PC-Programmierung 
lernen muss, könnt ichs natürlich auch mit Java versuchen.

Auch wenn ich in diesem Fall eine fertige Lösung kaufen würde, es ist 
mein Ziel derartige Problemstellungen in Zukunft selbst zu lösen. Daher 
sollte ich die angewandte Sprache zumindest rudimentär kennen (Schon 
wegen der Aufgabenstellung, die ich so ausführlich wie möglich übergeben 
möchte). Ich seh mich jetzt mal bezüglich Entwicklungswerkzeugs um, dann 
sehen wir weiter.
BTW. welche Tools nutzt du denn?

@Sven

Shellskript, LinuxKonsole? Kommt leider nicht in Frage, weils unter 
Windows laufen muss.
Klär mich bitte auf, wenn ichs nicht kapiert habe. Danke einstweilen.

Gruss,
Edson

von Oliver (Gast)


Lesenswert?

Also ich würds mit Python lösen...

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Naja, alles was du brauchst gibt es kostenlos unter www.java.com als 
entwicklungsumgebung hat sich eigentlich Eclipse bewährt, wobei ich alle 
meine Programme im Texteditor verfasse. Vorteil bei java ist halt auch: 
Läuft (wenn nix betriebssystemspezifisches benuzt wird) ohne Anpassung 
unter (fast) allen gängigen Betriebssystemen.
Ich benutze zur Zeit nen recht simplex Programm um z.B. Messwerte von 
einem Mikrocontroller zu empfangen und graphisch darzustellen.

@Shellskript: Ich glaub es soll aus den empfangenen Daten ein Dateiname 
extrahiert und ausgedruckt werden.
Ansosnten geht das auch mit nem Batchfile problemlos unter windows.

von Sven P. (Gast)


Lesenswert?

>@Shellskript: Ich glaub es soll aus den empfangenen Daten ein Dateiname
>extrahiert und ausgedruckt werden.
>Ansosnten geht das auch mit nem Batchfile problemlos unter windows.

K.A., nie damit gearbeitet. Extrahieren... hmm... evtl. ne Portierung 
von GNU AWK oder sowas benutzen?

von Meister E. (edson)


Lesenswert?

@Läubi
Danke für die Infos, ich seh mich noch um. Der Dateipfad muss, wie du 
richtig sagtest, aus einer Textdatei extrahiert werden. Die Ausgabe auf 
den Drucker muss ohne irgendwelche (Windows-)Aufforderungen erfolgen. 
Mit dem Treiber bin ich ziemlich festgelegt, da ein schon vorhandener 
Thermotransferdrucker angesprochen werden soll.

>Ansosnten geht das auch mit nem Batchfile problemlos unter windows.

Genau das ist das Problem, wenns nur Dateien kopieren und Serialport 
lesen wäre, hätte ich es auch so gemacht. Aber wie bekomme ich einen 
Druckertreiber so in den Griff, dass mein Programm die nötigen 
Einstellungen automatisch vornimmt? Wie würdest du es denn mit Java 
lösen, kannst du 'dort' mit Treibern umgehen?

@Oliver
Ich hab mir grad ein Buch zu Python bestellt. Wenn die Sprache so leicht 
zu lernen ist wie's einem angepriesen wird, müsst ich am Sonntag schon 
fertig sein...
Ok, ernsthaft: Hast du Erfahrungen mit Druckertreibern?

@Sven
Jetzt wirds aber kryptisch...

Gruss,
Edson

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Naja kannst bei Interesse mir ja mal ne PN schreiben mit etwas mehr 
details und deinen Vorstellungen vieleicht ließe sich da was machen. Ist 
der Drucker USB oder Parrallelport? Bei USB könnte es schwer werden ohne 
"(Windows-)Aufforderungen" (was auch immer das genau beeinhaltet) und 
ausdruck eines PDF...

von Sven P. (Gast)


Lesenswert?

Also bei DOS konnte man einfach ne Datei auf "LPT1" kopieren, was dann 
den Ausdruck bewirkt hatte.

Unter Linux geht das zuweilen immer noch, wenngleich man doch lieber auf 
das "lp"-Programm ausweichen sollte, was dann den Rest erledigt (auch 
über Netzwerk und so weiter).

Unter Windows... da gibts/gabs doch auch so ne Druckerwarteschlange?! Im 
Zweifelsfall mal über "rundll32.exe" und die ShellExecute-Funktion 
gehen, da findet sich bestimmt was...

Nur ein Problem stellt sich mir da noch: Bei Linux kümmert sich der 
Druckerspooler (nachdem mit "lp" gedruckt wurde) darum, PDF, Postscript 
oder was auch immer in ein für den Drucker verständliches Format zu 
wandeln. Unter Windows wirste ohne Adobe Acrobat (Reader) wohl kaum ein 
PDF gedruckt bekommen.

von Meister E. (edson)


Lesenswert?

@Sven

Danke, aber es soll nicht über die Kommandozeile realisiert werden.

>Nur ein Problem stellt sich mir da noch: Bei Linux kümmert sich der
>Druckerspooler (nachdem mit "lp" gedruckt wurde) darum, PDF, Postscript
>oder was auch immer in ein für den Drucker verständliches Format zu
>wandeln.

Das ist schön. Aber ich habe hier einen Lap mit XP, da ist nichts dran 
zu rütteln.

>Unter Windows wirste ohne Adobe Acrobat (Reader) wohl kaum ein PDF gedruckt 
>bekommen.

Kannst du da mehr dazu sagen? Ich glaube es nämlich nicht.

Gruss,
Edson

von yalu (Gast)


Lesenswert?

>> Unter Windows wirste ohne Adobe Acrobat (Reader) wohl kaum ein PDF
>> gedruckt bekommen.
>
> Kannst du da mehr dazu sagen? Ich glaube es nämlich nicht.

Auch Ghostscript (das es auch für Windows gibt) kann PDFs verarbeiten.
Es wird auch von den Linux-Druckerspoolern benutzt.

Mit bordeigenen Mitteln können unter Windows natürlich keine PDFs
gedruckt werden, das PDF kein von MS akzeptiertes Dateiformat ist. Du
wirst deswegen auch kein einziges MS-Programm mit einer
PDF-Exportfunktion finden.

Gibt es nicht inzwischen Drucker, die PDFs direkt verarbeiten können?
Damit wär's ja wieder einfach.

von David (Gast)


Lesenswert?

Mit Windows Bord eigenen Mitteln gehts echt nicht.
Aber es gibt doch passende Libraries:
zB http://www.colorpilot.com/pdflibrary.html

damit wird das ganze ein Kinderspiel




' connect to library

Set PDF = CreateObject("PDFCreatorPilot3.PDFDocument3")

 ' initialize PDF Engine

 PDF.StartEngine "demo@demo", "demo"

 ' set PDF ouput filename

 PDF.FileName = "HelloPDF_VB.pdf"

 PDF.AutoLaunch = True ' auto-open generated pdf document

 ' start document generation

 PDF.BeginDoc

 ' draw"HELLO, PDF" message on the current PDF page

 PDF.PDFPAGE_SetActiveFont "Verdana", True, False, False, False, 14, 0

 PDF.PDFPAGE_TextOut 10, 20, 0, "HELLO, PDF!"

 ' finalize document generation

 PDF.EndDoc

 ' disconnect from library

 Set PDF = Nothing

 End Sub

von David (Gast)


Lesenswert?

Oops es ging wohl eher darum die PDF einfach nur zu drucken.
Geht mit ActiveX Objekten:
http://www.pdfprintcontroller.com/

von Jojo S. (Gast)


Lesenswert?

wenn der Adobe AcrobatReader installiert ist dann sind auch die Typelibs 
für die verwendeten COM Objekte vorhanden. Die lassen sich über Interop 
auch in .NET Projekten verwenden.
Im Objektbrowser findet man dann z.B. die Klasse 'AcroAVDocClass' die 
auch 'PrintPages()' Member hat. Ich vermute damit kriegt man einen PDF 
Ausdruck auch schnell zusammen.
Fies ist bei solchen Komponentenlösungen nur wenn ein Adobe Update 
gemacht wird und dann die verwendeten Komponenten deinstalliert werden. 
Aber immerhin isses billich und geht schnell.

von Meister E. (edson)


Lesenswert?

@yalu

>Mit bordeigenen Mitteln können unter Windows natürlich keine PDFs
>gedruckt werden, das PDF kein von MS akzeptiertes Dateiformat ist. Du
>wirst deswegen auch kein einziges MS-Programm mit einer
>PDF-Exportfunktion finden.

Ok, 'bordeigen' gehts nicht, hab ich schon kapiert.

>Gibt es nicht inzwischen Drucker, die PDFs direkt verarbeiten können?
>Damit wär's ja wieder einfach.

Die gibt es vielleicht, ich habe aber keinen zur Verfügung.


@David

>Oops es ging wohl eher darum die PDF einfach nur zu drucken.

So ist es.

>Geht mit ActiveX Objekten:
>http://www.pdfprintcontroller.com/

Danke für diesen Link, sieht interessant aus.


@jojos

>wenn der Adobe AcrobatReader installiert ist dann sind auch die Typelibs
>für die verwendeten COM Objekte vorhanden. Die lassen sich über Interop
>auch in .NET Projekten verwenden.

Na, dafür kann man ja sorgen. :)

>Im Objektbrowser findet man dann z.B. die Klasse 'AcroAVDocClass' die
>auch 'PrintPages()' Member hat. Ich vermute damit kriegt man einen PDF
>Ausdruck auch schnell zusammen.

Werd ich mir auf jeden Fall mal merken.

>Fies ist bei solchen Komponentenlösungen nur wenn ein Adobe Update
>gemacht wird und dann die verwendeten Komponenten deinstalliert werden.
>Aber immerhin isses billich und geht schnell.

Das wäre allerdings be...scheiden.

von Oliver (Gast)


Lesenswert?

Etwas ausgedruckt mit Python habe ich noch nie, es gibt aber AFAIK die 
Möglichkeit den Acrobat Reader mit einem Kommandzeilenargument 
aufrzurufen, welcher dann das ebenfalls als Argument angegebene PDF auf 
dem Standarddrucker ausdruckt. Und das ist nun keine Sache mehr mit 
Python.

von Oliver (Gast)


Lesenswert?

Habs kurz nachgeschaut. Ein einfaches:

import win32api
win32api.ShellExecute(0, "print", "C:/pfad/zu/pds.pdf", None, None, 0)

reicht um das PDF zu drucken. Installierter Acrobat Reader natürlich 
vorausgesetzt.

von Meister E. (edson)


Lesenswert?

@Oliver

>Etwas ausgedruckt mit Python habe ich noch nie,

Probiers doch mal ;)

>es gibt aber AFAIK die Möglichkeit den Acrobat Reader mit einem 
>Kommandzeilenargument aufrzurufen, welcher dann das ebenfalls als Argument 
>angegebene PDF auf dem Standarddrucker ausdruckt.

Das klingt für mich nach heile Welt :)

>Und das ist nun keine Sache mehr mit Python.

Schaun mer mal...


Edit: Die Posts haben sich wohl überschnitten...

>Habs kurz nachgeschaut. Ein einfaches:

>import win32api
>win32api.ShellExecute(0, "print", "C:/pfad/zu/pds.pdf", None, None, 0)

>reicht um das PDF zu drucken. Installierter Acrobat Reader natürlich
>vorausgesetzt.

Besteht da nicht auch das angesprochene Problem wegen den 
Acrobat-Updates?

von Oliver (Gast)


Lesenswert?

Nö, dieses Problem besteht nicht, da so ja nicht auf die COM Objekte 
zugegriffen wird sondern es wird effektiv der Reader im Hintergrund 
geöffnet und das PDF gedruckt.

von Meister E. (edson)


Lesenswert?

Danke, Oliver. Das schaut gut aus!

von Oliver (Gast)


Lesenswert?

Gern geschehen. Wenn du noch weitere Fragen hast, nur zu.

von Meister E. (edson)


Lesenswert?

@ Alle, die sich nach dem zweiten Mail nicht mehr gemeldet haben:

Wenn euch zu wenig geboten wurde oder ihr nicht mehr sicher seid, ob ihr 
die Sache überhaupt in den Griff bekommt, wäre wenigstens eine Absage 
'nett' gewesen. Versteht mich nicht falsch, ich bin keinem sauer, aber 
einfach kommentarlos abziehen bringt mich nicht weiter!

Gruss,
Edson

von Langer (Gast)


Lesenswert?

Das ist hier leider so üblich. Alle reißen die Klappe auf und pusten 
heiße Luft sind aber nicht bereit oder in der Lage irgendwas zu leisten.
Ich würde sagen: 75% der hier Auftauchenden kann man getrost in die 
Tonne stecken: keine soziale Kompetenz, nur haben wollen, nichts geben, 
nur meckern und zetern, nie konstruktiv sein sondern meist nur 
destruktives von sich geben können.....
Geh in ein anderes Forum (z.B. VB Forum) und stelle die Frage dort. Da 
findest du auch noch vernüftige Menschen.
Kannst du vergessen hier.

von Meister E. (edson)


Lesenswert?

>Das ist hier leider so üblich.

Es scheint auf jeden Fall öfter so abzulaufen.

>Alle reißen die Klappe auf und pusten heiße Luft sind aber nicht bereit
>oder in der Lage irgendwas zu leisten. Ich würde sagen: 75% der hier
>Auftauchenden kann man getrost in die Tonne stecken: keine soziale
>Kompetenz, nur haben wollen, nichts geben, nur meckern und zetern, nie
>konstruktiv sein sondern meist nur destruktives von sich geben können.....

Na ja, so schlimm habe ich es jetzt auch nicht empfunden. Die ersten 
Kontakte waren eigentlich sehr vielversprechend, vielleicht ist da was 
anderes schief gegangen...

>Geh in ein anderes Forum (z.B. VB Forum) und stelle die Frage dort. Da
>findest du auch noch vernüftige Menschen.

Versuchen kann ich es ja mal, danke für den Hinweis.

>Kannst du vergessen hier.

Nein, so schwarz sehe ich nicht (Solltest du vielleicht auch nicht), für 
den Erfahrungsaustausch ist dies schon ein wertvolles Forum.

Aber danke für deine Anteilnahme, jede Entwicklung birgt Potential für 
Rückschläge und Enttäuschungen, man darf sich halt nicht zu 100% auf 
Andere verlassen. Das tue ich nie, daher kann ich das schon ab, kein 
Problem.

Gruss,
Edson

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.