最近我开始为一家餐厅开发一个新项目,我需要使用软件管理他们的所有东西(桌子、订单等)。我选择使用 React 创建一个网站(因为这是我唯一能做的事情)。
主要任务之一是打印包含所需所有信息的收据,我找到了一个可以帮助我的 React 库:https://github.com/seokju-na/react-Thermal-printer
热敏打印机只附带一根简单的 USB 电缆,因此为了测试它,我只需将其连接到我的 PC 即可开始工作。该库提供了两种方法:
通过网络
通过串口
我尝试了网络方法,但一段时间后我放弃了,因为打印机的文档都非常混乱,而且说实话,我不太擅长“网络”,或者不管你怎么称呼它。它还使用了我不太喜欢的 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 上不存在该端口,则无能为力。大家有什么建议?