2012-10-18 24 views
3

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

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

+1

你使用哪个函数写入COM端口 - [''WriteFile'](http://msdn.microsoft.com/en-us/library/windows/desktop/aa365747(v = vs.85))。 aspx)? –

+0

您是否可以通过TeraTerm发送命令? – Pramod

+0

@FrerichRaabe:我现在没有这个信息。我知道我们直接使用Winbase api。 –

回答

3

像这样的I/O错误是由设备驱动程序生成的。这些日子很少是微软提供的标准Windows串行端口驱动程序,它只适用于真正的串行端口硬件。通过使用定制硬件来实现通信的设备驱动程序,串行端口经常是仿真的。例如蓝牙和USB。但什么都可以。

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

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

所以确定,“磁盘已满”错误代码并不意味着什么。设备驱动程序写入器抓取错误代码,查找设备特定的某种错误情况。找出错误真正意义的唯一方法是询问供应商。

+0

好吧,我会尝试向Citrix填充支持请求,因为他们创建了将guest虚拟COM映射到主机“虚拟”端口的驱动程序。谢谢,你摇滚。 –

+1

“串口不是PnP”是部分不真实的,更重要的是与这个问题无关。另一端的设备可能无法识别,但计算机端的串行端口肯定可以是PnP。例如,那些USB转串口转换器在PC端是PnP(插入它们将加载正确的串口驱动程序,但不是医疗设备的驱动程序) – MSalters