gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:09 25 4
gpt4 key购买 nike

我正在尝试使用 C#(在 Mac 10.8 下运行 Mono 3.2)通过 FTDI Basic 板在我的笔记本电脑和热敏打印机(从 Sparkfun 购买)之间建立链接。我一直在使用来自以下网站的 .net 库:

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. 我是初学者,对于过于简单化或重大疏忽,我深表歉意!

谢谢,芬恩

最佳答案

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

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

请参阅本教程以获取包含进一步说明的示例:https://www.sparkfun.com/tutorials/224

关于c# - 热敏打印机 - 通过 FTDI 基本板和 C# 的笔记本电脑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18489181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com