在串口写入时,错误112(磁盘已满)是什么意思?

3

我在Windows机器上向串口(COM1)写入数据时遇到了写入错误。返回的错误代码是112(DISK_FULL)。由于这是一个串口,我不知道这个错误意味着什么。

可能是缓冲区已满吗?我不这么认为,因为我在打开端口后发送的第一个请求就出现了错误。


1
你正在使用哪个函数来写入COM端口 - WriteFile - Frerich Raabe
你能通过TeraTerm发送命令吗? - Pramod
@FrerichRaabe:我现在没有这个信息。我知道我们直接使用Winbase API。 - Ignacio Soler Garcia
@FrerichRaabe:你说得对,我们正在使用WriteFile。 - Ignacio Soler Garcia
奇怪。你能提供代码吗? - Werner Henze
显示剩余4条评论
1个回答

3

像这样的I/O错误是由设备驱动程序生成的。现在很少使用微软提供的标准Windows串口驱动程序,因为它只适用于真正的串口硬件。串口通常是通过使用自定义硬件来实现通信的设备驱动程序进行仿真。例如蓝牙和USB。但任何东西都可以。

对于设备制造商来说,这很方便,因为他们不必提供一个自定义的DLL让你在自己的代码中使用该设备。模拟串口让您可以简单地使用标准WinAPI函数与设备通信。

但问题仅限于此,一个核心问题是您实际上并没有使用串口硬件。另一个问题是这些设备制造商不擅长编写自定义驱动程序。特别是USB驱动程序以其劣质而臭名昭著。更糟糕的是,串口不支持即插即用,过于原始无法支持设备发现。因此,发现连接到设备的端口号以及处理在使用设备时断开设备等简单事情都是严重的障碍。

因此,当然,“磁盘已满”错误代码没有任何意义。设备驱动程序编写者捕获了某种特定于设备的错误条件的错误代码。了解错误的真正含义的唯一方法是询问供应商。


好的,我会尝试向 Citrix 提交支持请求,因为他们创建了将客户机物理 COM 映射到主机“虚拟”端口的驱动程序。谢谢,你太棒了。 - Ignacio Soler Garcia
1
“串口不是即插即用”这种说法部分是不正确的,更重要的是与这个问题无关。另一端的设备可能无法被识别,但计算机端的串口肯定可以是即插即用的。例如,那些 USB 转串口转换器在 PC 端是即插即用的(插入后会加载正确的串口驱动程序,但不会加载医疗设备的驱动程序)。 - MSalters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接