In a new developed hgx program in version 480 i would like to use
Program.RemoveVirtualModule(MODULES_DOMAIN, address) but this doesn't work.
Currently i have to stop program, goto to maintenance and remove the too much virtual modules by hand.
After changing the property inside options dialog and restarting program adding of a virtual module works perfect, but the removing doesn't.
Enclosed my code snippet:
Func<int, bool> InitVirtualModules = (int number_modules) => {
int curr_modules = 0;
var switchModules = Modules.InDomain(MODULES_DOMAIN).OfDeviceType("Switch");
switchModules.Each((x) => { ++curr_modules; return false;}); // Is there a better way to count?
if (curr_modules == number_modules) return true;
if (curr_modules < number_modules) { // Add some modules more
for (int nextnumber = curr_modules + 1; nextnumber <= number_modules; nextnumber++) {
Program.AddVirtualModule(MODULES_DOMAIN, nextnumber.ToString(), "Switch", "rfm/arduino/switch");
var newmodule = switchModules.WithAddress(nextnumber.ToString()).Get();
if (newmodule != null) {
newmodule.Parameter("Rfm.Node").Value = "1";
...
}
}
}
Program.RemoveVirtualModule(MODULES_DOMAIN, "7"); // For testing, if following for loop does not work correctly.
if (curr_modules > number_modules) { // Remove the too much modules in reverse order
for (int n_remove = curr_modules; n_remove > number_modules; n_remove--) {
var mod = switchModules.WithAddress(n_remove.ToString()).Get();
if (mod != null) Program.RemoveVirtualModule(MODULES_DOMAIN, n_remove.ToString());
}
}
return true;
};
Is this my mistake or a bug?
Thanks for a helping idea.