Seite 2 von 2

Re: Daten an Barcodedrucker senden

Verfasst: 14.02.2018 13:34
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

Re: Daten an Barcodedrucker senden

Verfasst: 14.02.2018 15:02
von Pelagio
Wenn es so einfach wäre,

leider habe ich dieses Beispiel schon versucht umzusetzen aber es funktioniert leider nicht.

Re: Daten an Barcodedrucker senden

Verfasst: 15.02.2018 11:15
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)