Delphi编程中如何实现对并口操作?

hyoupeng 2000-07-07 02:58:00
Delphi编程中,需要向并口输出一些数据,如何实现?各位Delphi高手,请多多指教。
...全文
330 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyoupeng 2000-07-25
  • 打赏
  • 举报
回复
我已用其它方法解决该问题,谢谢大家的支持。
meijg 2000-07-23
  • 打赏
  • 举报
回复
to hyoupeng:
给你的信都退回来了,请另告知你的email地址
hyoupeng 2000-07-22
  • 打赏
  • 举报
回复
98可以,NT、windwos 2000没成功。NT 下有何解决办法?
hyoupeng 2000-07-22
  • 打赏
  • 举报
回复
98可以,NT、windwos 2000没成功。
meijg 2000-07-22
  • 打赏
  • 举报
回复
看来在nt 下是不行的,你在98下试过吗,可以用吗
hyoupeng 2000-07-22
  • 打赏
  • 举报
回复
meijg:我以超级用户(Administrator)登陆仍无法直接写端口378h,
出错信息为:...exception class EPrivilege with message 'Privileged instruction'.
能否具体说明需要设置哪些权限?
meijg 2000-07-21
  • 打赏
  • 举报
回复
这是使用者的权限问题,你登陆的用户没有操作硬件的权限,要么用超级用户登陆,要么为用户设置相应权限
hyoupeng 2000-07-21
  • 打赏
  • 举报
回复
用ASM直接写端口378h方法,在Windows NT或Windows 2000下
出现不能使用特权指令(privilege instruction) Out出错信息,
该如何解决?
meijg 2000-07-07
  • 打赏
  • 举报
回复
只要直接想378H口地址写数据就可以了,
我做过一个动态库,不止能不能满足你
直接对断口操作
上面的ecpDFifoAddress 就是并口地址,直接将这段汇编代码嵌入你的程序中即可
xiaohedou 2000-07-07
  • 打赏
  • 举报
回复
您的例子"ecpDFifoAddress"是口地址吗,子程序要怎样写?
ploto 2000-07-07
  • 打赏
  • 举报
回复
直接读写端口,端口号为378H. 直接写端口的程序如下

   ASM
mov cl,$10 {loads loopcounter with 16}
mov dx,ecpDFifoAddress
@Loop16Bytes: {return of loop}
mov al,[ebx] {send a byte of the data}
out dx,al
inc ebx
dec cl

