无线电电子与电气工程百科全书 LPT端口的另一个生命。 第1部分.无线电电子电气工程百科全书 我没想到我的第一篇文章(azbukavb.narod.ru/teorie/LPT.htm)会引起程序员和电子工程师的兴趣,因为我收到了很多带有疑问的来信,并且直到今天仍然收到它们,尽管距离这篇文章写已经快三年了。 此外,第一篇文章中也存在一些不准确的地方。 所有这些促使我就这个主题写一篇更详细的文章,其中我将尽力回答亲爱的读者的大部分问题,并纠正第一篇文章中的不准确之处。 让第一篇文章的读者不要冒犯我,但我们将再次详细考虑 LPT 端口的每个触点和位。 在本文的第一部分中,我们将考虑理论,在第二部分和后续部分(如果有的话)中,我们将考虑可以“拾取”到此端口的电子设备。 Ø 在本文中,您将遇到普遍接受的数字缩写。 o 例如, 10102 - 下标中的二表示数字 5 以二进制表示, Ø 12410 - 十在下标中,表示数字 124 十进制。 就是这样……以防万一 实践表明,所有正确编写并补充了适当库(vbio32.dll、inpout32.dll、dlportio.dll 等)的程序都可以在大多数 Windows 系列操作系统的计算机上运行。 我在 Win5.0、6.0、Me、95、XP HE、XP Prof 甚至 DOS98 (QBasic) 上测试了我的所有程序(Visual Basic2000、6.22) - 一切正常。 在 DOS 中,根本不需要任何库,无论如何,一切都可以运行。 立即保留vbio32.dll和inpout32.dll 不会在下面工作 Win2000,但在Win95、98、Me下他们会相当从容地工作。 顺便说一下,您可以在 sano2000.narod.ru/index.html 获取这些库中的任何一个。 我想尝试 dlportio.dll,目前正在使用这个库。 最后,在编写程序之前,您必须正确声明您正在使用的库。 Ø 对于inpout32.dll 私有声明函数 Inp Lib“inpout32.dll”别名“Inp32”(ByVal PortAddress As Integer)As Integer 私有声明子输出库“inpout32.dll”别名“Out32”(ByVal PortAddress As Integer,ByVal Value As Integer) Ø 对于dlportio.dll 私有声明函数 DlPortReadPortUchar Lib“dlportio.dll”(ByVal 端口等长)作为字节 私有声明子 DlPortWritePortUchar Lib“dlportio.dll”(ByVal 端口为长,ByVal 值为字节) 有什么区别 私做 从 公共 我不会写。 用于与打印机(或其他设备)通信的并行端口的基地址为&H378 (LPT1)、&H278 (LPT2)、&H3BC (LPT3)。 在本文中,我们将仅考虑 LPT1。 该端口的地址空间在 &H378-&H37F 范围内。
· 地址 &H378 被称为 基本的 并用于在 D0-D7 线上向端口写入(读取,但稍后会详细介绍)数据。
· 地址 &H379 (基础+1) 旨在从连接到 LPT 端口(打印机、扫描仪等)的设备中读取状态位
· 地址 &H37A (基础+2) 用于写入连接到 LPT 端口的设备(打印机、扫描仪等)的控制位。 下表中,每个地址的触点和信号均被“解码” 联系人 18-25 - “接地”(常见, 接地,G圆等) 考虑对每个地址进行编程。
· 基址 &H378(LPT1) 允许您将数据写入线路上的端口 D0-D7 在 0 到 255 的范围内。
· 我们将数字 69 写入端口
****************************************************** ****************************************************** *****
· 地址 &H379 用于读取状态位。
· 读取地址处的端口状态 &H379 Ø 读取地址时 &H379 必须记住,前三位未使用,并且始终具有对数值。 “1”,第7位取反。 因此,如果15、13、12、10、11脚全部接地,那么读取信息时,前三位(未使用)和第1位(脚)将得到2 + 4 + 7。 11-逆,表示当发生接地故障时,会有一个log.“1”)+128总计135。我们不应该忘记这一点。 在本文的第二部分中,我们将更详细地讨论这一点。
****************************************************** ****************************************************** *****
· 地址 &H37A 用于写入控制位。
· 记录信号选通脉冲(控制位 0)
为什么是 10 个? 我们看一下表格。
信号 频闪, 汽车, 选择 IN - 相反,这意味着为了在连接器引脚 1、14、17 的输出处获得逻辑“1”,您需要对这些位应用逻辑“0”,即给予一件事,得到相反的东西。 信号 INIT 直接(不是反相),因此当我们向该位应用逻辑“1”时,引脚 16 上将出现逻辑“1”,即所给予的就是所收到的。 让我们尝试在引脚 1,17 上获得信号“0”的低电平,在引脚 14 和 16 上获得信号“1”的高电平,即在触点 1,14,16,17、XNUMX、XNUMX、XNUMX 的输出处将有 0 1 1 0 (610). 上 无效 少量(-频闪)我们给出“1”(在接触点 1 上会有“0”), 第一 少量(-AUTO)我们给出“0”(在接触点 14 上会有“1”), 第二 少量(INIT)我们给出“1”(在接触 1 上会有“1”),最后,在 第三 少量(-选择 IN)我们给出“1”(在触点 17 上将有“0”),即我们在&H37A处写下了数字10112, 是 1310。 因此,为了在输出处获得 6,您需要应用 13。 为了方便起见,我给出了一个表格,其中包含从 0 到 15 的所有可能的数字组合
最后,本文的最后一部分。 如果您的计算机支持 EPP 标准,则地址处的第四位 &H37A 您将能够从打印机启用中断(对于LPT1,它是IRQ7),只是不要问我它是什么,反正我对中断一无所知。 但第五位是1101012,例如,给出数字 4310,您将 D0-D7 总线设置为 接待 数据。 在这种情况下,所有数字(触点 2-9)均取逻辑值“1”。 要将逻辑“0”应用于所需的触点,需要通过 240 - 360 欧姆的电阻将其闭合到“地”。 这样,通过计算机的LPT端口,我们得到一个具有12个输出信号和5个输入信号的标准设备,而当端口切换到EPP模式时,我们得到4个输出信号和13个输入信号。
作者:阿列克谢·克柳什尼科夫,伊万诺沃; 出版:cxem.net 查看其他文章 部分 电脑. 读和写 有帮助 对这篇文章的评论. 科技、新电子最新动态: 用于触摸仿真的人造革
15.04.2024 Petgugu全球猫砂
15.04.2024 体贴男人的魅力
14.04.2024
其他有趣的新闻: ▪ 星期五锁智能门锁
免费技术图书馆的有趣材料: 本页所有语言 www.diagram.com.ua |