From: Steve S. <st...@bi...> - 2002-11-11 04:28:12
|
Bruce, Thank you so much for your reply, and I hope didn't sound pushy in my previoud email... I'm just anxious to get this working... it a really neat "geeky" feature. :) Anyways, you were right, upgrading the proxy to 2.73 helped out. I'm still seeing the "Unrecognized serial data" type message, but I don't have the Serial_Items defined there anyhow... so I guess that's expected. What matters it that I'm able to turn the test LED on most of the time. The stumper I just hit was in pa_control_evan.pl, in the set_weeder sub. I'm seeing that the previous routines in the same .pl file are correctly trying to set the state of the weeder serial items. However, the following line: if ($ref = &Serial_Item::serial_item_by_id("AL$bit")) { doesn't seem to be working correctly. It correctly finds the Serial_Items that are defined, and correctly goes to the ELSE portion on the others. However, the line within the tru half of the IF statement ("$state = $ref->{state};") always sets $state to "". Just after the IF/ELSE closure ("}"), I see this line: $byte_string .= ($state eq ON) ? 1 : 0; This is always 0 for the defined ports, no matter what it was set to. :( Here is the sub_weeder sub in my current copy: -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= sub set_weeder { my ($bit, $byte_string); $pa_action_flag=0; my $state; for $bit (reverse('A' .. 'N')) { if ($ref = &Serial_Item::serial_item_by_id("AL$bit")) { $state = $ref->{state}; } else { $state = OFF; } print "db bit=$bit state=$state\n"; # uncomment for debugging print "db Kitchen PA: " . state $pa_kitchen . "\n"; $byte_string .= ($state eq ON) ? 1 : 0; } my $send = $weeder_address . "W" . sprintf("%0.2x", unpack('C', pack('B8', $byte_string))); # my $send = "DBWh" . sprintf("%0.2x", unpack('C', pack('B8', $byte_string))); # old weeder board print "sending $send to the weeder card\n"; # uncomment for debugging # $main::Serial_Ports{$port_name}{object}->write($send . "\r") if $main::Serial_Ports{$port_name}{object}; &Serial_Item::send_serial_data($port_name, $send . "\r") if $main::Serial_Ports{$port_name}{object}; } -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= My log looks like this: -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 11/10/02 11:13:16 PM server port 1 data: speakers on Running external command: speakers on 11/10/02 11:13:16 PM Running: speakers on 11/10/02 11:13:16 PM Running cmd:speakers on Setting Serial_Item=HASH(0x3fd70f0) on Setting Serial_Item=HASH(0x40214e8) on db bit=N state=OFF db Kitchen PA: on db bit=M state=off db Kitchen PA: on db bit=L state=off db Kitchen PA: on db bit=K state=off db Kitchen PA: on db bit=J state=off db Kitchen PA: on db bit=I state=off db Kitchen PA: on db bit=H state=off db Kitchen PA: on db bit=G state=off db Kitchen PA: on db bit=F state=off db Kitchen PA: on db bit=E state=off db Kitchen PA: on db bit=D state=off db Kitchen PA: on db bit=C state=off db Kitchen PA: on db bit=B state= db Kitchen PA: on db bit=A state= db Kitchen PA: on sending AW00 to the weeder card -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= The extra "kitchen pa:" debug statement shows that a direct call to the state of the serial_item works fine. Do you have any pointers? Thank you again! Steve ----- Original Message ----- From: "Bruce Winter" <br...@mi...> To: <mis...@li...> Sent: Sunday, November 10, 2002 7:49 PM Subject: RE: [misterhouse-users] Weeder for PA Control > > We fixed a maybe related problem in 2.73, so if you haven't tried that yet, > I'd give that a go. > > With debug on, you should see errata something like this: > > .1/10/02 06:41:06 PM Proxy data received from mh: interface=weeder > function=send_serial_data data=DBWh80 > > My weeder works ok here through the proxy (both incoming and outgoing). > > Bruce > > -----Original Message----- > Hello, > I'm using pa_control_evan.pl to write data the the weeder board to > control speaking. All is going well, except the decision to have this weeder > board on a proxy MH computer. I see it sending data to the weeder board, but > the proxy computer simply says, "Unmatched incoming serial data=AW03". > > pa_control_evan.pl is sending the data to the "weeder" port with this line > of code: > > &Serial_Item::send_serial_data($port_name, $send . "\r") > > It reaches the proxy, but is somehow not labeled as being destined for > "weeder". > I also have a test LED wired to this same weeder board, and running "set > test led on" works fine. Somehow settings a Serial_Item object to a state > (like "on") works through the proxy, but sending data that's hasn't been > defined in a serial item (like the line of code above) doesn't work. > > Can anyone help in correcting the behavior of my proxy? > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > ________________________________________________________ > To unsubscribe from this list, go to: http://sourceforge.net/mail/?group_id=1365 > > |