Использование класса DOTNET для связи с COM-портом

Я ищу кого-нибудь, кто уже использовал бы класс DOTNET для связи с COM-портом. В проекте 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

1 ответ

См. Комментарии на этой странице.
PHP: dotnet - Руководство

Класс dotnet позволяет вам создать экземпляр класса из сборки.Net и вызвать его методы и получить доступ к его свойствам, если класс, методы и свойства Â "видимы для COM.

Не поддерживается ни создание экземпляров статических классов, ни вызов статических методов.

Некоторые классы.Net не реализуют IDispatch, поэтому, хотя они могут быть созданы, вызов методов или доступ к свойствам этих классов не поддерживается.

Примечание.
.Net framework 4.0 и более поздние версии не поддерживаются классом dotnet. Если сборки были зарегистрированы с помощью regasm.exe, классы могут быть созданы как объекты com.

juan156_elias в gmail точка com

Использование COM и DOTNET напрямую - настоящий кошмар. DOTNET позволяет ориентироваться только на.Net 3.5 и ниже, и все двоичные файлы должны быть видны COM. Это в основном означает, что вам нужно будет написать свои собственные двоичные файлы.Net для всего, по крайней мере, для оболочки.

Вы не можете использовать.NET API напрямую, как вы упомянули в статье с вопросом, вам нужно создать и зарегистрировать видимую оболочку COM с помощью.NET 3.5 или более ранней платформы и вызвать ее.

Другие вопросы по тегам