DELPHI编程剖析 1 第一章 背景知识 3 1. 概述 3 2. 什么是接? 3 3. 接分类. 3 4. 为什么需要I/O接? 3 5. I/O接的功能 4 6. I/O接的通信方式 5 7. I/O接的分类 5 8. 串的分类 8 9. 串通信分类 11 10. 奇偶校验 12 第二章 串通信编程简介 13 1. 串的通信编程流程 13 2. Unix平台下对串进行开发的方法 13 3. Windows平台下对串进行开发的方法 13 第三章 使用DELPHI工具进行串通信编程 15 第四章 串编程的调试及其相关工具 27 串通信编程剖析 第一章 背景知识 1. 概述 串是计算机上I/O接的一种,要掌握串通信编程的相关知识,必须先了解I/O接的相关知识。 I/O接是接的一种。 2. 什么是接? 众所周知计算机是由CPU,存储器,外部终端设备组成. 接就是用于CPU与外部设备、存储器的连接和数据交换的设备。 3. 接分类. 广义的计算机接有二种,见下表: 类別 用途 电路实现复杂性 存储器接: 用于CPU与外部设备、存储器的连接 简单 I/O接 数据交换 复杂 习惯上说到接只是指I/O接。本文沒作特別介绍的地方都叫I/O接. 4. 为什么需要I/O接? 计算机的外围设备品种繁多,几乎都采用了机电传动设备,因此,CPU在与I/O设备进行数据交换时存在以下问题: 速度不匹配: I/O设备的工作速度要比CPU慢许多,而且由于种类的不同,他们之间的速度差异也很大,例如硬盘的传输速度就要比打印机快出很多。 时序不匹配: 各个I/O设备都有自己的定时控制电路,以自己的速度传 输数据,无法与CPU的时序取得统一。 信息格式不匹配: 不同的I/O设备存储和处理信息的格式不同,例如可以分为串行和并行两种;也可以分为二进制格式、ACSII编码和BCD编码等。 信息类型不匹配: 不同I/O设备采用的信号类型不同,有些是数字信号,而有些是模拟信号,因此所采用的处理方式也不同。    基于以上原因,CPU与外设之间的数据交换必须通过I/O接来完成。 5. I/O接的功能 通常I/O接有以下一些功能: 1)设置数据的寄存、缓冲逻辑,以适应CPU与外设之间的速度 差异,接通常由一些寄存器或RAM芯片组成,如果芯片足够大还可以实现批量数据的传输; 2)能够进行信息格式的转换,例如串行和并行的转换; 3)能够协调CPU和外设两者在信息的类型和电平的差异,如电平 转换驱动器、数/模或模/数转换器等;    4)协调时序差异;    5)地址译码和设备选择功能;    6)设置断和DMA控制逻辑,以保证在断和DMA允许的情况下产生断和DMA请求信号,并在接受到断和DMA应答之后完成断处理和DMA传输。    6. I/O接的通信方式 CPU通过接对外设进行控制的方式有以下几种: 1)程序查询方式 这种方式下,CPU通过I/O指令询问指定外设当前的状态,如果外设 准备就绪,则进行数据的输入或输出,否则CPU等待,循环查询。 这种方式的优点是结构简单,只需要少量的硬件电路即可,缺点是由 于CPU的速度远远高于外设,因此通常处于等待状态,工作效率很 低。 2)断处理方式 在这种方式下,CPU不再被动等待,而是可以执行其他程序,一旦 外设为数据交换准备就绪,可以向CPU提出服务请求,CPU如果响 应该请求,便暂时停止当前程序的执行,转去执行与该请求对应的 服务程序,完成后,再继续执行原来被断的程序。   断处理方式的优点是显而易见的,它不但为CPU省去了查询外设 状态和等待外设就绪所花费的时间,提高了CPU的工作效率,还满 足了外设的实时要求。但需要为每个I/O设备分配一个断请求号 和相应的断服务程序,此外还需要一个断控制器(I/O接芯 片)管理I/O设备提出的断请求,例如设置断屏蔽、断请求 优先级等。此外,断处理方式的缺点是每传送一个字符都要进行 断,启动断控制器,还要保留和恢复现场以便能继续原程序的 执行,花费的工作量很大,这样如果需要大量数据交换,系统的性 能会很低。 3)DMA(直接存储器存取)传送方式 DMA最明显的一个特点是它不是用软件而是采用一个专门的控制 器来控制内存与外设之间的数据交流,无须CPU介入,大大提高 CPU的工作效率。   在进行DMA数据传送之前,DMA控制器会向CPU申请总线控 制 权,CPU如果允许,则将控制权交出,因此,在数据交换时, 总线控制权由DMA控制器掌握,在传输结束后,DMA控制器将 总线控制权交还给CPU。    7. I/O接的分类 7.1. 并行接   目前,计算机的并行接主要作为打印机端,接使用的不再是36针接头而是25针D形接头。所谓“并行”,是指8位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,容易出错。   现在有五种常见的并:4位、8位、半8位、EPP和ECP,大多数PC机配有4位或8位的并,许多利用Intel386芯片组的便携机配有EPP,支持全部IEEE1284并规格的计算机配有ECP并。   标准并行4位、8位、半8位:   4位一次只能输入4位数据,但可以输出8位数据;8位可以一次输入和输出8位数据;半8位也可以。   EPP(增强并行):由Intel等公司开发,允许8位双向数据传送,可以连接各种非打印机设备,如扫描仪、LAN适配器、磁盘驱动器和CDROM 驱动器等。   ECP(扩展并行):由Microsoft、HP公司开发,能支持命令周期、数据周期和多个逻辑设备寻址,在多任务环境下可以使用DMA(直接存储器 访问)。   目前几乎所有的586机的主板都集成了并行插座,标注为 Paralle1或LPT1,是一个26针的双排针插座。 7.2. 串行接   计算机的另一种标准接是串行,现在的PC机一般至少有两个串行COM1和COM2。串行不同于并行之处在于它的数据和控制信息是一位接一位串行地传送下去。这样,虽然速度会慢一些,但传送距离较并行更长,因此长距离的通信应使用串行。通常COM1使用的是9针D形连接器,而COM2有些使 用的是老式的DB25针连接器。    7.3. 磁盘接 1)IDE接   IDE接也叫做ATA端,只可以接两个容量不超过528M的硬盘驱动器,接的成本很低,因此在386、486时期非常流行。但大多数IDE接不支持DMA数据传送,只能使用标准的PCI/O端指令来传送所有的命令、状态、数据。几乎所有的586主板上都集成了两个40针的双排针IDE接插座,分别标注为IDE1和IDE2。 2)EIDE接 EIDE接较IDE接有了很大改进,是目前最流行的接。 首先,它所支持的外设不再是2个而是4个了,所支持的设备除了硬盘,还包括CD-ROM驱动器磁盘备份设备等。   其次,EIDE标准取消了528MB的限制,代之以8GP限制。   第三,EIDE有更高的数据传送速率,支持PIO模式3和模式4标准。    7.4. SCSI接   SCSI(SmallComputerSystemInterface)小计算机系统接,在做图形处理和网络服务的计算机被广泛采用SCSI接的硬盘。除了硬盘以外,SCSI接还可以连接CD-ROM驱动器、扫描仪和打印机等,它具有以下特点:   *可同时连接7个外设;   *总线配置为并行8位、16位或32位;   *允许最大硬盘空间为8.4GB(有些已达到9.09GB);   *更高的数据传输速率,IDE是2MB每秒,SCSI通常可以达到5MB每秒,FASTSCSI(SCSI-2)能达到10MB每秒,最新的SCSI-3甚至能够达到40MB每秒,而EIDE最高只能达到16.6MB每秒;   *成本较IDE和EIDE接高很多,而且,SCSI接硬盘必须和SCSI接卡配合使用,SCSI接卡也比IED和EIDE接贵很多。   *SCSI接是智能化的,可以彼此通信而不增加CPU的负担。在IDE和EIDE设备之间传输数据时,CPU必须介入,而SCSI设备在数据传输过程起主动作用,并能在SCSI总线内部具体执行,直至完成再通知CPU。   

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