C++ 从windows与自定义PCI接口

C++ 从windows与自定义PCI接口,c++,c,pci,C++,C,Pci,我正在尝试编写一个程序,可以读取一组传感器,在windows计算机上做出决定,然后写入一些执行器,例如阀门。这一切都已经在现有的系统和程序上完成了,但我们希望做一些不同的事情,因此我们将从头开始在windows计算机上使用一个新程序 传感器等的读写是通过制造商定制的PCI完成的,基本上我不知道如何读写电路板上的寄存器。我做过一些关于覆盆子Pis和其他微控制器+PCB的项目,但这个有点新。原来的程序是用C++编写的,如果有帮助的话。 任何关于从windows系统直接与PCIs接口的一般或特定信息都

我正在尝试编写一个程序,可以读取一组传感器,在windows计算机上做出决定,然后写入一些执行器,例如阀门。这一切都已经在现有的系统和程序上完成了,但我们希望做一些不同的事情,因此我们将从头开始在windows计算机上使用一个新程序

传感器等的读写是通过制造商定制的PCI完成的,基本上我不知道如何读写电路板上的寄存器。我做过一些关于覆盆子Pis和其他微控制器+PCB的项目,但这个有点新。原来的程序是用C++编写的,如果有帮助的话。
任何关于从windows系统直接与PCIs接口的一般或特定信息都将非常好,如果这些信息不够,请告诉我,我会提供更多信息。谢谢大家!

您需要通过制造商提供的驱动程序访问硬件。许多制造商没有记录如何通过最终用户代码直接访问其驱动程序。相反,它们在SDK中提供API库,用户可以调用该库来操作PCI设备

如果你发布一个指向你正在使用的设备的链接,这会有所帮助——这样我们就可以看到它捆绑了什么,并帮助你决定是否值得付出努力。如果制造商不合作,这可能是一件相对困难的事情。如果不使用PCI卡,您可能会更幸运,例如获得一些EtherCAT I/O模块,使用开源EtherCAT主库,并通过简单的网卡将应用程序连接到I/O模块。这将更具可支持性,并且非常耐淘汰,因为EtherCAT I/O不会很快消失,如果您使用像Qt或wxWidgets这样的便携式应用程序开发框架,您的代码可以完全可移植。然后你可以在PC机、Mac机、Raspberry PI机上运行它,它会做同样的事情,看起来基本相同。这不是白日梦——我维护的一些代码基本上就是这样做的,这是一种可行的方法。只要您的需求是软实时的,它就一定能工作。如果您需要硬实时,您需要将自己限制在具有实时扩展的Linux上,并从实时线程使用ECAT主库访问网络接口。它仍然比使用EtherCAT Master支持的PLC更方便开发人员——这些PLC通常在幕后使用CODESYS,这基本上只是在传播痛苦:


根据我的经验,支持一些定制的运动控制PCI卡等最终是半回报的,因为你经常需要做一些反向工程,这是一个很好的挑战,但最终这是一个死胡同。如果该卡没有可用的API/SDK,那么最好假设制造商正在卸载它,当它失去支持或无法获取时,您的所有工作都将白费。最好依靠可行的行业标准,以及拥有多个同等供应商的接口。以太猫I/O几乎是一打硬币。例如,您可以使用可免费下载的TwinCAT来探索I/O模块的功能和原型材料,然后使用ECAT主库在您自己的代码中实现它,必要时可能需要WireShark的帮助。

欢迎使用Stack Overflow。请复习并复习。特别是,您当前的问题措辞过于宽泛,要求外部资源的指针也是离题的。