2 u010002418 u010002418 于 2015.06.20 20:05 提问

C# Zebra条码USB打印,通信结束后打印卡死,打印设备端口感叹号,重启打印机就正常。

1.我是C#的斑马USB条码打印,程序运行后,一个button控件测试打印是没问题的。但进行一系列COM口的SerialPort通信操作后,再打印就卡死。这时如果重启打印机,就可以继续打印。
发现这时打印设备端口有黄色感叹号,请问这是什么原因,是线程卡死吗?怎样破啊。以下是打印的两个主要方法代码,谢谢。
2.
//运行这个方法就可以打印。
public static void PrintBarCode(string devicePath, int leftMarginAdd, int topMarginAdd, string barcode, string rosh, string productModel, string lineCode, string vendorId, string cusModel, string BOSerialNo, string size)
{
StringBuilder cmd = new StringBuilder();
cmd.Append("I8,A,001\r\n");
cmd.Append("Q200,016\r\n");
cmd.Append("q863\r\n");
cmd.Append("rN\r\n");
cmd.Append("S2\r\n");
cmd.Append("D7\r\n");
cmd.Append("ZT\r\n");
cmd.Append("JF\r\n");
cmd.Append("O,S\r\n");
cmd.Append("R" + (300 + leftMarginAdd).ToString() + "," + (20 + topMarginAdd).ToString() + "\r\n");
cmd.Append("f100\r\n");
cmd.Append("N\r\n");
cmd.Append("A35,1,0,1,1,1,N,\"Q.C.Pass\"\r\n");
cmd.Append("b32,16,D," + size + ",\"" + barcode + "\"\r\n");//二维码
cmd.Append("A125,1,0,1,1,1,N,\"" + rosh + "\"\r\n");
cmd.Append("A15,149,3,1,1,1,N,\"" + productModel + "\"\r\n");//产品型号(左边)
cmd.Append("A17,162,0,2,1,1,R,\"" + lineCode + "\"\r\n");//设备编码(左下角)
cmd.Append("P1\r\n");
Printer printer = new Printer();
printer.DevicePath = devicePath;
if (!printer.Open())
{

return;
}
bool tempBool = printer.Write(cmd.ToString()); //过了这里就可以打印。下面的Write方法
if (!printer.Close())
{

return;
}
//打印
public bool Write(string Mystring)
{
if (iHandle != -1)
{
int i;
OVERLAPPED x;
byte[] mybyte = System.Text.Encoding.Default.GetBytes(Mystring);
return WriteFile(iHandle, mybyte, mybyte.Length, out i, out x); //程序刚跑起来是可以打印,但进行一系统通信操作后,到这里就卡死。怎样破?
}
else
{
throw new Exception("端口未打开!");
}
}
//WriteFile方法
[DllImport("kernel32.dll")]

private static extern bool WriteFile(int hFile, byte[] lpBuffer, int nNumberOfBytesToWriter, out int lpNumberOfBytesWriten, out OVERLAPPED lpOverLapped);

1个回答

caozhy
caozhy   Ds   Rxr 2015.06.20 21:40
已采纳

怀疑是你的com波特率设置错误或者数据线的质量有问题。

u010002418
u010002418 USB会有波特率吗?
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C#调用斑马打印机打印条码标签(支持COM/LPT/USB/ZPL/EPL/Bitmap)
利用标签设计软件做好模板,打印至本地文件,把其中的ZPL、EPL指令拷贝出来,替换其中动态变化的内容为变量名,做成一个模板文本,在代码中动态替换变量,再把指令输出至打印机。   ZebraPrintHelper.cs。   [csharp] view plaincopy using System;   using System.Collect
C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)
在批量打印商品标签时一般都要加上条码或图片,而这类应用大多是使用斑马打印机,所以我也遇到了怎么打印的问题。 一种办法是用标签设计软件做好模板,在标签设计软件中打印,这种办法不用写代码,但对我来说觉得不能接受,所以尝试代码解决问题。 网上搜索一番,找不到什么资料,基本都是说发送ZPL、EPL指令到打印机,而且还是COM/LPT口连接打印机。后来研究.net的打印类库,发现是用绘图方式打印至打印机
斑马打印机常见问题解决方案 条码打印机常见问题解决方案
一维条码本身是不能包含中文字符的,但是如果标签中有需要打印中文的地方出现乱码,那主要的原因出在您的打印软件上。如果您用的是斑马公司的BARONE 5.0或以下版本,必须在其软件的安装目录中的BIN目录中找到SETUP.INI文件,打开其文件占到PRINT1段,把该段最后三行中前面带“;”中的分号去掉,即可打印中文。 如果有,可按下面的方法解决; 将BARONE\BIN\SETUP.INI 作一
C#调用斑马指令ZPL打印各种条码
C#调用斑马指令ZPL打印各种条码 内有指令集说明说以及界面设置图,供大家学习
C# 简单的ZEBRA标签打印程序
Zebra打印机有专用的的语言ZPL,简单的使用C#编程打印方法: 1. 写ZPL脚本,定义好相关打印格式,数据名,等,此保存为txt格式即可 脚本可以用BARONE5.0程序生成, 2. 通过C#程序,操作脚本txt文件,将需要打印的数据替换进脚本 C#如何操作txt,简单的不要再说了 3. 将此脚本通过DOS copy的方法,直接copy到ZEBRA的LPT口即可
VC++打印ZPL条形码。GT800;USB连接
USB连接斑马打印机。VC++用ZPL命令打印条形码,调用winspool中接口(目前常见的是C#代码,但其实也是调用winspool中接口)。试验打印机为GT800.
C#直接发送打印机命令到打印机及ZPL常用打印命令 - 条码打印机
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace BarCodeLibrary { public class ZebraGesigner { [StructLayout(LayoutKi
C#调用USB接口斑马打印机
C#调用USB接口斑马打印机,通过ZPL命令打印条形码
java实现zebra打印条形码
用java代码实现zebra斑马打印机的条形码打印
条码打印机调试助手 支持串口、并口、USB口、网口
针对条码打印机设计的条码打印机调试助手,可以调试全系列的Zebra打印机,支持串口、并口、USB口、网口的数据通讯。