#emc-devel | Logs for 2006-03-28

[13:02:54] <SWP_Away> hi Ray
[13:03:01] <SWP_Away> SWP_Away is now known as SWPadnos
[13:03:57] <rayh> Hi Steven.
[13:04:40] <SWPadnos> are you pointed at the new website yet?
[13:05:01] <rayh> Yes I got it after about 5 hours yesterday.
[13:05:08] <rayh> How about you?
[13:05:09] <SWPadnos> cool.
[13:05:10] <SWPadnos> yep
[13:05:26] <SWPadnos> I checked it around midnight, and fixed the references to cncgear
[13:05:40] <rayh> Ah good. Thanks.
[13:05:52] <SWPadnos> I may try removing the mapped directory today, as long as alex is online ;)
[13:06:19] <rayh> I posted a note to the board regarding editoral policy for the site.
[13:06:48] <SWPadnos> ok. let me know what you need for logins
[13:06:58] <SWPadnos> (that alex can't provide through joomla)
[13:07:16] <alex_joni> hello
[13:07:17] <rayh> Ah right. I forgot that there are two ways in.
[13:07:22] <rayh> Hi alex.
[13:07:31] <SWPadnos> hi again
[13:07:46] <alex_joni> rayh: I moved most of the historic stuff to Events
[13:07:57] <rayh> Good.
[13:07:58] <alex_joni> http://www.linuxcnc.org/index.php?option=com_content&task=blogcategory&id=15&Itemid=12
[13:08:51] <alex_joni> rayh: I agree with your mail to the board list
[13:08:55] <rayh> Wow, you do nice work.
[13:09:11] <rayh> I nominate alex for publisher.
[13:09:43] <SWPadnos> heh
[13:10:09] <alex_joni> rayh: I can do that ;)
[13:10:38] <alex_joni> as long as I have more days like today (aka free ;)
[13:11:16] <rayh> IMO we ought to search out a dependable "non core" person for this job.
[13:12:08] <alex_joni> rayh: I think doing it as a side job is good enough
[13:12:32] <rayh> someday we should post a note to the lists with a real publisher job description
[13:12:41] <alex_joni> right, that would be ideal
[13:12:53] <rayh> and see if we get any replies.
[13:13:31] <alex_joni> yeah.. I'd doubt it
[13:14:16] <rayh> Might be difficult to find at our rate of pay.
[13:14:37] <alex_joni> this is not a matter of pay ;)
[13:14:42] <alex_joni> it's a matter of interest
[13:14:59] <rayh> It's a calling, a profession, a religion.
[13:15:06] <alex_joni> yup
[13:15:16] <alex_joni> and if you don't got it.. even pay won't help :)
[13:15:33] <alex_joni> darn, I hate beeing sick :(
[13:15:38] <rayh> How true!
[13:15:59] <alex_joni> caught a cold again ..
[13:16:03] <rayh> I was for months this year. Just now beginning to get better.
[13:16:44] <alex_joni> this should be a small thing, I hope
[13:16:45] <rayh> poached eggs on hot milk toast with pools of butter.
[13:16:47] <alex_joni> 2-3 days at most
[13:17:02] <alex_joni> heh, trying to get me fat too?
[13:17:07] <alex_joni> isn't sick enough :D
[13:17:27] <alex_joni> kidding ;), thanks for the advice
[13:17:51] <rayh> It's a personal thing for when you feel the cold letting up.
[13:22:30] <alex_joni> do you know "ColdRex" ?
[13:22:53] <alex_joni> that's what I'm taking now
[13:23:21] <SWPadnos> ok. I just deleted the cncgear/joomla mapping. it should go away within the next few minutes
[13:23:22] <rayh> I don't.
[13:23:52] <alex_joni> rayh: it's a mixture of Paracetamol, Pseudoephedrine, VItamin C, etc
[13:24:00] <alex_joni> you mix it up with hot water, like a tea
[13:24:04] <rayh> I need help with line 251 or there abouts.
[13:24:13] <alex_joni> line 251?
[13:24:14] <rayh> Ah. Sounds good.
[13:24:23] <rayh> in emccalib.tcl
[13:24:34] <alex_joni> the commited one?
[13:24:49] <rayh> Yes. last night.
[13:26:04] <alex_joni> hang on
[13:26:06] <alex_joni> cvs up
[13:26:10] <rayh> MAX_VELOCITY = 1.0 <-- 1.0
[13:26:28] <rayh> What I did was read through the ini for sections.
[13:26:59] <rayh> In save I read each line of a section, if it's not a comment I compare it's varname
[13:27:07] <rayh> With a list I get from HAL.
[13:27:23] <alex_joni> huh, slow down a bit..
[13:27:35] <rayh> k
[13:27:48] <alex_joni> ok, so set browses sections
[13:27:56] <alex_joni> up to nextsectnum
[13:27:58] <rayh> right.
[13:28:10] <alex_joni> err.. ind browses sections
[13:28:31] <rayh> yep
[13:28:35] <alex_joni> ok, if it's a comment, do nothing
[13:28:42] <alex_joni> else {
[13:29:04] <alex_joni> not sure what tmpstr & var & indx do
[13:29:24] <rayh> read the line into a string "tmpstr"
[13:29:35] <alex_joni> ok
[13:29:45] <alex_joni> var takes the leftmost thing?
[13:30:13] <alex_joni> and tmpindx gets set if it's one that's nteresting?
[13:30:23] <alex_joni> from $upvarnames
[13:30:48] <rayh> Right.
[13:31:14] <rayh> Then look for the hal command that returns the value of that variable.
[13:31:32] <rayh> Issue that command and get the value.
[13:32:05] <rayh> We can't compare the hal returned value with the ini stored value.
[13:32:30] <rayh> cause hal returns floats and such and ini makes several assumptions.
[13:32:37] <alex_joni> right
[13:33:01] <rayh> Now back to the earlier line.
[13:33:10] <rayh> MAX_VELOCITY = 1.0 <-- 1.0
[13:33:17] <rayh> phone
[13:37:14] <SWPadnos> so, I'm thinking about access rights for the joomla stuff
[13:42:14] <alex_joni> SWPadnos: right
[13:42:51] <SWPadnos> I think all I need to do is change the permissions on all the files to g+w
[13:43:06] <alex_joni> I see
[13:55:29] <rayh> Wow. That's an awesome post alex.
[13:55:52] <rayh> We need that to be contained in the site someplace.
[13:58:17] <alex_joni> hmm.. replicating joomla documentation is not a very easy job ;) filtering it isn't either
[13:58:22] <rayh> Someplace "How to get involved with linuxcnc.org.
[13:58:58] <rayh> I saw some of that when I tried to find out what a mobot was.
[13:59:07] <alex_joni> mambot ;)
[13:59:23] <rayh> that's it.
[13:59:27] <alex_joni> close enough though :
[13:59:29] <alex_joni> :D
[14:00:39] <rayh> You got a few more minutes for emcconf?
[14:01:05] <alex_joni> sure, although I don't get much of it ;)
[14:01:09] <alex_joni> just looking along..
[14:01:28] <rayh> If you look at. MAX_VELOCITY = 1.0 <-- 1.0
[14:01:52] <rayh> That's the return from puts "$tmpstr <-- $newval "
[14:01:56] <alex_joni> right
[14:02:21] <rayh> for one ind
[14:02:48] <rayh> all before the back arrow is string. After is hal value.
[14:02:59] <SWPadnos> use get instead of show
[14:03:18] <SWPadnos> ah - nevermind
[14:03:20] <rayh> okay.
[14:03:35] <rayh> What does get get?
[14:03:45] <alex_joni> get gets get
[14:03:56] <SWPadnos> get is like show, but returns only the value
[14:04:04] <rayh> oh.
[14:04:08] <rayh> okay.
[14:04:32] <SWPadnos> I think that's what jmk said
[14:04:36] <rayh> What i need to do is stuff the value into the proper place in the string.
[14:04:42] <SWPadnos> but that isn't the issue here
[14:05:02] <SWPadnos> right.
[14:05:06] <rayh> I know how to return the string to the text widget.
[14:05:22] <rayh> and how to save the text to a file.
[14:05:27] <SWPadnos> yep - splitting it up the way you want is harder
[14:05:54] <rayh> but I'll be damned if I can figure a clean way to make the new string look like the old.
[14:06:02] <SWPadnos> yeah
[14:06:19] <SWPadnos> luckily, there's a pretty well-known format for these lines
[14:06:56] <rayh> format stuff is probably my strongest inability.
[14:07:03] <SWPadnos> it's always name (whitespace) = (whitespace) value (whitespace + comment)
[14:07:17] <SWPadnos> with the stuff in parens being optional
[14:07:47] <SWPadnos> one thing you can do is search for the first non-whitespace character after the =
[14:07:51] <SWPadnos> that's where the new value goes
[14:08:24] <rayh> Okay I might be able to figure that command.
[14:08:37] <SWPadnos> I'm not sure how to do that in tcl
[14:08:46] <SWPadnos> (I'm not sure how to do anything in tcl)
[14:08:47] <rayh> string match
[14:08:50] <SWPadnos> yep
[14:09:20] <rayh> but then I get into glob, regexp and I'm lost again.
[14:09:38] <SWPadnos> the regexp for the beginning would be something like .*=[ \t]*
[14:09:40] <rayh> The easy way is to split the string on whitespace
[14:09:52] <rayh> replace #2 with the new val
[14:09:54] <SWPadnos> but you want to keep the whitespace the same - that's the hard part
[14:10:22] <rayh> I DONT want to. But I think folk will want me to.
[14:10:27] <SWPadnos> hmmm - actually, you can probably do two matches. one for the stuff before the value, and one after.
[14:10:34] <SWPadnos> yes, you definitely should ;)
[14:10:57] <rayh> See I tol' ya so.
[14:11:02] <SWPadnos> heh
[14:11:19] <SWPadnos> it's annoying to have a program change the nice formatting I've set up in my files
[14:11:27] <rayh> What happens to whitespace when the value goes from 10 to 10000
[14:11:40] <SWPadnos> that's a different story
[14:11:53] <rayh> or 10 to 100.1234
[14:11:53] <alex_joni> this gets easily done with a printf
[14:11:59] <SWPadnos> I suspect that there aren't many people who have comments on the same line as the PID values
[14:12:05] <SWPadnos> it's still not that easy
[14:12:07] <rayh> I like the sound of easily
[14:12:09] <alex_joni> trailing and ending whitespaces ;)
[14:12:53] <rayh> Now I wouldn't have to do string manipulation here.
[14:13:20] <rayh> The text widget itself has many find and replace procedures.
[14:13:42] <rayh> I just don't know them well enough to be able to handle it.
[14:14:05] <SWPadnos> and whitespace isn't maintained by tcl8
[14:14:26] <SWPadnos> so you could replace tmpstr[3] with the new value, but it won't be formatted correctly
[14:14:58] <SWPadnos> (though that would require spaces around the = sign, which I'm not sure are required otherwise)
[14:16:02] <SWPadnos> a regexp can do this easily, once the hard part of figuring out the regexp is done ;)
[14:24:41] <SWPadnos> I think sed may help here
[14:25:31] <alex_joni> that's sad I think
[14:25:32] <alex_joni> :)
[14:25:40] <rayh> I've got to be away for a while. Perhaps we can work on this later.
[14:26:04] <SWPadnos> ok. I'll experiment with regular expressions a bit
[14:26:12] <rayh> Thanks guys.
[14:29:32] <SWPadnos> woohoo - got it in one try ;)
[14:30:13] <SWPadnos> (except that I forgot the s command)
[14:31:27] <alex_joni> scroll back ?
[14:31:44] <SWPadnos> variable replacement while maintaining whitespace
[14:32:09] <SWPadnos> sed -e 's/\(^.*=[[:blank:]]*\)[[:graph:]]*\(.*\)/\1NewVar\2/'
[14:32:15] <SWPadnos> simple, no?
[14:32:17] <SWPadnos> :)
[14:34:39] <alex_joni> sure seems like it
[14:34:45] <SWPadnos> heh
[14:35:04] <SWPadnos> I'm not sure quite how to get tcl to execute that, but it works
[14:35:33] <alex_joni> exec something
[14:35:46] <alex_joni> [ exec 'sed -e ...' ]
[14:35:47] <alex_joni> I think
[14:35:59] <SWPadnos> yep - it's the escaping that may be a problem
[15:13:34] <jepler> http://emergent.unpy.net/index.cgi-files/sandbox/replace.tcl
[15:14:05] <jepler> this program preserves whitespace on the left and the right of the "=" but not after the value.
[15:15:09] <alex_joni> hi jeff
[15:15:44] <SWPadnos> ok.
[15:15:50] <jepler> hi alex_joni
[15:15:59] <SWPadnos> Hi Jeff :)
[15:16:28] <SWPadnos> is there a reasonably easy way of making the regexp above work in TCL?
[15:16:54] <SWPadnos> proper shell escaping and tcl variable replacement looks like it could be tricky
[15:17:36] <jepler> the re_syntax manpage for tcl mensions :class: support, so it might just work as written. tcl does have a 'regsub' command.
[15:18:33] <SWPadnos> oh, OK. that should work then
[15:19:04] <jepler> shelling out to sed sounds like a "worst idea ever" kind of thing to me.
[15:19:19] <SWPadnos> heh - I agree, but it was
[15:19:31] <SWPadnos> the easiest way to try out the regexps
[15:26:50] <alex_joni> is that really matt?
[15:30:12] <SWPadnos> it's a mattbot
[15:30:47] <alex_joni> yeah, too bad ;)
[17:12:55] <alex_joni> 44ok, then lets do the branch
[17:37:43] <SWPadnos> alex_joni_, are you around?
[17:38:01] <alex_joni> yeah
[17:38:04] <alex_joni> but without the _
[17:38:09] <SWPadnos> ah
[17:38:12] <alex_joni> I can get one if you fancy
[17:38:18] <SWPadnos> I figured that an alert would go to both if I used the _
[17:38:41] <alex_joni> sshh: don't tell anyone, but my alert is on 'alex'
[17:38:47] <alex_joni> so the rest doesn't matter ;)
[17:38:56] <SWPadnos> I have a tcl command that does the variable substitution, preserving whitespace
[17:38:58] <SWPadnos> ah, ok
[17:39:09] <alex_joni> SWPadnos: good for you :D
[17:39:10] <SWPadnos> but I'm not sure how to test it
[17:39:23] <alex_joni> put it in ray's emccalib?
[17:39:27] <alex_joni> * alex_joni is not sure either
[17:39:37] <SWPadnos> I can just commit the change to emccalib.tcl, and see what falls apart
[17:39:46] <alex_joni> probably nothing
[17:39:52] <alex_joni> as emccalib is not used right now
[17:40:01] <alex_joni> and it will only get used by users
[17:40:02] <SWPadnos> I'd like to be able to explain it to Ray, but I need to go do some other stuff
[17:40:10] <alex_joni> so you can't brake anything
[17:40:24] <SWPadnos> that's unlikely ;)
[17:40:40] <SWPadnos> it's an annoyingly simple line:
[17:40:46] <SWPadnos> regsub {(^.*=[ \t]*)[^ \t]*(.*)} $tmpstr "\\1$newval\\2" newvar
[17:41:07] <SWPadnos> jepler told me about regsub, which helped a lot ;)
[17:45:31] <alex_joni> SWPadnos: go ahead, and commit
[17:45:37] <SWPadnos> in process ;)
[17:47:54] <SWPadnos> ok. gotta run now. see you later
[17:48:02] <SWPadnos> SWPadnos is now known as SWP_Away
[17:48:10] <alex_joni> yup, later
[22:18:05] <rayh> logger_devel, bookmark
[22:18:05] <rayh> See http://solaris.cs.utt.ro/irc/irc.freenode.net:6667/emcdevel/2006-03-28#T22-18-05
[22:28:18] <SWP_Away> hiya Ray
[22:35:00] <rayh> Hi Steven. Thanks for the fix. I believe that's got it.
[22:35:10] <SWP_Away> cooo. I wasn't sure how to check it
[22:35:12] <SWP_Away> cool
[22:35:30] <SWP_Away> do you see how it works?
[22:35:33] <rayh> Testing the scientific notation to see if that survives.
[22:36:02] <rayh> I'm trusting you. I can read it but that's about all.
[22:36:14] <SWP_Away> you can change the regsub to a regexp, and have it extract the current value for you
[22:36:31] <SWP_Away> you'd then need to stick the parts back together
[22:36:37] <SWP_Away> SWP_Away is now known as SWPadnos
[22:38:02] <rayh> I'm a newbee to reg anything. I used it a couple times but...
[22:38:09] <SWPadnos> here
[22:38:21] <SWPadnos> here's the regexp (one sec - want to make it more readable)
[22:38:42] <rayh> I have an extractor emc_ini
[22:39:03] <rayh> but of course that requires emcsh as the wish shell
[22:39:57] <SWPadnos> this would just need a string, so it can be used anywhere you have an ini-style string
[22:40:07] <SWPadnos> regexp {(^.*=[ \t]*)([^ \t]*)(.*)} $tmpstr original varname oldval comment
[22:40:09] <SWPadnos> puts "varname = $varname"
[22:40:11] <SWPadnos> puts "oldval = $oldval"
[22:40:12] <SWPadnos> puts "comment = $comment"
[22:40:14] <SWPadnos> puts "$varname$newval$comment"
[22:41:15] <rayh> Thanks.
[22:41:15] <SWPadnos> you can do whatever you want to figure out the number of decimals and that sort of thing, if it's done before that last puts
[22:41:18] <SWPadnos> sure
[22:42:48] <SWPadnos> I can explain how it works, if you think you might want to change it
[22:44:36] <rayh> Okay try it on me.
[22:45:09] <SWPadnos> ok. first, the braces are just so I don't have to \-escape every other character ;)
[22:45:21] <rayh> Right.
[22:45:40] <SWPadnos> first off, anything in () is a subexpression
[22:46:21] <SWPadnos> so the first is ^ (beginning of line) .* (any number of any character) = [ \t]* (any number of whitespace chars)
[22:46:22] <rayh> so three of them
[22:46:24] <SWPadnos> yep
[22:46:59] <SWPadnos> the regexp command splits the first thing after the regexp into (1) the whole found expression (in this case, the whole line, getting put into orig)
[22:47:21] <SWPadnos> then it puts any matched subexpressions into the remaining vars (varname, oldval, comment)
[22:47:39] <SWPadnos> so the first expression is everything up to the '=', plus whitespace
[22:47:54] <SWPadnos> the second (oops - subexpression) is any non-whitespace chars
[22:48:08] <SWPadnos> the third is everything else on the line (any number of any character)
[22:48:40] <rayh> Okay. I see at least some of that.
[22:48:46] <SWPadnos> easy as pie ;)
[22:48:57] <SWPadnos> (for those who've necer tried to make pie)
[22:48:59] <SWPadnos> never
[22:49:17] <rayh> I did test on output scale which is var = val1 val2
[22:49:25] <SWPadnos> that wouldn't work ;)
[22:49:28] <rayh> And it works fine.
[22:49:44] <SWPadnos> it should only have found the first value, not the offset
[22:50:15] <rayh> Right it replaced only the first val
[22:50:23] <rayh> and left the second intact.
[22:50:28] <SWPadnos> if you want to replace the offset, you're hosed
[22:50:30] <SWPadnos> right
[22:50:48] <rayh> I don't even know what hal does with the offset.
[22:51:02] <rayh> probably ignores it like we always do.
[22:51:05] <SWPadnos> I don't think it's used
[22:51:33] <SWPadnos> in fact, it may cause an error (ignored) in the conversion to float
[22:52:44] <rayh> I've used set newval [expr $newval] to convert sci notation to float.
[22:53:04] <rayh> But it does not work for 1.5e-05
[22:53:14] <SWPadnos> hmmm - it should
[22:54:16] <rayh> I don't really want to see sci notation for deadband.
[22:55:11] <SWPadnos> ok - I thought you were saying the tcl command set newval [expr $newval] didn't work for "1.5e-05"
[22:58:21] <rayh> I'm thinking I need the format command in order to convert to floating point.
[22:58:50] <SWPadnos> format would definitely give you more control
[22:59:17] <SWPadnos> there's probably a way to look at the original value, and choose the number of decimals fromthere
[23:00:32] <SWPadnos> it would be a pain though, and probably not worth it
[23:04:15] <SWPadnos> well, gotta run for a bit. see you later
[23:04:30] <SWPadnos> SWPadnos is now known as SWP_Away
[23:24:45] <jepler> SWP_Away: That regexp you wrote says something about "comment"
[23:25:11] <jepler> SWP_Away: in the inifile format of emc2, it seems that the value exends from the first non-whitespace character after the "=" to the end of the line
[23:25:20] <jepler> SWP_Away: there is no "comment" possible on such a line
[23:26:11] <rayh> There are dual values in the OUTPUT_SCALE variable.
[23:26:21] <rayh> But that seems to be a throwback to emc.
[23:28:31] <jepler> From the viewpoint of the inifile library, all the values are strings
[23:30:04] <jepler> trailing whitespace is trimmed, but neither whitespace nor "#" indicate a comment
[23:30:16] <jepler> [SECTION]
[23:30:17] <jepler> EXAMPLE = 3 # of radishes
[23:30:23] <jepler> echo .$(emc2/bin/inivar -var EXAMPLE -sec SECTION -ini example.ini).
[23:30:23] <jepler> .3 # of radishes.
[23:38:02] <rayh> Okay.
[23:38:28] <rayh> The # has to start a line which then is only a comment.