本帖最后由 xinsheng8888 于 2011-01-21 11:26:12 编辑

解决方案 »

  1.   

    temp1是个临时文件,要与后面的sBarCodeCMD = sb1.ToString() + "^XA^MD30^LH20,20^FO20,20^XGtemp1,1,1^FS^XZ";中的temp1相对就
      

  2.   

    temp1 应该是GETFONTHEX这个函数产生的一个图片文件,你要先上传到zebra打印机的dram中
    才可以用XG命令调用!有兴趣可以看看我写的一个E-LABEL完美支持zebra打印的ZPLII语言。二次开发也很简单!
    http://www.ync-tech.com
      

  3.   

    但是temp1怎么生成呢,我需要些代码,谢谢
      

  4.   

    GETFONTHEX
      

  5.   

    GETFONTHEX他是只产生一个单色的图片,跟用什么打印机没有关系。
    也就是你程序用GETFONTHEX函数产生一张图片,你把图片上传到打印的dram中,
    然后在用指令来调用图片。
      

  6.   

    http://topic.csdn.net/u/20100329/17/a7abd929-e04f-4639-80e9-9b82865c3369.html
      

  7.   

    不好意思搞错了GETFONTHEX("测试","宋体","temp1",0,30,20,0,0,sb1);
    这个函数产生的是图片指令,内容放到sb1中,
    这个temp1是在图片指令中的图片名称你可以下个断点看看sb1的内容就明白了
      

  8.   


    你可以下个断点看看sb1的内容就明白了temp1是这个GETFONTHEX函数产生的,这个函数据功能是把汉字转成图片指令。你下断点看sb1的内容了吗?
      

  9.   

    temp1也就是GETFONTHEX产生图片指令中的名称,"^XA^MD30^LH20,20^FO20,20^XGtemp1,1,1^FS^XZ";
    这个就是调用打印指令打印图片的!你最好先是看看ZPLII相关指令
      

  10.   

    这个地方它报错“int i1 =GETFONTHEX("测试", "宋体", "temp1", 0, 30, 20, 0, 0, sb1);”尝试读取或写入受保护的内存。这通常指示其他内存已损坏
      

  11.   

    GETFONTHEX据我所知就是用在斑马上的
    给你一个我用过的测试程序:
    public static extern int GETFONTHEX(
                     string outstr,
                     string fontname,
                     string outstrname,
                     int orient,
                     int height,
                     int width,
                     int bold,
                     int italic,
                     StringBuilder hexbuf);//这个是定义
    引用如下:
     FileStream fsg = new FileStream(Application.StartupPath + "\\1.text", FileMode.Append, FileAccess.Write);
                            StreamWriter sw = new StreamWriter(fsg);
                            StringBuilder hexbuf = new StringBuilder(21 * 1024);
                            int count;
                            count = GETFONTHEX("测试简体中文", "宋体", "test01", 0, 5, 30, 0, 0, hexbuf);
                            if (count > 0)
                            {
                                sw.Write(hexbuf.ToString().Substring(0, count));
                                count = 0;
                            }
                            count = GETFONTHEX("测试繁体中文", "宋体", "test02", 0, 5, 30, 0, 0, hexbuf);
                            if (count > 0)
                            {
                                sw.Write(hexbuf.ToString().Substring(0, count));
                                count = 0;
                            }
                            sw.Close();
                            FileStream fsg2 = new FileStream(Application.StartupPath + "\\1.text", FileMode.Open, FileAccess.Read);
                            StreamReader srg2 = new StreamReader(fsg2);
                            graph = srg2.ReadToEnd() + "\r\n";
                            srg2.Close();
    我在应用程序的根部目录下创建一个1.text文件,当然文件的后缀不重要,也可以是1.txt,然后用GETFONTHEX将汉字转换为打印机的代码test01和test02,保存到1.text文件文件中,保存的结果是:当你要打印它是就使用ZPL语言
    ^XA^MD30^LH20,20^FO20,20^XGtest01,1,1^FS^XZ
    ^XA^MD30^LH20,100^FO20,20^XGtest02,1,1^FS^XZ
      

  12.   

    你更新一下GETFONTHEX这个函数用的dll看看呢!
      

  13.   

    求高手解答 打印机没反应   怎么设置打印机的名称呢
     private void button1_Click(object sender, EventArgs e)
            {
                //调用打印汉字,下面代码将会打印“测试”二个汉字
                string sBarCodeCMD = ""; //条码打印命令            StringBuilder sb1 = new StringBuilder(2048);            int i1;            i1 =GETFONTHEX("1111111111","宋体","temp1",0,30,20,0,0,sb1);
                sBarCodeCMD = sb1.ToString() + "^XA^MD30^LH20,20^FO20,20^XGtemp1,1,1^FS^XZ";
                      }