我正在尝试在python中创建一个通过并行端口发送数据的脚本.我正在用C语言创建自己的模块.
问题是:当我尝试执行我的模块时,python崩溃了.没有错误,没有数据,没有.它只是关闭.
这是我的模块:
#include <Python.h>
#include <sys/io.h>
#define BaseAddr 0x378
/*----------------------------------------------------------------------------------
Este es un módulo destinado a controlar el puerto paralelo.
Probablemente tenga que ser ejecutado como administrador.
Created by markmb
------------------------------------------------------------------------------------*/
static PyObject *
paralelo(PyObject *self, PyObject *args){
    int pin;
    ioperm(BaseAddr,3,1);
    if (!PyArg_ParseTuple(args, "i", &pin))
        return NULL;
    outb(pin,BaseAddr);
    ioperm(BaseAddr,3,0);
    return 1
}
PyMethodDef methods[] = {
    {"paralelo", paralelo, METH_VARARGS, "Sends data through a parallel port"},
    {NULL, NULL, 0, NULL}
};
PyMODINIT_FUNC
initparalelo(void){
    (void) Py_InitModule("paralelo", methods);
}
(它没有所有python混乱的工作)我通过distutils编译它然后,在终端(使用xubuntu),我把:
import paralelo …这很简单.
我想把一盏灯插入英国主电源.
我希望能够通过软件打开和关闭它 - 比如从串口命令,或者通过运行命令行或者我可以从ruby或Java获得的东西.
我看到很多关于如何使用美国电力系统的X10做到这一点 - 但是有没有人真的试过在英国这样做?
如果你有这个工作:
1)你使用的是什么硬件?
2)你如何从软件中控制它?
谢谢!
我看到许多人正在使用虚拟机来托管IDE和所有必需的文件,进行S/W开发(不仅仅是Delphi).我已经使用Microsoft Virtual PC在各种操作系统上调试我的应用程序的问题,但很少在VM外部访问.我的应用程序使用USB,串行和 - 至关重要 - 直接I/O写入硬件(通过I/O权限驱动程序).我想让VM看到所有这些(当然只有一个VM可以运行).这可能吗?虚拟PC与VMWare的偏好是什么?
我正在使用gentoo并尝试编译程序来控制并行端口上的位.这条线靠近它的顶部:
#include <asm/io.h>
当我尝试在其上使用gcc时,它会产生以下输出:
port.c:4:20:错误:asm/io.h:没有这样的文件或目录
"找到asm/io.h"yeilds(除其他外):
/usr/src/linux-2.6.32-gentoo/arch/x86/include/asm/io.h
所以我有头文件,但它找不到它?为什么这不起作用?
初步的故事
有这个程序使用并行端口与其他硬件同步.它将并行端口输出设置为指定的(字节)值.使用PC的内置并行端口时,这没有问题.目标平台是Windows XP到7,到目前为止一切正常.源代码在Delphi中,可访问且可以修改.
这个怎么运作
在Delphi中,我可以使用io.dll来设置并行端口的值,但也有其他可用的解决方案,如inpout32.dll或port.dll.我打电话PortOut,指定一个端口号和字节值,并设置端口.
我现在想做什么 - 以及我需要帮助的地方
现在改变:这需要在没有内置并行端口的机器上工作(甚至不在主板上).有几种选择:
我目前正在前往并专注于最简单和最便宜的可能性:USB转并口适配器.
主要问题
并行端口适配器之间似乎存在差异,这些适配器仅用于连接打印机和其他似乎更强大的适配器.真的有区别吗?或者我可以使用这5个$打印机适配器中的一个,插入我自己的硬件并从Delphi代码访问端口?或者我需要一个特殊的适配器?有没有人经历过这个?还有一个相关的问题在这里,但不同的适配器类型(如果存在的话)不存在提及.此页面表明确实存在差异:
与可以仅连接到打印机的所有其他USB并行端口相反,这可以连接到大多数硬件.
我希望通过USB存在解决方案,因为这样您就不必打开PC,这意味着可以按需添加适配器.
子问题
您是否有使用PCI(Express)解决方案的经验?如果USB方法不成功,我必须使用一个.
我没有得到任何错误或异常.
一个窗口中的按钮:
private void button1_Click(object sender, EventArgs e)
{
    ControlPort.Output(0x378, 0xff);
}
和inpout.dll接口:
class ControlPort
{
    [DllImport("inpout32.dll", EntryPoint = "Out32")]
    public static extern void Output(int adress, int value);
}
怎么了?D2上的LED一直亮着.
我有Windows 7 x64旗舰版.
我正在尝试通过PCI Express卡找到我已连接到笔记本电脑的并行端口的基本(内存)地址.运行lspci -v显示我的计算机识别并行端口并提供I/O端口(1000和1008)但不提供内存地址(其他条目同时具有端口和内存位置......此卡是唯一没有内存地址的条目).此外,当我查看时,/proc/ioports我得到了lspci中给出的相同端口.但是,当我尝试在我正在运行的程序中使用这些地址中的任何一个(EMC2来控制步进电机)时,它在该地址处找不到并行端口.
如果有一个类似于Windows设备管理器 - >端口 - >资源的话,那真的很棒.在Ubuntu中有没有办法做到这一点?PCIe设备是否有标准内存位置?
编辑: 
来自的输出lspci -v
04:00.0 Parallel controller: Oxford Semiconductor Ltd Device c110 (prog-if 02)
Subsystem: Oxford Semiconductor Ltd Device c110
Flags: bus master, fast devsel, latency 0, IRQ 18
I/O ports at 1000 [size=8]
I/O ports at 1008 [size=4]
Capabilities: [40] Power Management version 3
Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Capabilities: [70] Express Legacy Endpoint, MSI 00
Capabilities: [100] Device Serial Number 10-01-00-11-11-e0-30-00
Capabilities: …对于项目的需要,我想在特定位置打印LPT1,这将在点阵打印机中打印文档,我应该在他们应该去的地方打印值.我真的很讨厌回去,我不知道从哪里开始.Internet没有关于使用C#在LPT端口中打印的具体信息,尤其是在打印时如何在特定位置发送值.有什么好的例子吗?这个教程?将是一个生命救世主.
我试图用C#程序将数据发送到LPT1端口,遗憾的是没有成功..我使用的是Windows 7 x64.我试过x86和x64(inpoutx64.dll)dll的..
我发送时使用x64 dll:
Output(888, 255);
它只是继续程序,因为一切正常,但我在万用表上看不到任何东西(只有静态0.02V)..
我还尝试了以下C++:
int main () {
int val = 0;
printf("Enter a value\n");
scanf("%d", &val);
_outp(0x378, val);
getchar();
_outp(0x378, 0);
return 0; }
但它引发了一个例外:
Unhandled exception at 0x01281428 in ppac.exe: 0xC0000096: Privileged instruction.
我记得有一次我在xp(C#而不是C++代码)上做了类似的工作,我希望它也可以在win7上运行..请帮助我.
谢谢.
我遇到了从带有Windows XP Professional和Psychopy v.1.81.03的32位PC向并行端口发送触发器的问题.
我很肯定端口地址是378,并且能够使用Eprime发送触发器,并且我可以使用软件parmon打开和关闭特定引脚(http://english.eazel.com/lv/group/view/ kl35264/Parmon.htm)
我尝试过使用Stéphanie和Nicholas发布的实验(请参阅psychopy google小组中的这篇文章:https://groups.google.com/forum/#!topic/psychopy-users/PxPhRDkuu2A )
我已经验证安装了pywin32(版本217)和并行,并尝试了两者
port = parallel.ParallelPort(address=0x0378)
port = parallel.PParallelInpOut32(address=0x0378)
使用ParallelPort时,我得到:
Traceback(最近一次调用最后一次):
文件"D:\ SebastianKorb\untitled2_lastrun.py",第65行,in
port = parallel.ParallelPort(address = 0x0378)AttributeError:'module'
对象没有属性'ParallelPort'
第65行port = parallel.ParallelPort(address=0x0378)
 是执行命令的地方(请注意,在此之前有行from psychopy import parallel)
当使用PParallelInpOut32时,我得到相同的(现在只有'PParallelInpOut32'的错误)
我还尝试运行心理参考手册(http://www.psychopy.org/api/parallel.html)上显示的几行代码:
from psychopy import parallel 
port = parallel.ParallelPort(address=0x0378) 
port.setData(4) 
port.readPin(2) 
port.setPin(2, 1)
但同样,我得到了同样的错误.
我应该提一下,我还验证了我对该文件的管理员访问权限 C:\Windows\system32\drivers\parport.sys
你能告诉我接下来应该尝试什么吗?
parallel-port ×10
c ×2
c# ×2
delphi ×2
lpt ×2
python ×2
serial-port ×2
.net ×1
c#-3.0 ×1
c++ ×1
delphi-2009 ×1
dot-matrix ×1
electronics ×1
gentoo ×1
hardware ×1
interfacing ×1
linux ×1
pci ×1
printing ×1
psychopy ×1
python-c-api ×1
triggers ×1
usb ×1
windows ×1