2017-07-07 53 views
0

私はXamarin PCLタイプのアプリケーションを開発しています...プリンタの検索、プリンタの接続を管理しますが、変数を印刷するときは印刷されません。私がSDKのZebra LinkOS_XamarinSDKを使用しています。私のコードを添付しました。Bluetoothの印刷Xamarin

マイSelectPrinterView.cs

public SelectPrinterView(UsuariosMovil usuarioMovil) 
    { 

     Title = "Seleccione una Impresora";   

     printerList = new ObservableCollection<IDiscoveredPrinter>(); 

     printerLv = new ListView 
     { 
      ItemsSource = printerList, 
      ItemTemplate = new DataTemplate(() => 
      { 
       printerLbl = new Label { Text = "No hay Impresoras Seleccionadas" }; 

       Label addressLbl = new Label(); 
      addressLbl.SetBinding(Label.TextProperty, "Address"); 

      Label friendlyLbl = new Label(); 
      friendlyLbl.SetBinding(Label.TextProperty, "FriendlyName"); 

      return new ViewCell 
      { 
       View = new StackLayout 
       { 
        Orientation = StackOrientation.Horizontal, 
        Children = { addressLbl, friendlyLbl } 
       } 
      }; 
     }) 
    }; 
    printerLv.ItemSelected += PrinterLv_ItemSelected; 

マイ印刷機能:

private void sendZplReceipt(IConnection printerConnection) 
     { 
      String tmpHeader = 
        /* 
        Some basics of ZPL. Find more information here : http://www.zebra.com 

        ^XA indicates the beginning of a label 
        ^PW sets the width of the label (in dots) 
        ^MNN sets the printer in continuous mode (variable length receipts only make sense with variably sized labels) 
        ^LL sets the length of the label (we calculate this value at the end of the routine) 
        ^LH sets the reference axis for printing. 
         You will notice we change this positioning of the 'Y' axis (length) as we build up the label. Once the positioning is changed, all new fields drawn on the label are rendered as if '0' is the new home position 
        ^FO sets the origin of the field relative to Label Home ^LH 
        ^A sets font information 
        ^FD is a field description 
        ^GB is graphic boxes (or lines) 
        ^B sets barcode information 
        ^XZ indicates the end of a label 
        */ 

        "^XA" + 

        "^POI^PW400^MNN^LL325^LH0,0" + "\r\n" + 

        "^FO50,50" + "\r\n" + "^A0,N,70,70" + "\r\n" + "^FD Infraccion^FS" + "\r\n" + 

        "^FO50,130" + "\r\n" + "^A0,N,35,35" + "\r\n" + "^FDMunicipal^FS" + "\r\n" + 

        "^FO50,180" + "\r\n" + "^A0,N,25,25" + "\r\n" + "^FDUsuario Movil:^FS" + "\r\n" + 

        "^FO225,180" + "\r\n" + "^A0,N,25,25" + "\r\n" + "^FD" + "" +"^FS" + "\r\n" + 

        "^FO50,220" + "\r\n" + "^A0,N,25,25" + "\r\n" + "^FDFecha:^FS" + "\r\n" + 

        "^FO225,220" + "\r\n" + "^A0,N,25,25" + "\r\n" + "^FD"+ DateTime.Now +"^FS" + "\r\n" + 

        "^FO50,273" + "\r\n" + "^A0,N,30,30" + "\r\n" + "^FDDatos de la Infraccion^FS" + "\r\n" + 

        "^FO280,273" + "\r\n" + "^A0,N,25,25" + "\r\n" + "^FD^FS" + "\r\n" + 

        "^FO50,300" + "\r\n" + "^GB350,5,5,B,0^FS" + "^XZ"; 

      int headerHeight = 325; 

      DateTime date = new DateTime(); 
      string sdf = "yyyy/MM/dd"; 
      string dateString = date.ToString(sdf); 

      string header = string.Format(tmpHeader, dateString); 

      printerConnection.Write(GetBytes(header)); 

      int heightOfOneLine = 40; 

      Double totalPrice = 0; 

      Dictionary<string, string> itemsToPrint = createListOfItems(); 

      foreach (string productName in itemsToPrint.Keys) 
      { 
       string price; 
       itemsToPrint.TryGetValue(productName, out price); 

       String lineItem = "^XA^POI^LL40" + "^FO50,10" + "\r\n" + "^A0,N,28,28" + "\r\n" + "^FD{0}^FS" + "\r\n" + "^FO280,10" + "\r\n" + "^A0,N,28,28" + "\r\n" + "^FD${1}^FS" + "^XZ"; 
       Double tempPrice; 
       Double.TryParse(price, out tempPrice); 
       totalPrice += tempPrice; 
       String oneLineLabel = String.Format(lineItem, productName, price); 

       printerConnection.Write(GetBytes(oneLineLabel)); 

      } 

      long totalBodyHeight = (itemsToPrint.Count + 1) * heightOfOneLine; 

      long footerStartPosition = headerHeight + totalBodyHeight; 

      string tPrice = Convert.ToString(Math.Round((totalPrice), 2)); 

      String footer = String.Format("^XA^POI^LL600" + "\r\n" + 

      "^FO50,1" + "\r\n" + "^GB350,5,5,B,0^FS" + "\r\n" + 

      "^FO50,15" + "\r\n" + "^A0,N,40,40" + "\r\n" + "^FD^FS" + "\r\n" + 

      "^FO175,15" + "\r\n" + "^A0,N,40,40" + "\r\n" + "^FD$^FS" + "\r\n" + 

      "^FO50,130" + "\r\n" + "^A0,N,45,45" + "\r\n" + "^FDFirma Inspector^FS" + "\r\n" + 

      "^FO50,190" + "\r\n" + "^GB350,200,2,B^FS" + "\r\n" + 

      "^FO50,400" + "\r\n" + "^GB350,5,5,B,0^FS" + "\r\n" + 

      "^FO50,420" + "\r\n" + "^A0,N,30,30" + "\r\n" + "^FDwww.AHSEGROUP.com^FS" + "\r\n" + 

      "^FO50,470" + "\r\n" + "^B3N,N,45,Y,N" + "\r\n" + "^FD^FS" + "\r\n" + "^XZ", tPrice); 

      printerConnection.Write(GetBytes(footer)); 

     } 

     private Dictionary<string, string> createListOfItems() 
     { 
      String[] names = { "Motivo: ", "Lugar: ", "RUT: ", "Automovil: ", "Modelo: ", "Color: " }; 
      String[] prices = { "", "", "", "", "", "" }; 
      Dictionary<string, string> retVal = new Dictionary<string, string>(); 

      for (int ix = 0; ix < names.Length; ix++) 
      { 
       retVal.Add(names[ix], prices[ix]); 
      } 
      return retVal;    
     } 

印刷するパラメータを呼び出す方法任意のアイデア? ....私はUsuariosMovilと違反... 2人のモデルを関連付けている誰も私を助けることができますか?

+0

印刷する画像を追加できますか? – banno

+0

マイ・バウチャーのイメージですか?私の画面のイメージですか? @バノ –

答えて

1

sendZplReceipt(IConnection printerConnection)createListOfItems()の方法をコピーして貼り付け、実際に何が印刷されているかを確認しました。 String[] prices配列の値を入力すると、領収書に値が入力されます。ただし、合計金額は領収書に追加されていません。この問題を解決するために、私はこれがレシートに印刷されていない合計金額の問題を修正し

"^FO175,15" + "\r\n" + "^A0,N,40,40" + "\r\n" + "^FD${0}^FS" + "\r\n" 

にラインを変え

"^FO175,15" + "\r\n" + "^A0,N,40,40" + "\r\n" + "^FD$^FS" + "\r\n" 

{0}を追加しました。

String footer = String.Format("^XA^POI^LL600" + "\r\n" + 

     "^FO50,1" + "\r\n" + "^GB350,5,5,B,0^FS" + "\r\n" + 

     "^FO50,15" + "\r\n" + "^A0,N,40,40" + "\r\n" + "^FD^FS" + "\r\n" + 

     "^FO175,15" + "\r\n" + "^A0,N,40,40" + "\r\n" + "^FD${0}^FS" + "\r\n" + 

     "^FO50,130" + "\r\n" + "^A0,N,45,45" + "\r\n" + "^FDFirma Inspector^FS" + "\r\n" + 

     "^FO50,190" + "\r\n" + "^GB350,200,2,B^FS" + "\r\n" + 

     "^FO50,400" + "\r\n" + "^GB350,5,5,B,0^FS" + "\r\n" + 

     "^FO50,420" + "\r\n" + "^A0,N,30,30" + "\r\n" + "^FDwww.AHSEGROUP.com^FS" + "\r\n" + 

     "^FO50,470" + "\r\n" + "^B3N,N,45,Y,N" + "\r\n" + "^FD^FS" + "\r\n" + "^XZ", tPrice); 
関連する問題