<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
    主站蜘蛛池模板: 老司机在线免费视频| 18级成人毛片免费观看| 美女被cao免费看在线看网站| 国产亚洲精品免费视频播放| 亚洲精品理论电影在线观看| 3344永久在线观看视频免费首页| 亚洲开心婷婷中文字幕| 疯狂做受xxxx高潮视频免费| 免费看韩国黄a片在线观看| 亚洲精品韩国美女在线| 95老司机免费福利| 亚洲成人在线免费观看| 少妇太爽了在线观看免费视频 | 成人免费视频69| 亚洲一卡2卡3卡4卡国产网站| 59pao成国产成视频永久免费| 亚洲大尺度无码专区尤物| 无码少妇精品一区二区免费动态| 亚洲成人激情在线| 一区二区无码免费视频网站| 亚洲日韩乱码中文无码蜜桃臀| 国产大片免费网站不卡美女| 2020天堂在线亚洲精品专区| 国产小视频免费观看| 一级毛片一级毛片免费毛片| 久久精品视频亚洲| 亚洲精品视频免费在线观看| 亚洲无圣光一区二区| 久久久久久精品成人免费图片| 亚洲乱妇熟女爽到高潮的片| 亚洲乱码中文字幕手机在线| 成人无码视频97免费| 亚洲日本在线播放| 无码专区一va亚洲v专区在线| 久久国产精品免费观看| WWW亚洲色大成网络.COM| 日本亚洲欧洲免费天堂午夜看片女人员 | 国产精品亚洲自在线播放页码| 国产aa免费视频| 1000部拍拍拍18免费网站| 曰批全过程免费视频免费看|