我做一个c# 利用serialport通过串口进行条码打印的程序,打印英文字符都是正常的,怎么打印汉字的时候显示的都是???啊?请高手指点,谢谢!

解决方案 »

  1.   

    串口作为一种流设备,处理的是基本的字节数组,也就是字节流。发送方按一定协议发送,接收方按一定协议接受,至于是否是汉字,都没一点关系。发送之前把汉字序列化为字节流,比如
    byte[] send = Encoding.Default.GetBytes("汉字");
    接收端确认接收完整、正确后,反向的
    string text = Encoding.Default.GetString(bytesRead);
    是不会出错的。关键在于你接收方是否能确认接收完整、以及字符集是否一致。
    可以识别汉字的字符集很多,都可以尝试一下,例如:
    Encoding.GetEncoding(936)
    Encoding.GetEncoding("GB2312")
    Encoding.UTF7
    Encoding.UTF8
    Encoding.UNICODE
      

  2.   

    谢谢各位帮忙,我是用厂家打印机支持的PGL语言直接通过串口发指令进行打印的,在串口调试助手里面发送的汉字是可以打印出来的,但是我用serialport.writeline("汉字")时,就不行了啊
      

  3.   

    硬件设备汉字一般大多数用的是GB2312,你用
     System.Text.Encoding _en = System.Text.Encoding.GetEncoding("GB2312");
               byte[] _buffer= _en.GetBytes("汉字");
     
                serialport.Write(_buffer, 0, _buffer.Length);
    试试
      

  4.   

    serialport.writeline("汉字")时,就不行了啊初始化一下serialport.Encoding设置一下试试,默认是ASCII,发不成中文,如我2楼所说。你转换成字节数组再发字节数组,或是设置这个属性为正确的格式,一般来说。设备上用的应该是GB2312。也就是CodePage为936的。设置serialport.Encoding = Encoding.GetEncoding(936);
    然后调用你的发送就对了。