Sockets vb6,ZPL,套接字打印
我用java做过这个编程,它可以工作,但不能在vb6中运行(我需要) 基本上我需要通过网络将数据发送到zebra打印机。 整个过程正常(无错误报告,但打印机不打印)。 在Java中,我使用了:Sockets vb6,ZPL,套接字打印,sockets,vb6,zebra-printers,zpl,Sockets,Vb6,Zebra Printers,Zpl,我用java做过这个编程,它可以工作,但不能在vb6中运行(我需要) 基本上我需要通过网络将数据发送到zebra打印机。 整个过程正常(无错误报告,但打印机不打印)。 在Java中,我使用了: public void printOnions(ArrayList<String> DataArr){ // LH is x,y coordinates for starting position // FO is x,y coordinates to sta
public void printOnions(ArrayList<String> DataArr){
// LH is x,y coordinates for starting position
// FO is x,y coordinates to start current print
// BY sets the barcode size
// BC is code128 then orientation, height,
// print interpretation line, print above barcode,
// check digit
// A is font type, height and width
// FD data start, FS data end
String BarCode = DataArr.get(2) + "-" + DataArr.get(3);
transferType = "^MTT"; // use thermal transfer
String ZPLString = "^LH5,5" + transferType + // Sets the type to thermal transfer
"^BY2" + "^MNM" +
"^FO50,30" + "^ADN,96,20^FD" + DataArr.get(0) + " " + DataArr.get(1) + "^FS" +
"^FO250,130" + "^BCN,70,N,N,N" + "^FD" + BarCode + "^FS" +
"^FO50,230" + "^ADN,96,20^FD" + BarCode + " " + DataArr.get(4) + "^FS";
PrtTags(ZPLString);
}
public void initializeZPL(String printerIn) throws IOException {
try {
//create stream objs
int port = 9100;
Socket sock = new Socket(printerIn, port);
ostream = new FileOutputStream(printerIn);
pstream = new PrintStream(sock.getOutputStream() );
} catch (UnknownHostException ex) {
Logger.getLogger(ZebraZPLView.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ZebraZPLView.class.getName()).log(Level.SEVERE, null, ex);
// } catch (FileNotFoundException e) {
// e.printStackTrace();
}
}
public void PrtTags(String ZPLString){
try{
ZPLString = "^XA" + ZPLString + "^XZ";
char[] chars = ZPLString.toCharArray();
pstream.print(chars);
// pstream.close();
pstream.flush();
}
catch (Exception e) {
e.printStackTrace();
}
}
我缺少一些要打印的网络流。
有人有想法吗?
非常感谢
Dallag我编写了在VB6中打印到zebra标签打印机的代码,并通过安装正确的zebra打印机驱动程序实现了这一点。完成后,您只需使用VB6打印机对象向打印机发送文本即可
发送unicode字符的字节数组,即如果
ZPLString
是“X
”,则缓冲区包含2个字节;88 00
我怀疑您不希望使用
CharArray
来转换unicode,所以应该使用:buffer=StrConv(ZPLString,vbFromUnicode)
我发现您必须已经设置了一个端口。为RAW添加一个通用文本打印机集,并将其指向您的打印机,无论是COM1:、USB1:、网络名称还是IP地址。一旦端口存在,您就可以使用它。您好,谢谢,您看到打印机没有列在我电脑的打印机列表中。我不想使用打印机对象。我想t将原始数据发送到网络打印机。谢谢Hanks Alex,我已经尝试过了,但仍然没有输出。我认为问题更严重。您可以看到,在java或C中,使用FileOutputStream或networkstream将数据打印到套接字,但我不知道如何在vb6中执行此操作。非常感谢您的帮助。我想我必须重写整个遗留的vb6应用程序阳离子…….doh,或者制作一个支持com的c#dll,它只做发送,这是一个好主意,比重写代码更容易,非常感谢。
Dim Buffer() As Byte
Dim printer As String
printer = "ZBR3677984"
If sock.State = sckClosed Then
sock.RemoteHost = printer
sock.RemotePort = 9100
sock.Connect
Me.txtPrice.Text = "connected" & vbNewLine & sock.LocalHostName _
& vbNewLine & CStr(sock.RemotePort) _
& vbNewLine & CStr(sock.RemoteHost)
Dim ZPLString As String
ZPLString = "^LH10,10" & "^MTT" & "^BY2" & "^MNM" & _
"^FO15,0" & "^ADN,36,20^FD" & "Line-1 " & " Line 2 " & "^FS" & _
"^FO15,50" & "^ADN,56,40^FD" & "line-3 " & "^FS" & _
"^FO100,100" & "^BCN,70,N,N,N" & "^FD" & "line-4" & "^FS" & _
"^FO15,190" & "^ADN,56,40" & "^FD" & "line-5" & "^FS" & _
"^FO15,250" & "^BCN,70,N,N,N" & "^FD" & "line-6" & "^FS"
ZPLString = "^XA" + ZPLString + "^XZ"
ZPLString = "^XA" + "test" + "^XZ"
ReDim Buffer(Len(ZPLString)) As Byte
Buffer = ZPLString
sock.SendData Buffer
End If