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

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

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

    隨筆-348  評論-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";//藍牙一般默認為com6


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

                    
    int BufferSize;
                    Encoding targetEncoding;

                    



                    
    //將[UNICODE編碼]轉換為[GB碼],僅使用于簡體中文版mobile
                    targetEncoding = Encoding.GetEncoding(0);    //得到簡體中文字碼頁的編碼方式,因為是簡體中文操作系統,參數用0就可以,用936也行。
                    BufferSize = targetEncoding.GetByteCount(str); //計算對指定字符數組中的所有字符進行編碼所產生的字節數           
                    OutBuffer = new byte[BufferSize];
                    OutBuffer 
    = targetEncoding.GetBytes(str);       //將指定字符數組中的所有字符編碼為一個字節序列,完成后outbufer里面即為簡體中文編碼

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

                    
    //初始化打印機
                    cmdData[0= 0x1B;
                    cmdData[
    1= 0x40;
                    
    //設置字符順時旋轉180度
                    cmdData[2= 0x1B;
                    cmdData[
    3= 0x56;
                    cmdData[
    4= 0;


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


                    
    //向打印機發送[GB碼]數據
                    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>
            
    /// 十六進制轉換字節數組
            
    /// </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>
            
    /// 字節數組轉換十六進制
            
    /// </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.接下在項目窗體上的使用,看看下面的代碼:

     

    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)//只有在端口關閉的時候才能設置
                    printer.PortName = drpPort.GetItemText(drpPort.SelectedItem);
                
    if (!printer.OpenPort())
                {
                    MessageBox.Show(
    "無法打開端口" + drpPort.GetItemText(drpPort.SelectedItem)); 
                }
                
    string mes = "";
                
    if (!printer.SendDataToPort(tbxBody.Text,out mes))
                {
                    MessageBox.Show(
    "發送數據失敗" + 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;
            }
        }
    }


    ---------------------------------------------------------
    專注移動開發

    Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
    posted on 2010-03-23 21:47 TiGERTiAN 閱讀(843) 評論(0)  編輯  收藏 所屬分類: Windows Mobile
    主站蜘蛛池模板: 国产亚洲无线码一区二区| 亚洲欧洲日本国产| 久久国产精品萌白酱免费| 久久丫精品国产亚洲av| 成人免费777777| 人人爽人人爽人人片A免费| 久久精品国产亚洲av麻| 在线观看特色大片免费视频| 免费一区二区三区在线视频| 五月天网站亚洲小说| 日韩免费三级电影| 嫩草影院在线播放www免费观看| 亚洲乱码一二三四五六区| 又粗又硬又大又爽免费视频播放| 国产精品免费AV片在线观看| 亚洲中文字幕无码爆乳app| 亚洲日韩精品一区二区三区无码| 中文字幕无码不卡免费视频| 一级片在线免费看| 亚洲 欧洲 视频 伦小说| 亚洲精品字幕在线观看| 国产一区二区三区在线免费| 最近免费中文字幕大全高清大全1| 亚洲国产欧洲综合997久久| 亚洲日本中文字幕| 亚洲国产成人五月综合网| 无人在线观看免费高清视频| 天黑黑影院在线观看视频高清免费| 亚洲欧洲无卡二区视頻| 亚洲VA成无码人在线观看天堂| 日韩视频免费一区二区三区| 在线观看永久免费| 光棍天堂免费手机观看在线观看| 亚洲av无码无线在线观看| 亚洲国产成人精品无码区在线秒播| 久久久久亚洲精品天堂久久久久久| 成人毛片免费播放| 国产精品永久免费10000| 国产午夜精品免费一区二区三区| 四虎影视久久久免费观看| 亚洲免费网站观看视频|