2013-08-28 50 views
2

我試圖通過使用C#(在Mac 10.8下運行Mono 3.2)的FTDI基板使用我的筆記本電腦熱敏打印機(從Sparkfun購買)之間建立鏈接。我一直在使用一個.NET庫來源:熱打印機 - 筆記本電腦通過FTDI基板和C#

http://electronicfields.wordpress.com/2011/09/29/thermal-printer-dot-net/

https://github.com/yukimizake/ThermalDotNet

的代碼似乎並沒有任何錯誤(我已經改變了串口和波特率符合我的設置)和它似乎貫穿整個終端程序。但是,它無法與打印機進行交互,因此無法打印任何內容。

這是我使用的確切代碼:

using System; 
using System.IO; 
using System.Text; 
using System.Threading; 
using System.IO.Ports; 
//using System.Collections.Generic; 
//using System.Drawing; 
using ThermalDotNet; 
using Microsoft.SPOT; 

namespace ThermalPrinterTestApp 
{ 
class PrinterClass 
{ 
    SerialPort printerPort; 
    ThermalPrinter printer; 

    public PrinterClass(string printerPortName = "/dev/tty.usbserial-AD025HP0") 
    { 
     //Serial port init 
     printerPort = new SerialPort(printerPortName, 19200); 

     if (printerPort != null) 
     { 
      Debug.Print("Port ok"); 
      if (printerPort.IsOpen) 
      { 
       printerPort.Close(); 
      } 
     } 

     Debug.Print("Opening port"); 

     try 
     { 
      printerPort.Open(); 
     } 
     catch 
     { 
      Debug.Print("I/O error"); 
      //Environment.Exit(0); 
     } 

     //Printer init 
     printer = new ThermalPrinter(printerPort, 9, 110, 10); 
     printer.Reset(); 
    } 

    public void TestBarcode() 
    { 
     printer.WakeUp(); 
     ThermalPrinter.BarcodeType myType = ThermalPrinter.BarcodeType.ean13; 
     string myData = "3350030103392"; 
     printer.SetBarcodeLeftSpace(25); 
     printer.WriteLine(myType.ToString() + ", data: " + myData); 
     printer.SetLargeBarcode(true); 
     printer.LineFeed(); 
     printer.PrintBarcode(myType,myData); 
     printer.LineFeed(2); 
    } 

    /* 
    static void TestImage(ThermalPrinter printer) 
    { 
     printer.WriteLine("Test image:"); 
     Bitmap img = new Bitmap("../../../mono-logo.png"); 
     printer.LineFeed(); 
     printer.PrintImage(img); 
     printer.LineFeed(); 
     printer.WriteLine("Image OK"); 
    }*/ 

    public void PrintTest() 
    { 
     printer.WakeUp(); 
     Debug.Print(printer.ToString()); 

     //System.Threading.Thread.Sleep(5000); 
     printer.SetBarcodeLeftSpace(25); 
     TestBarcode(); 
     printer.LineFeed(3); 

     //System.Threading.Thread.Sleep(5000); 
     //TestImage(); 

     //System.Threading.Thread.Sleep(5000); 

     printer.WriteLineSleepTimeMs = 200; 
     printer.WriteLine("Default style"); 
     printer.WriteLine("PrintingStyle.Bold",ThermalPrinter.PrintingStyle.Bold); 
     printer.WriteLine("PrintingStyle.DeleteLine",ThermalPrinter.PrintingStyle.DeleteLine); 
     printer.WriteLine("PrintingStyle.DoubleHeight",ThermalPrinter.PrintingStyle.DoubleHeight); 
     printer.WriteLine("PrintingStyle.DoubleWidth",ThermalPrinter.PrintingStyle.DoubleWidth); 
     printer.WriteLine("PrintingStyle.Reverse",ThermalPrinter.PrintingStyle.Reverse); 
     printer.WriteLine("PrintingStyle.Underline",ThermalPrinter.PrintingStyle.Underline); 
     printer.WriteLine("PrintingStyle.Updown",ThermalPrinter.PrintingStyle.Updown); 
     printer.WriteLine("PrintingStyle.ThickUnderline",ThermalPrinter.PrintingStyle.ThickUnderline); 
     printer.SetAlignCenter(); 
     printer.WriteLine("BIG TEXT!",((byte)ThermalPrinter.PrintingStyle.Bold + 
      (byte)ThermalPrinter.PrintingStyle.DoubleHeight + 
      (byte)ThermalPrinter.PrintingStyle.DoubleWidth)); 
     printer.SetAlignLeft(); 
     printer.WriteLine("Default style again");   
     printer.LineFeed(3); 

     printer.Sleep(); 
    } 
} 
} 

這是終端的日誌我得到我運行該程序後:

Port ok 
Opening port 
ThermalPrinter: 
    _serialPort=/dev/tty.usbserial-AD025HP0, 
    _maxPrintingDots=2, 
    _heatingTime=180, 
    _heatingInterval=2, 
    PictureLineSleepTimeMs=40, 
    WriteLineSleepTimeMs=0, 
    Encoding=ibm850 
Printer is now offline. 

Press any key to continue... 

任何想法的問題是什麼?

幾點需要注意:

  1. 打印機已經能夠打印出樣品,因此似乎是工作。
  2. 當我播放該程序時,我注意到在FTDI上,只有TX(發送?)點亮,RX(接收?)保持熄滅狀態。我已經檢查了線路,這似乎是爲了不知道是否有什麼錯誤(我已附加圖片)[編輯:沒有足夠的代表圖像!]
  3. 我也試過使用Arduino作爲一個比較,但有類似的錯誤(調試很好,但沒有互動)
  4. 我是一個初學者太過分簡單化或大疏忽道歉!

感謝, 菲昂

+0

這裏有一個下載鏈接到一些圖片和視頻:http://db.tt/7bI6piom – fionntom

回答

0

它看起來對我來說,你的線路可能不正確。

FTDI板上的TX(發送)應連接到打印機上的RX(接收)。同樣,FTDI板上的RX(接收)應連接到打印機上的TX(發送)。

請參見本教程的一個例子進一步解釋:https://www.sparkfun.com/tutorials/224

+0

這是它!謝謝! – fionntom

相關問題