After reviewing https://sourceforge.net/p/easymodbustcp/discussion/general/thread/61859b68/ it appears that the following code should create a powershell object that can be used to communicate with ModBus devices over serial connections, but I am getting an error. I use powershell often, but have very limited experience using .net objects.
$MBCli=[EasyModbus.ModbusClient]::new("COM1") returns the following error:
Method invocation failed because [EasyModbus.ModbusClient] does not contain a method named 'new'.
At line:4 char:1
+ $MBCli=[EasyModbus.ModbusClient]::new("COM1")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
However, [EasyModbus.ModbusClient].GetMethods().Name returns a valid list of the methods for [EasyModbus.ModbusClient]. I'm also running Powershell elevated. Any suggestions for what I may be doing wrong?
I have also verified that the com port can be used to communicate and read registers using another application.
Last edit: amreagan 2017-08-08
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
This is strange, I can replicate this problem on Windows 7 box running .net 4.6 and Windows Management Framework 4 using either 32 bit or 64 bit versions of Windows 7, but I don't have this problem on Windows 10. The "new" method simply doesn't appear on Win 7.
Last edit: amreagan 2017-08-08
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I am not really familiar with Powershell. Maybe it is an issue with the .NET Framework it is using.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
Anonymous
-
2018-10-03
Yeah this issue is persistent. In order to get it to work with powershell on windows 7 you have to initialize the client as $MBClient = New-Object -TypeName EasyModbus.ModbusClient and then set the IP Address and Port from the propeties , otherwise on a Win10 machine you can just do $MBClient = [EasyModbus.ModbusClient]::new("192.168.40.112", 502)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
Anonymous
-
2018-10-03
[This is continuation of my above post with the Win 7 and Win10 examples] Or you can call the constructor on a Win7machine like so $MBClient = New-Object -TypeName EasyModbus.ModbusClient -ArgumentList "192.168.40.112",502. Both my Win10 and Win7 machines have all the same .NET libraries installed , but produce different behaviors.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
Anonymous
-
2024-05-12
Post awaiting moderation.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
Anonymous
-
2024-05-12
Post awaiting moderation.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
Anonymous
-
2024-05-13
Post awaiting moderation.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
After reviewing https://sourceforge.net/p/easymodbustcp/discussion/general/thread/61859b68/ it appears that the following code should create a powershell object that can be used to communicate with ModBus devices over serial connections, but I am getting an error. I use powershell often, but have very limited experience using .net objects.
$ModBusDll = 'C:\Scripts\Modbus\EasyModbus.dll'
add-type -Path $ModBusDll
$MBCli=[EasyModbus.ModbusClient]::new("COM1")
$MBCli=[EasyModbus.ModbusClient]::new("COM1") returns the following error:
Method invocation failed because [EasyModbus.ModbusClient] does not contain a method named 'new'.
At line:4 char:1
+ $MBCli=[EasyModbus.ModbusClient]::new("COM1")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
However, [EasyModbus.ModbusClient].GetMethods().Name returns a valid list of the methods for [EasyModbus.ModbusClient]. I'm also running Powershell elevated. Any suggestions for what I may be doing wrong?
I have also verified that the com port can be used to communicate and read registers using another application.
Last edit: amreagan 2017-08-08
This is strange, I can replicate this problem on Windows 7 box running .net 4.6 and Windows Management Framework 4 using either 32 bit or 64 bit versions of Windows 7, but I don't have this problem on Windows 10. The "new" method simply doesn't appear on Win 7.
Last edit: amreagan 2017-08-08
I was able to work around this by upgrading the machine in use to Windows 10
great to hear that you could make it work.
I am not really familiar with Powershell. Maybe it is an issue with the .NET Framework it is using.
Yeah this issue is persistent. In order to get it to work with powershell on windows 7 you have to initialize the client as $MBClient = New-Object -TypeName EasyModbus.ModbusClient and then set the IP Address and Port from the propeties , otherwise on a Win10 machine you can just do $MBClient = [EasyModbus.ModbusClient]::new("192.168.40.112", 502)
[This is continuation of my above post with the Win 7 and Win10 examples] Or you can call the constructor on a Win7machine like so $MBClient = New-Object -TypeName EasyModbus.ModbusClient -ArgumentList "192.168.40.112",502. Both my Win10 and Win7 machines have all the same .NET libraries installed , but produce different behaviors.