Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用DOTNET类与COM端口通信_Php_Serial Port_Com Port - Fatal编程技术网

Php 使用DOTNET类与COM端口通信

Php 使用DOTNET类与COM端口通信,php,serial-port,com-port,Php,Serial Port,Com Port,我搜索一个已经使用类DOTNET与COM端口通信的人。 在一个e-Health PHP项目中,我搜索以从智能卡获取数据。 在尝试了Linux保留的几种方法之后, 我发现这个DOTNET类可以访问端口与外部设备通信 $serial = new DOTNET('system', 'System.IO.Ports.SerialPort'); $serial->PortName = 'COM8'; $serial->Open(); 我在另一个论坛上修改了php.ini文件,以取消对这三行的

我搜索一个已经使用类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

请参阅本页的评论。

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

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

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

注意:
dotnet类不支持.Net framework 4.0及更高版本。如果程序集已注册到regasm.exe,则可以将这些类实例化为com对象

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


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

您是否有一个教程来解释如何操作?我不明白您在创建和注册这个COM可见包装上的真正含义。我不知道framework.NET。我刚刚发现这种方法可以与Internet上的端口通信。其他方式是Linux独有的。请查看Microsoft提供的此页面或stackoverflow提供的这些文章,,即使你到现在还不知道,你也应该研究一下。我需要使用Visual Basic和C#?这不能只用PHP来完成吗?是的,这是必要的。或者,即使它是用C++制作的,它也可以作为COM(组件对象模型)工作。如果您已经拥有一个具有这种功能的PHP库,您可以考虑使用它。我想这个图书馆不是你需要的。我想你对“COM”的两种不同含义感到困惑。您所说的是一个“COM端口”,通常称为“串行端口”,它是计算机上的一个物理连接器。鉴于此DotNet库设计为通过“COM”接口(软件编程接口)与Windows.NET framework交互的接口,其全称为“组件对象模型”。这是两个完全不同的东西,只是碰巧有相同的首字母缩略词。我认为如果你搜索,你会得到更好的结果,有更多的相关信息供你使用