0

我搜索了已经使用 DOTNET 类与 COM 端口进行通信的人。在一个 e-Health PHP 项目中,我搜索以从智能卡中获取数据。在陷入了为 Linux 保留的几种方法之后,我发现这个 DOTNET 类允许访问端口以与外部设备进行通信。

$serial = new DOTNET('system', 'System.IO.Ports.SerialPort');
$serial->PortName = 'COM8';
$serial->Open();

我按照另一个论坛的指示修改了文件 php.ini 以取消注释这三行,但似乎还不够:

extension=php_com_dotnet.dll   
extension_dir = "ext"   
enable_dl = On

尝试打开连接时,Wamp 向我发送以下错误消息:

Fatal error: in C:\wamp64\www\node-project\patients.php on line 204

com_exception: in C:\wamp64\www\node-project\patients.php on line 204
4

1 回答 1

0

请参阅此页面上的评论。
PHP: dotnet - 手册

dotnet 类允许您从 .Net 程序集实例化一个类并调用其方法并访问其属性,前提是该类以及方法和属性对 COM 可见。

既不支持实例化静态类也不支持调用静态方法。

一些 .Net 类不实现 IDispatch,因此虽然可以实例化它们,但不支持调用方法或访问这些类的属性。

注意:
dotnet 类不支持 .Net 框架 4.0 及更高版本。但是,如果程序集已使用 regasm.exe 注册,则可以将类实例化为 com 对象。

gmail dot com 的 juan156_elias

直接使用 COM 和 DOTNET 是一场噩梦。DOTNET 仅允许您以 .Net 3.5 及更低版本为目标,并且所有二进制文件都必须是 COM 可见的。这基本上意味着您需要为所有内容编写自己的 .Net 二进制文件,至少是包装器。

您不能直接使用问题文章中提到的 .NET API,您必须使用 .NET 3.5 或更低版本的框架创建和注册一个 COM 可见包装器并调用它。

于 2020-09-03T14:45:41.907 回答