WSL1能否通过Epson TM虚拟端口驱动与/dev/ttyS#访问Epson POS打印机?
我在工作和家中都使用Epson TM-U675多功能POS打印机(因太喜爱自行购置一台),两处设备均运行Windows 10。目前通过自行编写的Python模块将标记文本文件转换为原始二进制文件,之后以RAW打印方式提交或写入Epson TM虚拟端口驱动提供的COM仿真端口,借助ESC/POS指令集可精细控制打印机。
日常使用Nano作为主力代码编辑器,但Windows版本的Nano在控制台窗口调整大小时表现不佳,因此通常启用WSL以随时使用该编辑器。
最近购入Epson DM-D110真空荧光顾客显示屏,可通过台式机物理COM1端口通信,它也支持ESC/POS指令集。借助WSL1,我能在WSL环境中运行代码,通过写入/dev/ttyS1向显示屏传输数据,一切正常;笔记本使用USB串口线也可正常通信。
但问题出在通过WSL使用TM-U675时:已通过Epson TM虚拟端口驱动端口分配工具将其配置为COM2,Windows下可正常写入COM2,甚至能通过Putty连接发送约50字节数据触发打印,确认数据正常发送。但在WSL1中写入/dev/ttyS2时失败,提示Input/Output error。
Windows命令提示符测试示例
测试命令:
type testfile.bin > COM2- 预期输出:打印机打印testfile.bin内容
- 实际输出:打印机打印testfile.bin内容
测试命令:
bash -c "cat testfile.bin > /dev/ttyS2"- 预期输出:打印机打印testfile.bin内容
- 实际输出:
/bin/bash: /dev/ttyS2: Input/output error
目前我的TM-U675仅配备UB-U03II USB接口模块卡(后续将升级为UB-U01III),暂时无法通过USB串口线连接设备。请问WSL1与Epson TM虚拟端口驱动是否存在已知兼容性问题?是否有人成功在WSL1中使用虚拟COM端口?
三年后更新说明
经确认,Epson TM虚拟端口驱动采用用户态驱动(UMDF)而非内核态驱动,这意味着COM2仅存在于Win32子系统用户态中,并非内核管理的设备。因此其他子系统向内核请求访问该串口时,内核无法识别。下次尝试将使用预UMDF版本的TM虚拟端口软件。
内容的提问来源于stack exchange,提问作者megid0nt

