我試圖通過使用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...
任何想法的問題是什麼?
幾點需要注意:
- 打印機已經能夠打印出樣品,因此似乎是工作。
- 當我播放該程序時,我注意到在FTDI上,只有TX(發送?)點亮,RX(接收?)保持熄滅狀態。我已經檢查了線路,這似乎是爲了不知道是否有什麼錯誤(我已附加圖片)[編輯:沒有足夠的代表圖像!]
- 我也試過使用Arduino作爲一個比較,但有類似的錯誤(調試很好,但沒有互動)
- 我是一個初學者太過分簡單化或大疏忽道歉!
感謝, 菲昂
這裏有一個下載鏈接到一些圖片和視頻:http://db.tt/7bI6piom – fionntom