?求助条码打印DATAMAX打印机打印汉字!
先说下,我新手,现在只有20分,请大家帮帮忙,别嫌分少,
最近在弄DATAMAX4308打印机打印汉字,装了汉卡。
看手册说需要GB码汉字,给的示例编码写得是 <BA> <D0> <00> <00> <CR> 对应的汉字是盒。我查了下这个是GBK编码,
The notation “ <xx>” in this DPL file should be interpreted by the reader as representing the
hexadecimal value of the byte sent to the printer.
这句是手册上介绍 <>内容的,我理解就是需要转码,不知道是否错了。
//创建两个不同的encoding对象
Encoding unicode = Encoding.Unicode;
//创建GBK码对象
Encoding gbk = Encoding.GetEncoding(936);
//将unicode字符串转换为字节
byte[] unicodeBytes = unicode.GetBytes("盒");
//再转化为GBK码
byte[] gbkBytes = Encoding.Convert(unicode, gbk, unicodeBytes);
char[] cc = new char[2];
cc[0] = (char)gbkBytes[0];
cc[1] = (char)gbkBytes[1];
//char)gbkBytes;
string aa = cc.ToString();
这时我得到的CC[]是正确的内容(186.208)
不过我在aa字符串里得到的内容就不对了。我这里是想得到相应汉字的GBK码,但不知道如何发给打印机。
之前测试打印字符和条码,都是直接用串口助手就可以发送过去,现在汉字的这个字符串内容明显不对, 不解,请赐教!
还有公司的老大讲我的理解有问题。让我找默认的汉字编码方式和GBK之前的换算,这个也不明白。
我知道C#中所有字符串都是UNICODE方式,但是如果是向其他设备发送内容如何发?例如通过串口发给打印机,传送这些应该都是8位8位的传,那么我在向串口写数据的时候需要把我的内容转成8位的ASC,但是发送汉字如何处理呢?
[解决办法]
如果已经有了汉卡,没必要这么麻烦。yUGB就可以了