位5DATA5
16初始化成INIT低电平
f8数据位6DATA6
17选择输入SLCTIN低电平
9数据位7DATA7
1825地线路GND
D0D7为数据线S0S7为状态线但是S0S1S2是看不见的从图中你也可以看出状态线是用来读取数据的但S0却不同它是超时标志位其他的状态线从第1011121315针是用来发送数据的可以看出是5位那么我们怎么能得到这些数据端口呢很简单每一个并口都有一个地址在Wi
dows2000中你可以在打印机端口LPT1的属性中看到他们比如我的是0378037F如果是10进制那么就是888同样你也可以看到你的COM端口的地址让我以打印机为例解释一下这些针位的意义
llllllll
S0在EPP增强的串口模式下如果超时的话这位置1S1没用估计是装饰S2大多数情况下没有使用S3如果打印机发生了错误则置0它通常被叫做
Error或者
FaultS4如果数据达到则置1我们通常叫做SelectS5如果没有打印纸了则置1通常叫做PaperE
d或者PaperEmpty或者PErrorS6如果打印机得到了一个字节的数据则此位置0通常叫做
Ack或者
Ack
owledgeS7如果打印机处于繁忙的状态则此位置0通常叫做Busy控制线这些线通常用来输出但有时也可以用于输入他们占用C0C7如图但是在接口上C4C5C6C7是不可见他们占用的端口地址是0x37A
l
C0这一针脚是保留的他发送命令去读取端口上的数据D0D7当计算机启动的时候这一位被置1通常叫做
Strobe
lll
C1保留通过他发送命令给打印机可以得到下一条打印线LFC2重置打印机并且清空数据缓冲区
I
itializeC3保留置高电平打开数据输入启动计算机时置0
SelectI
f地线从G0G7的针是接地用的他们一般是用来完善电路的综上所述,在我的应用程序里使用数据线而不是具有保留位的控制线或者状态线作为数据传输。原因显而易见:我们可以发送任何数据到数据线上,比如00000000,这样8根针就没有任何电压(0伏特);当然也可以发送11111111(255),这样每根针都有+5伏特的电压。但是如果我们使用控制线,他有C0,C1和C3是保留,当我们发送0000000的时候,他却只能是0100,所以这样数据就不正确了。
信号StrobeDataBit0DataBit1DataBit2DataBit3DataBit4DataBit5DataBit6DataBit7Ack
owledgeBusyPaperE
dSelectI
AutoFeedErrorI
itializeSelectGrou
d数据位C0D0D1D2D3D4D5D6D7S6S7S5S4C1S3C2C3针脚1234567891011121314151617方向OutputOutputOutputOutputOutputOutputOutputOutputOutputI
putI
putI
putI
putOutputI
putOutputOutput
1825Grou
d
串行口的典型r