Daten an Barcodedrucker senden

Für allgemeine Fragen zur Programmierung mit PureBasic.
Derren
Beiträge: 557
Registriert: 23.07.2011 02:08

Re: Daten an Barcodedrucker senden

Beitrag von Derren »

1 zu 1 das Beispiel aus der Hilfe nehmen?

Code: Alles auswählen

InitNetwork()

If OpenFTP(0, "127.0.0.1", "test", "test", 0)

  Result = SendFTPFile(0, OpenFileRequester("Choose a file to send", "", "*.*", 0), "SendFile.txt", 1)
  
  Repeat
    Debug FTPProgress(0)
    Delay(300)
  Until FTPProgress(0) = -3 Or FTPProgress(0) = -2

  Debug "finished"
  
Else
  MessageRequester("Error", "Can't connect to the FTP server")
EndIf
Signatur und so
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: Daten an Barcodedrucker senden

Beitrag von Pelagio »

Wenn es so einfach wäre,

leider habe ich dieses Beispiel schon versucht umzusetzen aber es funktioniert leider nicht.
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.10 LTS]. :allright:
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: Daten an Barcodedrucker senden

Beitrag von Pelagio »

Wenn man nicht aufgibt, kommt man irgendwann ans Ziel. :allright:
Und so will ich wenigstens meinen Lösungsweg offenlegen.

Code: Alles auswählen

Define.s mFTP, mPath, mFile

Procedure SendInitialize(vIP.s)
	Protected pID.i
	Shared mFTP, mPath, mFile

;fülle die Variablen die ich brauche
	mFTP  = vIP + ".ftp"
	mPath = GetPathPart(ProgramFilename())
	mFile = "SendFile.txt"

;Erstelle, sollte sie noch nicht vorhanden sein,
;die Datei mit dem FTP Code, die ich dann später
;über das RunProgramm als Parameter vorgebe
	If (FileSize(mFTP)=#PB_Any)
		pID = CreateFile(#PB_Any, mFTP)
		If pID
			WriteStringN(pID, "Open " + vIP, #PB_Ascii)
			WriteStringN(pID, "put " + mPath + "\" + mFile, #PB_Ascii)
			WriteStringN(pID, "disconnect", #PB_Ascii)
			WriteStringN(pID, "quit", #PB_Ascii)
		EndIf
		CloseFile(pID)
	EndIf
EndProcedure

Procedure.s ZebraPrinter(vBarCode.s, vText.s, vCount.s = "1")
	Protected pPrintSeq.s
	Define.i pH = 60, pW = 15

;/Nachrichtenstart
		pPrintSeq.s = "^XA"

;/Nullposition auf dem Etikett
		pPrintSeq + "^PON^LRN^LH000,000^FS"

;/Barcodedruck
	If Not (vBarcode=#Null$)
		pPrintSeq + "^FO020,16^BY2,3,55^B3,,,N^FD"   + vBarCode + "^FS"
	EndIf

;/Textzeilendruck
	If Not (vText=#Null$)
		If (vBarcode=#Null$)
			pPrintSeq + "^FO020,20^ABO," + pH + "," + pW + "^FD" + vText + "^FS"
		Else
			pPrintSeq + "^FO020,75^ABN^FD"            + vText + "^FS"
		EndIf
	EndIf
;/Etiketten Anzahl
		pPrintSeq + "^PQ" + vCount + "^FS"

;/Nachrichtenende
		pPrintSeq + "^XZ"

	ProcedureReturn pPrintSeq
EndProcedure

Procedure.a EtikettSend(vBarcode.s, vText.s, vCount.i = 1)
	Protected pOutputText.s
	Define.i pFileID, pFtpID
	Shared mSoloSetupData, mFTP, mPath, mFile

;Erstelle den Drucksequenz
	pOutputText = ZebraPrinter(Barcode, Text)

;Erstelle eine Datei mit der Drucksequenz
	If (pOutputText<>"")
		pFileID = CreateFile(#PB_Any, mFile, #PB_Ascii)
		If pFileID
			WriteString(pFileID, pOutputText, #PB_Ascii)
			CloseFile(pFileID)

;Führe das FTP-Programm aus
			RunProgram("ftp.exe","-n -i -s:" + mFTP, mPath, #PB_Program_Wait)

;Lösche die Drucksequenzdatei
			DeleteFile(mFile)

		Else
			MessageRequester("InfoBox: Error", "Die Daten konnten nicht gespeichert werden.", #MB_ICONERROR)
			ProcedureReturn #False
		EndIf
	EndIf
	Procedurereturn #True
EndProcedure

SendInitialize(IP-Adresse)
EtikettSend(Barcode, Text, Anzahl)
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.10 LTS]. :allright:
Antworten