问题描述
我搜索某个已经使用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
解决方法
请参阅此页上的评论。
PHP: dotnet - Manual
dotnet类允许您从.Net程序集实例化一个类,并调用其方法并访问其属性(如果该类以及方法和属性对COM是可见的)。
既不实例化静态类也不调用静态方法。
某些.Net类未实现IDispatch,因此可以实例化它们,但不支持在这些类上调用方法或访问属性。
注意:
.net Framework 4.0及更高版本不受dotnet类的支持。如果程序集已经在regasm.exe中注册,则可以将这些类实例化为com对象。
juan156_elias at gmail dot com
直接使用COM和DOTNET是一个噩梦。 DOTNET仅允许您以.Net 3.5及更低版本为目标,并且所有二进制文件都必须是COM可见的。这基本上意味着您将需要为所有内容(至少包装程序)编写自己的.Net二进制文件。
您不能像问题文章中提到的那样直接使用.NET API,您必须使用.NET 3.5或更低版本的框架来创建和注册COM可见包装,然后调用它。