Использование класса 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 или более ранней платформы и вызвать ее.