<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-348  評(píng)論-598  文章-0  trackbacks-0
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.IO.Ports;

    namespace BluetoothTest
    {
        
    public class Printer
        {
            SerialPort server 
    = new SerialPort();
            
    private string _portName = "COM6";//藍(lán)牙一般默認(rèn)為com6


            
    /// <summary>
            
    /// 獲取或設(shè)置端口名稱
            
    /// </summary>
            public string PortName
            {
                
    get 
                {
                    _portName 
    = server.PortName;
                    
    return _portName; 
                }
                
    set 
                {
                    _portName 
    = value;
                    server.PortName 
    = _portName;
                }
            }
            
    /// <summary>
            
    /// 端口是否已經(jīng)打開
            
    /// </summary>
            public bool IsOpen
            {
                
    get 
                {
                    
    return server.IsOpen;
                }
            }
            
    /// <summary>
            
    /// 構(gòu)造方法初始化串口參數(shù)
            
    /// </summary>
            public Printer()
            {
    //初始化各個(gè)參數(shù)
                server.BaudRate = 9600;//波特率
                server.Parity = 0;//校檢位
                server.DataBits = 8;//數(shù)據(jù)位
                server.StopBits = StopBits.One;//停止位
                server.PortName = _portName;//端口名稱
                server.WriteTimeout = -1;//超時(shí)時(shí)間
                server.ReadTimeout = -1;//超時(shí)時(shí)間
            }
            
    /// <summary>
            
    /// 打開端口
            
    /// </summary>
            
    /// <returns></returns>
            public bool OpenPort()
            {
                
    try
                {
                    
    if (!server.IsOpen)
                    {
    //關(guān)閉的
                        server.Open();
                    }
                    
    else
                    {
    //打開的
                        
    //server.Close();
                        
    //server.Open();
                    }
                    
    return true;
                }
                
    catch(Exception ex)
                { 
    return false; }
            }
            
    /// <summary>
            
    /// 發(fā)送數(shù)據(jù)
            
    /// </summary>
            
    /// <param name="str"></param>
            
    /// <returns></returns>
            public bool SendDataToPort(string str,out string mes)
            {
                
    try
                {
                    
    byte[] OutBuffer;//數(shù)據(jù)

                    
    int BufferSize;
                    Encoding targetEncoding;

                    



                    
    //將[UNICODE編碼]轉(zhuǎn)換為[GB碼],僅使用于簡(jiǎn)體中文版mobile
                    targetEncoding = Encoding.GetEncoding(0);    //得到簡(jiǎn)體中文字碼頁(yè)的編碼方式,因?yàn)槭呛?jiǎn)體中文操作系統(tǒng),參數(shù)用0就可以,用936也行。
                    BufferSize = targetEncoding.GetByteCount(str); //計(jì)算對(duì)指定字符數(shù)組中的所有字符進(jìn)行編碼所產(chǎn)生的字節(jié)數(shù)           
                    OutBuffer = new byte[BufferSize];
                    OutBuffer 
    = targetEncoding.GetBytes(str);       //將指定字符數(shù)組中的所有字符編碼為一個(gè)字節(jié)序列,完成后outbufer里面即為簡(jiǎn)體中文編碼

                    
    byte[] cmdData = new byte[BufferSize+100];

                    
    //初始化打印機(jī)
                    cmdData[0= 0x1B;
                    cmdData[
    1= 0x40;
                    
    //設(shè)置字符順時(shí)旋轉(zhuǎn)180度
                    cmdData[2= 0x1B;
                    cmdData[
    3= 0x56;
                    cmdData[
    4= 0;


                    
    for (int i = 0; i < BufferSize; i++)
                    {
                        cmdData[
    5 + i] = OutBuffer[i];
                    }


                    
    //向打印機(jī)發(fā)送[GB碼]數(shù)據(jù)
                    server.Write(cmdData, 0, BufferSize + 5);
                    
    //server.WriteLine(str);

                    
    //初始化指令1B 40
                    cmdData[0= 0x1B;
                    cmdData[
    1= 0x40;
                    
    //打印并走紙指令
                    cmdData[2= 0x1B;
                    cmdData[
    3= 0x64;
                    cmdData[
    4= 0x02;

                    server.Write(cmdData, 
    05);
                    mes 
    = "";
                    
    return true;
                }
                
    catch(Exception ex)
                {
                    mes 
    = ex.Message;
                    
    return false;
                }
            }
            
    /// <summary>
            
    /// 十六進(jìn)制轉(zhuǎn)換字節(jié)數(shù)組
            
    /// </summary>
            
    /// <param name="s"></param>
            
    /// <returns></returns>
            private byte[] HexStringToByteArray(string s)
            {
                s 
    = s.Replace(" """);
                
    byte[] buffer = new byte[s.Length / 2];
                
    for (int i = 0; i < s.Length; i += 2)
                    buffer[i 
    / 2= (byte)Convert.ToByte(s.Substring(i, 2), 16);
                
    return buffer;
            }
            
    /// <summary>
            
    /// 字節(jié)數(shù)組轉(zhuǎn)換十六進(jìn)制
            
    /// </summary>
            
    /// <param name="data"></param>
            
    /// <returns></returns>
            private string ByteArrayToHexString(byte[] data)
            {
                StringBuilder sb 
    = new StringBuilder(data.Length * 3);
                
    foreach (byte b in data)
                    sb.Append(Convert.ToString(b, 
    16).PadLeft(2'0').PadRight(3' '));
                
    return sb.ToString().ToUpper();
            }

            
    public void ClosePort()
            {
                server.Close();            
            }
            
        }
    }

     

    3.接下在項(xiàng)目窗體上的使用,看看下面的代碼:

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    namespace BluetoothTest
    {
        
    public partial class frmMain : Form
        {
            
    public frmMain()
            {
                InitializeComponent();
            }
            Printer printer 
    = new Printer();
            
    private void menuItem4_Click(object sender, EventArgs e)
            {
                
    //退出
                printer.ClosePort();
                Application.Exit();
            }

            
    private void menuItem2_Click(object sender, EventArgs e)
            {
                
    //打印
                if (tbxBody.Text.Length == 0)
                    
    return;

                setEnabled(
    false);
                
    if (!printer.IsOpen)//只有在端口關(guān)閉的時(shí)候才能設(shè)置
                    printer.PortName = drpPort.GetItemText(drpPort.SelectedItem);
                
    if (!printer.OpenPort())
                {
                    MessageBox.Show(
    "無(wú)法打開端口" + drpPort.GetItemText(drpPort.SelectedItem)); 
                }
                
    string mes = "";
                
    if (!printer.SendDataToPort(tbxBody.Text,out mes))
                {
                    MessageBox.Show(
    "發(fā)送數(shù)據(jù)失敗" + drpPort.GetItemText(drpPort.SelectedItem) + "  " + mes); 
                }
                
                setEnabled(
    true);
                
            }
            
    private void setEnabled(bool b)
            {
                menuItem1.Enabled 
    = b;
                menuItem3.Enabled 
    = b;
            }
            
    private void frmMain_Load(object sender, EventArgs e)
            {
                
    //初始化
                drpPort.SelectedIndex = 1;
            }
        }
    }


    ---------------------------------------------------------
    專注移動(dòng)開發(fā)

    Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
    posted on 2010-03-23 21:47 TiGERTiAN 閱讀(851) 評(píng)論(0)  編輯  收藏 所屬分類: Windows Mobile
    主站蜘蛛池模板: 午夜爽爽爽男女免费观看影院| 日韩亚洲翔田千里在线| 国产三级在线免费| 亚洲日韩人妻第一页| 免费无码AV一区二区| 亚洲一级片免费看| www免费插插视频| 亚洲午夜福利717| 免费国产叼嘿视频大全网站 | 99热在线精品免费全部my| 亚洲综合激情九月婷婷| 波多野结衣免费在线观看| 国产亚洲玖玖玖在线观看| 蜜桃精品免费久久久久影院| 亚洲av永久无码精品秋霞电影秋| 全部免费毛片在线| 香蕉视频在线免费看| 亚洲成年轻人电影网站www | 国产精品网站在线观看免费传媒| 亚洲今日精彩视频| 老司机在线免费视频| 亚洲国产成人精品无码区二本| 四虎亚洲国产成人久久精品| 久久www免费人成精品香蕉| 亚洲综合视频在线| 久久WWW色情成人免费观看| 深夜A级毛片视频免费| 亚洲国产三级在线观看| 亚洲综合免费视频| 青青青亚洲精品国产| 国产精品亚洲а∨无码播放| 成年人免费的视频| 日韩精品视频在线观看免费| 亚洲AV永久无码精品一百度影院| 国产乱码免费卡1卡二卡3卡| 色多多A级毛片免费看| 中文字幕亚洲精品| 四虎影库久免费视频| 91精品视频在线免费观看| 久久亚洲AV成人无码国产电影| 久久精品国产精品亚洲艾|