3

在 Windows 机器上写入串行端口 (COM1) 时出现写入错误。返回的错误是 112 (DISK_FULL)。由于这是一个串行端口,我不明白错误的含义。

会不会是缓冲区满了?我不这么认为,因为我在打开端口后发送的第一个请求中收到错误。

4

1 回答 1

3

类似的 I/O 错误是由设备驱动程序生成的。这几天很少是微软提供的标准Windows串口驱动程序,它只适用于真正的串口硬件。串行端口通常由使用自定义硬件来实现通信的设备驱动程序模拟。例如蓝牙和 USB。但一切都会过去。

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

但就目前而言,一个核心问题是您实际上并没有使用串行端口硬件。另一个是这些设备制造商不太擅长编写自定义驱动程序。特别是 USB 驱动程序因质量差而臭名昭著。根本没有帮助的是串行端口不支持即插即用,它们太原始而无法支持设备发现。如此简单的事情,比如发现哪个端口号连接到设备,以及在设备使用时断开设备的连接,都是严重的障碍。

可以肯定的是,“磁盘已满”错误代码没有任何意义。设备驱动程序编写器获取了特定于设备的某种错误条件的错误代码。找出错误真正含义的唯一方法是询问供应商。

于 2012-10-18T12:47:25.883 回答