花心码农 2015-06-14 04:12 采纳率: 100%
浏览 2670
已采纳

C#的斑马USB条码打印,进行一系列COM口通信操作后打印会卡死,重启打印机就正常。

1.我是C#的斑马USB条码打印,程序运行后测试打印是没问题的。但进行一系列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);

展开全部

  • 写回答

2条回答 默认 最新

  • 知常曰明 2015-06-14 14:07
    关注

    第一感觉,这个不是程序的问题
    我想你应该有Zebra的随机软件的吧.用随机软件重复一遍你所说的过程,看看是不是一样的问题.
    如果是一样的问题,那么问题肯定就是在配置上面.
    如果不是一样的问题,看看Zebra有没有初始化的命令.每次打印前先做一次初始化试试看

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 一道以太网数据传输题
  • ¥15 python 下载群辉文件
  • ¥50 代码还没怎么运行但是需要代码功能调用数据
  • ¥15 vue请求不到数据,返回状态200,数据为html
  • ¥15 访问url时不会自动调用其 Servlet的doGet()
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部