You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 7(x86)/10(x64)下用Embarcadero Delphi XE控制LPT端口的问题

LPT端口管理(Delphi XE + Windows 10)问题解答

一、端口地址PortAddr的查看方法

  • 没错,你可以在设备管理器的驱动属性「资源」选项卡中找到:
    1. 打开设备管理器,找到「WCH PCI Express=>DUAL SERIAL&&PARALLEL」设备,展开后选中对应的并行端口
    2. 右键选「属性」,切换到「资源」标签页
    3. 在「资源类型」里找到「I/O范围」,对应的起始地址就是PortAddr(比如显示0x378,转换成十进制就是888,直接填这个数值即可)
    4. 如果看到「使用自动设置」被勾选,先取消勾选就能看到具体的地址分配

二、inpout32.dll在Windows 10的替代方案

inpout32.dll对Win10(尤其是64位系统)兼容性较差,推荐以下几种替代方式:

1. 用WinIo库

WinIo是专门用于硬件I/O端口访问的工具库,支持32/64位Win10,在Delphi中使用步骤:

  • 引入winio.dll和对应的头文件
  • 核心调用示例:
    function InitializeWinIo: Boolean; stdcall; external 'winio.dll';
    function ShutdownWinIo: Boolean; stdcall; external 'winio.dll';
    function PortOut(PortAddr: Word; Data: Byte): Boolean; stdcall; external 'winio.dll';
    function PortIn(PortAddr: Word; var Data: Byte): Boolean; stdcall; external 'winio.dll';
    
  • 注意:程序必须以管理员权限运行,初始化时调用InitializeWinIo,用完记得调用ShutdownWinIo释放资源

2. 调用扩展卡自带的驱动API

你的WCH扩展卡有自带驱动,建议找厂商提供的SDK或开发文档,这类厂商一般会提供专门的控制库(动态链接库或静态库),直接用厂商的API兼容性和稳定性都更好,还能避免系统权限问题

3. 使用Windows原生并行端口API

Windows自带Win32 API可以直接操作LPT端口,示例代码:

var
  hLPT: THandle;
  Data: Byte;
  BytesWritten: DWORD;
begin
  hLPT := CreateFile('LPT1', GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
  if hLPT <> INVALID_HANDLE_VALUE then
  begin
    Data := $FF; // 输出高电平,点亮LED
    WriteFile(hLPT, Data, 1, BytesWritten, nil);
    Sleep(500);
    Data := $00; // 输出低电平,熄灭LED
    WriteFile(hLPT, Data, 1, BytesWritten, nil);
    CloseHandle(hLPT);
  end;
end;
  • 注意:这种方式需要系统把你的扩展卡识别为标准并行端口,可能需要在设备管理器里把设备驱动换成「标准并行端口」,部分第三方扩展卡可能不支持这种方式

内容的提问来源于stack exchange,提问作者Rix1970

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:50:28