在LabVIEW中写并口(LPT1)得到-37错误



主要软件: LabVIEW Development Systems>>Full Development System
主要软件版本: 4.0
主要软件修正版本: N/A
次要软件: N/A

问题:
当在LabVIEW中写并口的时候我遇到了-37错误(未找到设备)。

根据LabVIEW Instrument I/O Reference Manual (320537C-01, January 1996)中的C-6页, 我可以将端口号指定为10,使用LabVIEW Serial Port Write.vi来写并口(LPT1)。手册中提到我可以在LabVIEW文件夹中的labview.ini文件里加入以下的语句来确保端口号为10:
serialDevices="COM1; COM2; COM3; COM4; COM5; COM6; COM7; COM8; COM9; COM10; 
LPT1; LPT2; LPT3; LPT4;"
试过加入这些语句之后,我仍然得到-37错误。

解答:
以下的解决方案适用于LabVIEW 4.x和LabVIEW 5.0。LabVIEW 5.1以及以后的版本会在您创建的可执行文件中自动包含serpdrv 文件(如果您建创建的是数据采集应用的话,还会有daqdrv文件)。您可以参考the Application Builder Troubleshooting Wizard(下面有链接)来获取更多的信息。

在LabVIEW 4.x和5.0中,应该在labview.ini文件中加入如下的语句:
serialDevices="COM1;COM2;COM3;COM4;COM5;COM6;COM7;COM8;COM9;\\.\COM10;
LPT1;LPT2;LPT3;LPT4"
不要在分号后面加空格,也不要在最后一个端口后面加分号。而且如果您用的是并口的话,任何对于大于COM9的COM端口引用都必须在端口引用前带有\\.\。比如:
serialDevices="COM1;COM2;COM3;COM4;COM5;COM6;COM7;COM8;COM9;\\.\COM10;
\\.\COM11;\\.\COM12;\\.\COM13;LPT1;LPT2"
您可以使用这些特殊的反斜杠来标识每一个COM端口,不过对于COM端口1-9这并不是必须的。

C-10页也提到了LPT1会编号为端口10(仅对Windows 98/95)。在某些条件下这是对的,它还要取决于LPT1被放在serialDevices字符串的什么位置。在最初的serialDevices行中:
serialDevices="COM1;COM2;COM3;COM4;COM5;COM6;COM7;COM8;COM9;\\.\COM10;
LPT1;LPT2;LPT3;LPT4"
尽管LPT1是字符串中的第11个元素,它仍然是端口10。LabVIEW会从0开始字符串的索引。

修改serialDevices字符串
并不是一定要设置LPT1为端口10。您可以使用COM1,COM2,LPT1这种形式。这时可以使用以下的serialDevices配置:
serialDevices="COM1;COM2;LPT1"
在这种情况下LPT1是字符串中的第3个设备,所以是端口2。

LabVIEW可执行文件
如果您在使用LabVIEW Application Builder创建一个可执行文件并且想在其中使用并口,就必须在同一个文件夹中为该可执行文件创建一个.ini文件。这个文件的第一行必须包含这个可执行文件的文件名(不包括扩展名)并且用方括号标出。如果您忽略了这一步骤您就可能得到错误-37。

如果您的可执行文件的名字是myprog.exe,您就需要建立一个名为myprog.ini的文件,它的第一行内容为:
[myprog]
此文件的内容应该跟labview.ini文件一致。serialDevices行也应该相同,除非程序的目标机跟开发程序的机器的端口配置不同。如果发生这种情况的话,应该修改您的可执行文件和serialDevices行来使之跟您的目标计算机对应。可执行文件的运行是跟Labview中的VI完全一样的。

您还需要将LabVIEW文件夹中的serpdrv文件复制到可执行文件的那个目录中。您可以从下面链接的知识库文件中取得更多的信息。

注意:您的Windows浏览器设置可能隐藏了某些类型的文件。要显示所有类型的文件,您可以在Windows 98中选择 View»Folder Options»View»Files and Folders»Hidden Files,选择Show all files。 在Windows 95中有一些不同,但是类似的。

您需要4013或是更高版本的serpdrv来在LabVIEW 4.x中通过并口写数据。
  1. 可以通过运行lv\vi.lib\instr\_sersup.llb中的windows serpdrv version number.vi来确定serpdrv的版本。
  2. 4013版本会把自己标识为4012版本。请确认此文件最后修改的日期是5/30/97。


相关链接:
Developer Zone Example: Writing to a Parallel Port
Application Builder Troubleshooting Wizard
KnowledgeBase 0PFEJ3A1: Serial Port VIs Do Not Work Properly and Hang the System

附件:





报告日期: 03/30/2006
最近更新: 01/02/2008
文档编号: 0ISAJ838