尝试使用 React 和热敏打印机打印收据时出现问题

问题描述 投票:0回答:1

最近我开始为一家餐厅开发一个新项目,我需要使用软件管理他们的所有东西(桌子、订单等)。我选择使用 React 创建一个网站(因为这是我唯一能做的事情)。

主要任务之一是打印包含所需所有信息的收据,我找到了一个可以帮助我的 React 库:https://github.com/seokju-na/react-Thermal-printer

热敏打印机只附带一根简单的 USB 电缆,因此为了测试它,我只需将其连接到我的 PC 即可开始工作。该库提供了两种方法:

  1. 通过网络

  2. 通过串口

我尝试了网络方法,但一段时间后我放弃了,因为打印机的文档都非常混乱,而且说实话,我不太擅长“网络”,或者不管你怎么称呼它。它还使用了我不太喜欢的 Nodejs。

所以我尝试了“串行”方法,但找不到打印机,因为我使用的是 USB 而不是串行。嗯,我发现我的电脑没有任何串行端口。我想买一根 USB 转串口线,将 USB 连接到我的电脑,将串口连接到打印机,但我认为打印机仍然不会被识别为串口,因为它是通过 USB 连接的。

//串口打印

import { render, Printer, Text } from 'react-thermal-printer';

const data = await render(
  <Printer type="epson">
    <Text>Hello World</Text>
  </Printer>
);

const port = await window.navigator.serial.requestPort();
await port.open({ baudRate: 9600 });

const writer = port.writable?.getWriter();
if (writer != null) {
  await writer.write(data);
  writer.releaseLock();
}

window.navigator.serial.requestPort()
将在我的页面上打开一个弹出窗口,我应该在其中选择打印机。这也与 Web Serial API 的代码基本相同。相反,如果我使用 WebUSB API 打印机将被识别,但我将无法使用该库。

那么,我熟了吗?

我很兴奋我设法找到一个(可能)适合这种情况的工作库,但现在我有点陷入僵局。我应该购买这条电缆,因为我知道它可能不起作用吗?我应该用网络方式再试一次吗?如果这不起作用怎么办?也许单独使用 WebUSB API 可以工作?

该库看起来非常有用,但令人遗憾的是它仍然使用被认为是遗留的序列号。我本来希望只使用普通的 USB 和一些 API,但如果我的 PC 上不存在该端口,则无能为力。大家有什么建议?

reactjs serial-port usb thermal-printer react-library
1个回答
0
投票

我发现 this 这是一个非常小的片段,它使用 WebUSB API 并允许您使用 USB 连接的打印机打印一些文本,所以我想这就是解决方案。您只需要编写自己的编码器即可,但最终它应该可以工作。如果没有,您可能需要这个

© www.soinside.com 2019 - 2024. All rights reserved.