热敏打印机-笔记本电脑通过FTDI基本板和C#

热敏打印机-笔记本电脑通过FTDI基本板和C#,c#,printing,mono,thermal-printer,ftdi,C#,Printing,Mono,Thermal Printer,Ftdi,我正试图用C#(在Mac10.8下运行Mono3.2)在我的笔记本电脑和热敏打印机(从Sparkfun购买)之间建立一个链接,通过FTDI基本板。我一直在使用.net库,来自: 代码似乎没有任何错误(我已经更改了串行端口和波特率以匹配我的设置),它似乎在终端上运行了整个程序。但是,它无法与打印机交互,因此无法打印任何内容 这正是我使用的代码: using System; using System.IO; using System.Text; using System.Threading;

我正试图用C#(在Mac10.8下运行Mono3.2)在我的笔记本电脑和热敏打印机(从Sparkfun购买)之间建立一个链接,通过FTDI基本板。我一直在使用.net库,来自:

代码似乎没有任何错误(我已经更改了串行端口和波特率以匹配我的设置),它似乎在终端上运行了整个程序。但是,它无法与打印机交互,因此无法打印任何内容

这正是我使用的代码:

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作为比较,但也有类似的错误(调试很好,但没有交互)
  • 我是一个初学者,所以为过分简化或重大疏忽道歉 谢谢,
    Fionn

    在我看来,您的接线可能不正确

    FTDI板上的TX(传输)应连接到打印机上的RX(接收)。同样,FTDI板上的RX(接收)应连接到打印机上的TX(传输)


    请参阅本教程,以获取进一步解释的示例:

    这里有一些图像和视频的下载链接:就是这样!非常感谢。