From: Bruce W. <br...@mi...> - 2003-03-29 19:33:43
|
> I've been trying to implement the DS2405 1-wire transistor on the > 1-wire net in mh. >... > When I call the routine using the following code, I get the > following error: > ---code--- > if (said $v_iButton_relay1) { > print_log "Toggling iButton relay1"; > toggle_switch_2405 $ib_relay1; > } > ---error--- > Error in user code: Can't locate object method "toggle_switch_2405" via > package "Hardware::iButton::Device" (perhaps you forgot to load > "Hardware::iButton::Device"?) at (eval 3767) line 1229. Hmmmm, I tried your code here and it ran without errors. I don't have a 2405, so it didn't do anything, but I didn't get the error you got. Try adding this debug print record in lib/iButton.pm: print "\n\n\n Debug in ibuttom.pm\n\n\n"; sub toggle_switch_2405 { then review the starup errata to see if you did indeed pick up your updated iButton.pm. You should see that errata right after the message 'Loading other modules' Maybe you are running with the compiled windows mh.exe, which has the default lib/iButton.pm, not your updated one. Except I just tried it here and it still picked up the new one, not the one built into mh.exe. > Can you give me some tips as to the correct way to implement the 2405? I > feel like I'm doing something wrong (should I put the subroutine over in > Device.pm?) Any help you could provide would be great! I think you could put it in either spot. One of the reasons we built the lib/iButton.pm wrapper was in case the original was to for the more mh specific uses. This seems like a generic function, so could go either place. > P.S. I notice that you have subroutines such as read_switch, and > Device.pm > has similar ones such as read_switch. What's the difference, and are both > being run? Good question. Maybe the oritinal one didn't work or had a slightly different syntax? I don't recall. We probably should have named it something else, but may not have realized there already was a read_switch method. Bruce |