Matlab 中的并行端口访问

Matlab 中的并行端口访问

我在 Ubuntu 22.04 上访问并行端口时遇到困难。它是安装在 PCI 插槽中的 SUNIX Co. 多端口 MIO6469A。它有 DB-9(串行)和 DB-25(并行)连接器。我们正尝试使用它通过并行端口将信号发送到 Matlab 中的 EEG 系统。但代码没有被接收。

如何判断 Linux 上的并行端口是否已正确安装/配置?

快速摘要:在终端中,如果输入-lspci -vv,似乎可以找到 PCI 卡(见下文)。但我出于几个原因感到困惑。首先,它显示的是串行端口,而不是并行端口。其次,我们在使用 Matlab 中的“ppdev_mex.m”函数时遇到了麻烦,该函数通常用于此类事情。所以我不确定我们是否有正确的并行端口地址。

任何帮助都将不胜感激!

0000:04:00.0 Communication controller [0708]: SUNIX Co., Ltd. Multiport serial controller
    Subsystem: SUNIX Co., Ltd. Multiport serial controller
    Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Interrupt: pin A routed to IRQ 16
    Region 0: I/O ports at 3020 [size=32]
    Region 1: I/O ports at 3048 [size=8]
    Region 2: I/O ports at 3040 [size=8]
    Region 3: I/O ports at 3000 [size=32]
    Capabilities: <access denied>
    Kernel driver in use: parport_serial
    Kernel modules: parport_serial

当我运行 时sudo adduser <username> lp,提示我已经是该lp群组的成员。如何查看谁是成员?

journalctl -xb | grep parport返回

Jan 30 20:00:12 McRey57-LN-01 systemd-modules-load[442]: Inserted module 'parport_pc'
Jan 30 20:00:12 McRey57-LN-01 kernel: parport_serial 0000:04:00.0: enabling device (0000 -> 0001)
Jan 30 20:00:12 McRey57-LN-01 kernel: parport0: PC-style at 0x3048 (0x3040), irq 16, using FIFO [PCSPP,TRISTATE,COMPAT,EPP,ECP]

ls -l /dev/lp*返回

lp: cannot access '/dev/lp*': No such file or directory

id返回:

uid=1001(gaspelingroup) gid=1001(gaspelingroup) groups=1001(gaspelingroup),4(adm),7(lp),20(dialout),24(cdrom),27(sudo),30(dip),44(video),46(plugdev),122(lpadmin),135(lxd),136(sambashare),1002(psychtoolbox)

答案1

我发现了一个未经测试的解决方案并对其进行了改编:

  1. 创建一个名为的文件,/etc/modprobe.d/sunix-askubuntu-1501881.conf包含以下内容:

    alias parport_low_level parport_pc
    options parport_pc io=0x3020 irq=11,auto
    
  2. 创建一个名为的文件,/etc/udev/rules.d/99-sunix-askubuntu-1501881.rules包含以下内容:

    ATTR{device}=="0x1999", ATTR{vendor}=="0x1fd4", RUN+="/sbin/modprobe parport_low_level"
    
  3. 重启

如果并行端口没有显示或工作,请尝试用 0x3048、0x3040 和 0x3000 替换 0x3020,并在其间重新启动。如果内核崩溃或发生冲突,请添加install parport_serial /bin/false到第一个文件。

相关内容