c# - 具有硬件通信的高级编程

标签 c# c dll driver hardware

在控制实际硬件运动的 C# 应用程序中,通信是如何发生的?

如果 PC 通过 USB 连接到其他硬件并且已经为设备完成了低级编程(假设使用 C),那么高级 C# 如何发送和接收命令设备?是否只是连接到 C 代码的 DLL 并以这种方式进行的情况?

我正在寻找有关此类针对驱动程序场景的高级编程的一般性讨论。不过,这更像是一种假设情况,因此我无法提供任何细节来为您提供线索。

谢谢。

最佳答案

是的,通常有一个您调用的带有 C 导出的 .DLL。

有时您可能会发现很难使用 P/Invoke 直接从 C# 调用某些导出。在这种情况下,您通常可以编写一个简单的 C DLL,它包装调用并提供与 P/Invoke 更兼容的替代接口(interface)。

我还必须与看似文件的设备进行交互。在这些情况下,您必须通过 Windows API 打开文件 CreateFile()函数,使用特殊的文件名语法:

"\\.\deviceName"

我还不得不使用 P/Invoke 来使用一些 Windows API USB 函数,例如 here 中描述的.

如您所见,有多种方法可以访问硬件库。

关于c# - 具有硬件通信的高级编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17125233/

相关文章:

c# - 检索特定模式内的值

C# 从每个区域中选择前 2 个产品详细信息

c - 释放 C 中 static 关键字定义的动态分配的内存

android - 在 Android Unity 上找不到 gdiplus.dll

c# - 在运行时动态加载 DLL

c# - Windows服务线程与循环和WCF

c - Visual Studio C++ 与 psapi.lib 的链接

python - 将多个参数传递给函数的最有效方法?

java - 加载 native 库时 OSGI 框架挂起

c# - 如何将二进制转换为字节并在c#中作为文件写入