16年时候项目中也要用的斑马打印机打印中文汉字的要求,想借鉴这个控件(Fnthex32.dll)来完成,无奈都失败啦,后来是用C# 写成类给vb6.0调用把文本写在txtbox中,再生产图片,然后系列化解决的这个问题。
最近用c# 重写这个斑马打印程序,就又想起这个控件,于是就决定重新研究一下,网上的基本都是9个参数(报错:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。)。无奈怎么都不成功,最后想如果不定义序列化的文本名会是什么样的结果呢?于是乎就把参数三给干啦,结果“奇迹”出现啦,都给网上的源代码给害啦,以此标记,也供需要的网友参考,少走弯路。
代码如下:
[DllImport("fnthex32.dll")]
public static extern int GETFONTHEX(string BarcodeText,
string FontName,
int Orient,
int Height,
int Width,
int IsBold,
int IsItalic,
StringBuilder ReturnBarcodeCMD);
string sBarCodeCMD = ""; //条码打印命令
StringBuilder sb1 = new StringBuilder(50240);
int i1;
i1 = GETFONTHEX("定向天线,DXX-1885-2025/25555-2635-90/65-14.5i/15.8i-", "Arial", 0, 30, 20, 0, 0,sb1 );
sb1 = sb1.Replace("OUTSTR01","ok01");
sBarCodeCMD=sb1.ToString()+"^XA^MD30^LH20,20^FO20,20^XGok01,1,1^FS^XZ"; Console.WriteLine(sBarCodeCMD );
Open();
PrintZPL(sBarCodeCMD);
Close();
默认的序列化文本名是OUTSTR01,所以在转换完后自行替换定义的文本名。
绝对有用。
第一次发文,可以点个赞么?