<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      yunxizfj

      等待...

      導航

      Windows Mobile 5.0下藍牙移動打印測試

      項目硬件:針式移動便攜式打印機(含藍牙模塊),一臺手機(多普達S1)

      項目原理:首先讓手機和打印機藍牙連接后,在手機端為打印機建立一個發送端口,默認為 COM6,然后通過C#操作串口,向串口發送打印的數據(含打印機廠商內置的指令集)

      項目步驟:

      1.首先讓手機和打印機藍牙連接上,并建立發送端口,下面是轉載的圖:

       

          進入藍牙設備管理界面,點擊新建,用ppc搜索附近的藍牙設備

          這時ppc便能搜索到處于待機狀態的藍牙打印適配器。

          接下來要做的工作大家十分熟悉,就是輸入密匙進行匹配

          由于藍牙打印適配器是通過虛擬串口與ppc之間建立連接的,所以ppc端會提示是否為打印適配器產生一個藍牙串行端口

      智能手機無線打印完全攻略(三)

          輸入藍牙設備的名稱后,整個匹配過程完成。

          然后我們要詳細地設置藍牙串口的傳入和傳出端口,對于打印,我們只要設置傳出端口就行了,我就點擊新建傳出端口

          然后選擇綁定到該端口的設備,當然就是我們前面剛剛匹配的藍牙打印適配器了

          設置ppc上的傳出端口為com6,當然你也可以設置成其他的端口號,只要你自己記得就行了。是不是安全連接倒不是很重要,可選可不選。

          設置完成后我們就在藍牙com口的管理窗口中看到已經綁定在com6上的藍牙打印適配器了

       

      2.接下來就是程序了,使用.net2.0 cf 里自帶的一個類SerialPort,接下來是操作的串口的類了(下面有部分代碼是打印機廠商提供的指令,不同廠商有不同的指令吧?):

       

      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;
              }
          }
      }

       

      4.好了,在模擬器里生成,復制到手機里去,測試下。。。格式還要調試,郁悶,指令集都是以0x開通的,看起來頭昏眼花的,等待下一步吧.....

      posted on 2009-03-02 17:59  yunxizfj  閱讀(4646)  評論(22)    收藏  舉報

      主站蜘蛛池模板: 国产精品三级一区二区三区| 亚洲人妻一区二区精品| 亚洲中文字幕国产精品| 综合色在线| 亚洲色大成网站WWW永久麻豆| 国产成人精彩在线视频| 亚洲全网成人资源在线观看| 亚洲乱码国产乱码精品精大量 | 九九热视频免费在线播放| 人体内射精一区二区三区| 国产精品国产三级国av| 亚洲欧美不卡高清在线| 久久99久久99精品免视看国产成人| 亚洲熟妇自偷自拍另亚洲| 国产精品免费看久久久| 日本一区二区精品色超碰| 国产成人精品视频不卡| 中文幕无线码中文字夫妻| 韩国精品福利视频一区二区| 综合偷自拍亚洲乱中文字幕| 精品人妻人人做人人爽| 亚洲成亚洲成网| 99久久精品费精品国产一区二 | 婷婷色综合成人成人网小说| 人妻精品动漫H无码中字| 国产无遮挡又黄又爽高潮| 国产三级精品三级在线看| 无码帝国www无码专区色综合| 国产人伦精品一区二区三| 中文有无人妻vs无码人妻激烈| 日韩国产精品中文字幕| 成人亚欧欧美激情在线观看| 最好看的中文字幕国语| 国产AV巨作丝袜秘书| 国内揄拍国内精品少妇| 四虎国产精品久久免费精品| 国产亚洲精品AA片在线播放天| 三级三级三级A级全黄| 蜜臀在线播放一区在线播放| 精品在免费线中文字幕久久| 开心五月激情综合久久爱|