#linuxcnc | Logs for 2012-06-23

Back
[00:24:49] <gesparza1> Hi All. I'm trying to get some advise on wether i should use openfiler, freenas, or centos for an iscsi home server
[00:25:12] <heathmanc> i used freenas for awhile and really liked it
[00:25:22] <heathmanc> but in the end, ended up with windows server 2008
[00:25:37] <heathmanc> with some nfs extensions
[00:25:40] <gesparza1> its going to have 4 2tb drives and is going to be used with noth my esxi server
[00:25:51] <gesparza1> i need to use iscsi
[00:26:02] <heathmanc> if it's only going to be esxi, then i recommend freenas
[00:26:39] <heathmanc> the iscsi implementation is fairly straightforward
[00:26:49] <gesparza1> i see
[00:27:11] <gesparza1> can freenas be installed on usb flash drive?
[00:27:22] <heathmanc> yes, as far as i remember
[00:27:30] <gesparza1> sweet
[00:28:00] <heathmanc> not sure how the iscsi works in esxi, i used xenserver and liked it better
[03:10:05] <DJ9DJ> moin
[03:18:55] <Loetmichel> mornin'
[06:06:26] <Jymmm> andypugh: !!!
[06:14:37] <jthornton> Jymmm, is my web site gnipsel.com down for you?
[06:15:39] <Jymmm> jthornton: yeah
[06:15:53] <Jymmm> it's trying though, might be overloaded
[06:16:20] <jthornton> overloaded?
[06:17:00] <Jymmm> jthornton: Is that your box or hosted?
[06:17:08] <jthornton> hosted
[06:17:23] <jthornton> I can't connect via filezilla either
[06:17:38] <jthornton> Error: Could not read from socket: ECONNRESET - Connection reset by peer
[06:17:40] <Jymmm> Well, is another hosted client has a script running amok it'll overload theserver
[06:18:04] <Jymmm> s/is/if/
[06:18:10] <jthornton> ok
[06:23:44] <Jymmm> it's responding to icmp traffic, but that's about it.
[06:24:03] <Jymmm> jthornton: Hello india tech support...
[06:33:11] <Jymmm> jthornton: This should help http://www.youtube.com/watch?v=N38a5ja26xY
[06:35:40] <jthornton> no speakers on this pc
[06:36:10] <Jymmm> k
[07:05:05] <Tom_itx> jt, it's working here
[07:11:41] <jthornton> Tom_itx, it's back for me too... must have been a glitch in the hosting site
[07:11:50] <jthornton> thanks for checking
[07:13:25] <Tom_itx> jthornton, how'd you come out on your phase inverter or psu issue?
[07:15:19] <jthornton> I have learned a lot about my rotary phase converter and have it tuned to within 1 volt between phases when the VMC is running... which requires me to run the Samson spindle while doing so
[07:15:43] <Tom_itx> needs to be loaded?
[07:16:07] <jthornton> the 15kw generator I now have is getting a few changes to upgrade the distribution panel then I will try it to see what the difference might be
[07:16:35] <jthornton> it seems to be more stable when another 3 phase motor is running
[07:22:53] <Tom_itx> maybe you outta get a spare 3 phase motor and just let it sit beside the VMC running
[07:23:57] <JT-Shop> I have a 15hp motor that I just put new bearings in to hopefully make it a bit more quiet when it runs and it has a 6 groove v-belt pulley on it so lots of rotating mass
[07:25:55] <JT-Shop> I just need to wire up a contactor with start and stop buttons and it's ready to fly
[09:01:59] <jthornton> skunkworks__, seems the stepconf file is an xml file too
[09:02:30] <andypugh> Yes. I thought that was well known?
[09:03:17] <jthornton> I've never looked at one...
[09:03:31] <andypugh> It might even be possible to make stepconf open a Mach3 config, thinking about it.
[09:03:40] <jthornton> I'm looking at writing a python converter from mack to stepconf
[09:03:52] <jthornton> or that maybe
[09:04:19] <jthornton> the mack one is huge, like 15,000 lines long
[09:05:01] <jthornton> the funny thing is you can't set step time and step space or dir setup and dir hold in mack
[09:06:07] <jthornton> the only option is step pulse and dir pulse and your choices are 1-5 us
[09:07:29] <jthornton> I don't understand the md5sums property in the stepconf... but I think it is how stepconf checks to see if a file was modified
[09:08:06] <andypugh> Maybe also testing for corruption
[09:08:47] <andypugh> It might well be easier to make the stepconf config reader understand the Mach format too.
[09:09:50] <jthornton> if I try to load a file without the md5sums property I get an error AttributeError: Data instance has no attribute 'md5sums'
[09:18:52] <andypugh> I suspect it might be possible to modify self.data.load to read attributes from a Mach XML. I think some kind of translation structure would be needed.
[09:28:37] <JT-Shop> what would the translation structure look like?
[09:29:13] <JT-Shop> I know that things like <Motor0StepPin> are easy to sort out
[09:29:36] * JT-Shop hates taking rubber tape off of spit nuts :/
[09:32:05] <archivist> grr Mondeo wheel bearing changing
[09:37:11] <jthornton> interesting the files don't have to be there for md5sum, just a complete xml file
[09:38:08] <jthornton> and when saved it will create all the files
[10:01:32] <andypugh> I assume it is an Md5 just for the xml
[10:02:19] <andypugh> JT-Shop: And I have no idea how to set up a translation, Python is a mystery to me.
[10:04:45] <JT-Shop> andypugh: I think I can make python translate from the mack xml to the stepconf xml file
[10:05:15] <JT-Shop> I think standalone would be best to start
[10:05:49] <andypugh> Maybe, though I think you would be re-inventing the wheel a lot.
[10:05:58] <JT-Shop> the md5sum has the path and file names of the ini, the hal and the readme file
[10:06:07] <JT-Shop> hows that?
[10:06:36] <andypugh> It isn't the .stepconf file that matters, it is getting the information into stepconf, and that could probably be done from either file format.
[10:07:08] <JT-Shop> the .stepconf file is all you need to get the info into stepconf
[10:07:43] <andypugh> Yes, and I assume all the same data is in the mach file?
[10:08:07] <JT-Shop> so I read the info from the mack file then write it to a .stepconf file
[10:08:22] <JT-Shop> all the data and a ton more
[10:08:30] <andypugh> I am saying, why not let stepconf write it to the stepconf file?
[10:08:48] <JT-Shop> I've already worked out the code to read the mak xml file
[10:08:54] <andypugh> I assume the Mach file includes their macros too?
[10:09:02] <JT-Shop> dunno
[10:09:30] <JT-Shop> it contains the whole config I know that
[10:09:38] <JT-Shop> and is 15k lines
[10:12:02] <JT-Shop> would having a one shot seldom used import of a mak file into stepconf complicate stepconf?
[10:12:55] <andypugh> A bit.
[10:13:40] <JT-Shop> I'm sure glad to see you answered Todd's question...
[10:14:03] <andypugh> It would depend how big it was, I guess. But it would make things much easier for folk who are deomstrably a bit dim (albeit that they must be cleverer than the ones who stay with Mac(
[10:14:26] <JT-Shop> LOL, yes I agree
[10:14:56] <andypugh> I have never worked out where those drives expect to get their commutation from. Possibly rectified resolver output.
[10:16:02] <andypugh> But that only gives 1 quadrant, so it can't be that, thinking about it.
[10:16:35] <JT-Shop> ok, I don't have a clue on that
[10:27:50] <A0Sheds> Anyone know a good source for steam powered electric generators? We have 50M BTU/hr that we could partially reclaim
[10:28:34] <andypugh> High pressure. low pressure, dry, wet?
[10:28:47] <A0Sheds> 130psi wet
[10:29:50] <andypugh> Do you really mean 15 MegaWatts?
[10:30:01] <A0Sheds> ~360 Deg F is the discharge temp
[10:30:14] <A0Sheds> yeah ~16MW
[10:30:39] <andypugh> Wow. That's worth reclaiming, definitely
[10:31:11] <A0Sheds> yeah, they are considering a cooling tower that draws 2000A of power @ 480VAC, and upwards of 40gal/min of fresh water
[10:31:16] <A0Sheds> crazy
[10:31:45] <andypugh> But I don't think you are talking in terms of a small reciprocating engine there, which was my initial thought.
[10:31:54] <A0Sheds> 3 acre pond is also nearby to dump cooled waste water
[10:32:51] <A0Sheds> they were asking me about air cooling the steam first to liquid and then counting on the pond to drop it to 70 deg F
[10:33:25] <A0Sheds> it would need something like 1000 sq m of radiator to cool it
[10:34:30] <A0Sheds> reclaiming should cost similar to the cooling tower but actually make money by selling the power back to the power co
[10:34:46] <andypugh> http://www.geeltd.org/biomass-boilers/steam-micro-turbine
[10:34:48] <andypugh> Maybe.
[10:35:06] <A0Sheds> its for multiple autoclaves to cure a fiber cement product
[10:35:11] <andypugh> Though I don't think you are really talking about a micro-turbine there.
[10:35:32] <A0Sheds> this could power a small town
[10:35:50] <A0Sheds> cargo ship size turbine
[10:38:13] <JT-Shop> coastal freighter or crude carrier size?
[10:38:22] <taiden> ello gents
[10:38:48] * JT-Shop wonders if is a trick question
[10:39:07] <taiden> totally a trick question because i'm about to bombard you all with questions on your day off
[10:40:04] <A0Sheds> http://www.utilitywarehouse.com/info1/steamturbinegenerator.html#11MW off the shelf
[10:41:20] <andypugh> A0Sheds: I found http://www.corponit.com/steam-turbine-generators.htm which have a 15MW _condensing_ turbine which sounds almost ideal.
[10:41:59] <A0Sheds> andypugh, thanks!
[10:42:53] <andypugh> Seems to be in India. But this soundsl like a proper industrial-sozed project so that's probably not a problem
[10:45:09] <A0Sheds> for a $1-2M generator the shipping costs are within budget
[10:51:50] <A0Sheds> why spend the money to cool the steam vs make electricity and make money?
[10:59:46] <A0Sheds> in this area 15,000kWh is ~$1200
[11:00:47] <andypugh> Probably more than the wage bill/
[11:05:05] <taiden> so i wrote a gcode program to cut a series of bores that use the same common center point
[11:05:21] <taiden> i wrote the program such that all the numbers were the radius of the bores
[11:05:39] <taiden> i went to use tool compensation so i didn't have to go through the program subtracting tool radius
[11:06:03] <taiden> but now every time i go to run it, it says something about the tool gouging
[11:06:13] <taiden> i ran the program without tool comp and there was no interference or cutter issues
[11:06:18] <taiden> probably a mistake on my part
[11:06:52] <andypugh> What are the bore radius and the tool radius?
[11:26:05] <JT-Shop> taiden: what kind of entry move do you have into your arc?
[11:27:04] <JT-Shop> of course I assume you have memorized this page on cutter comp http://linuxcnc.org/docs/html/gcode/tool_compensation.html#sec:cutter-compensation
[11:27:59] <mikegg> http://houston.craigslist.org/tls/3067468115.html
[11:30:15] <taiden> is there some way for me to share the text on here
[11:30:22] <taiden> tool is .25" end mill
[11:30:32] <taiden> bores range from 1.5 to ~2"
[11:30:55] <taiden> radius center is at X0 Y0 and i use X0 Y0 Z0.5 for my safe "zero"
[11:31:11] <taiden> and i feed with G1 X(bore radius) Y0 Z0
[11:31:17] <taiden> then do my G2
[11:31:27] <taiden> which is a helical downwards bore
[11:32:38] <taiden> i've made the program work by just changing all the values but i will be doing much more work with this program so while it works now i'd like to get this figured out so i can make changes without much brain power
[11:33:42] <JT-Shop> taiden: pastebin.ca
[11:33:50] <taiden> right forgot about that, one sec
[11:35:02] <JT-Shop> taiden: have you seen my counter bore subroutine for ngcgui?
[11:36:45] <taiden> http://pastebin.com/DasZtFaf
[11:36:58] <taiden> the program works incredibly well and demolishes anything any free cam program came up with for me
[11:37:10] <taiden> if i can get the tool offset figured out it will be perfect enough
[11:37:23] <taiden> i have not seen it
[11:37:57] <taiden> also in that version i have tool comp turned off because it was broken
[11:38:14] <taiden> but that is the file that was causing errors with that set to g42
[11:38:47] <JT-Shop> http://linuxcnc.org/index.php/english/component/kunena/?func=view&catid=40&id=20659
[11:39:39] <taiden> neat
[11:39:42] <JT-Shop> where did you start the cutter comp?
[11:39:44] <taiden> does it pocket the entire hole?
[11:40:01] <taiden> where that one says G40 with the comment is where it was G42
[11:40:02] <JT-Shop> that one just does the od of the hole
[11:40:20] <JT-Shop> but the one on the wiki does a spiral out to the OD
[11:40:37] <taiden> yeah that's unecessary for this part
[11:40:45] <taiden> so your method would work fine
[11:41:19] <taiden> i feel so accomplished... pycam and heeks were giving me a 30-40 minute cut time with poor results
[11:41:22] <JT-Shop> I see the G40 line but not the G42 start
[11:41:29] <taiden> this has given me a 4 minute cut time with nice results
[11:41:34] <taiden> yeah see
[11:41:39] <taiden> i uploaded the version i was working with
[11:41:46] <taiden> where it says g40 it SHOULD say g42
[11:41:51] <JT-Shop> ah ok
[11:42:04] <taiden> i forgot to fix it before i put it on pastebin
[11:42:46] <JT-Shop> try a position somewhere other than X0 Y0 before the G42 that is long enough to get into the compensated position
[11:43:09] <JT-Shop> G0 X1
[11:43:11] <JT-Shop> G42
[11:43:16] <JT-Shop> G0 X0
[11:43:42] <taiden> so put it at safe zero and then turn it on?
[11:46:23] <JT-Shop> well the move from the current location in X-Y must be long enough for the tool to be put in the compensated position so generally longer than the radius of the tool
[11:46:38] <JT-Shop> your first move is a Z only move and that won't work
[11:47:28] <jdh> I CAM'ed a counterbore that came did the Z plunge on the edge of the counterbore radius. It left the counterbores with a fairly large tool mark where the Z plunged. I figured it could be tool flex, spindle flex, backlash, or just a CAM failure.
[11:47:42] <jdh> s/came//
[11:48:14] <taiden> alright I see now
[11:48:17] <taiden> we'll give it a shot
[11:49:25] <taiden> "straight feed in concave corner cannot be reached by the tool without gouging"
[11:49:32] <taiden> near line 39 which is this line:
[11:50:03] <taiden> ( 2nd inner radius )
[11:50:04] <taiden> G1 X-0.875 Y0 Z0 ( cut to helix start )
[11:50:04] <taiden> G1 X-0.875 Y0 Z0 ( cut to helix start )
[11:50:04] <taiden> G2 I0 J0 Z-1.1 P11 ( rough middle radius - depth 1.1" - DOC 0.1" )
[11:50:04] <taiden> G2 I0 J0 X0.875 Y0 ( finish bore base )
[11:50:04] <taiden> G2 I0 J0 X-0.875 Y0
[11:50:12] <taiden> sorry that's ridiculous
[11:50:15] <taiden> never doing that again
[11:50:32] <taiden> line (rough to middle radius)
[11:50:58] <taiden> so I guess you can't drop with radius compensation on?
[11:52:45] <JT-Shop> I'm not sure
[11:52:51] <taiden> this is awkward
[11:53:21] <taiden> alright im saying forget tool comp for now
[11:53:21] <Nick001> any current info on driving a dc motor with linuxcnc and a L298 chip?
[11:53:27] <JT-Shop> did you get the first part to work?
[11:53:38] <cradek> do you have the same G1 line in there twice? are you in G90? if so that's maybe the mistake
[11:54:07] <cradek> it's hard to judge from this program fragment what's going on
[11:57:40] <JT-Shop> cradek: can you make a Z only move while comensation is on?
[11:57:45] <JT-Shop> I assume you can
[11:58:49] <cradek> sure
[11:59:52] <cradek> the first G2 with I0 J0 seems weird too unless maybe you're in G90.1 mode
[12:00:28] <JT-Shop> yea, he is in G90.1 mode
[12:02:22] <cradek> is there a link to the full program?
[12:02:53] <JT-Shop> taiden: can you pastebin the full program?
[12:04:19] <taiden> yeah one sec
[12:04:26] <taiden> it's all a cluster*** no
[12:04:27] <taiden> w
[12:04:48] <taiden> actualyl
[12:04:52] <taiden> guys that is the entire program
[12:04:58] <taiden> oh
[12:05:10] <taiden> this is rough doing this over the internet one second
[12:06:07] <taiden> http://pastebin.com/1PfKd0JW
[12:06:10] <taiden> thanks for the help
[12:07:09] <taiden> i've made so many changes that some of my comments are wrong
[12:07:29] <andypugh> I think you probably need a G43
[12:08:47] <taiden> i'm not sure
[12:08:52] <taiden> this is my first gcode program
[12:09:33] <andypugh> G43 loads the tool lengths for the current tool (G43 Hn loads the tool length offsets for a different tool)
[12:09:48] <taiden> Oh
[12:10:06] <taiden> I thought emc2 handled that when you tell it to change tools
[12:10:11] <taiden> but you knw what they say a bout assuming
[12:10:18] <andypugh> So it might be that the interpreter thinks your tool diamter is something other than the tool-table diameter fo that tool.
[12:10:36] <cradek> since you're leaving comp on when you go from cut to cut, you're making corners that you aren't thinking about. line 69->81 makes a corner and line 81's move is only 0.1" long (less than the tool radius). then you make a corner with lines 81->83
[12:10:48] <andypugh> The docs are unclear. Thay do say that G42 uses the diameter of the laded tool, to I might be wrong.
[12:10:49] <IchGuckLive> Hi all
[12:11:13] <cradek> when moving from the cut ending at 69 to the one starting at 81, perhaps you should do an exit move, then turn off comp, then position yourself for another entry, then turn comp on and enter, continue
[12:11:44] <andypugh> I habitually put a G43 on every M6 Tn line. But That isn't necessarily always the correct thing to do.
[12:12:22] <cradek> the actual problem is line 81 being a very short move (in XY) but the real fix is to systematically exit and enter your cuts so you don't end up making weird corners
[12:12:23] <taiden> i'm cutting so deep that i can only rise out of the cut
[12:12:58] <taiden> so do you mean to say to only plunge and to not ramp in
[12:13:27] <cradek> no, ramping in is fine, but you should turn on comp and do an entry move before you do the ramping
[12:14:29] <taiden> i'm not following
[12:14:36] <taiden> i thought you said to turn off comp for entering
[12:14:53] <cradek> no, please reread
[12:15:02] <taiden> alright i see what you are saying now i think
[12:15:32] <cradek> a comp entry move isn't necessarily the tool entering the work, it's changing from nominal to compensated path in a controlled way
[12:15:48] <cradek> in fact this is almost always OUTSIDE (not touching) the work
[12:15:55] <taiden> alright
[12:16:02] <taiden> i may need to just try it to really understand
[12:16:12] <cradek> it's hard to explain but easy to see once you "get it"
[12:16:33] <taiden> so lets say i have G42
[12:16:48] <taiden> and im at X0 Y0 Z0
[12:17:07] <taiden> then i do: G1 X-.5 Y0 Z0
[12:17:07] <cradek> do you mean 0,0,0 is the nominal programmed point?
[12:17:11] <cradek> hang on
[12:17:26] <taiden> 0,0,0 is the center of the surface of my part
[12:17:35] <taiden> that way all my arcs are about 0,0
[12:17:39] <cradek> if you're in G42 and your nominal programmed point is 0,0,0 -- you don't know WHERE the tool is because it depends on the directions of the previous and following moves
[12:17:51] <taiden> yeah thats waht i was going to get at
[12:18:03] <taiden> how can i set up my initial plunge to be accurate
[12:18:05] <cradek> you have to think about the corners that are made by consecutive moves
[12:18:39] <taiden> i figured: if it was moving in a straight line, it would go to the final point minus 1 tool radius
[12:18:39] <cradek> programmed points don't mean much, because you're beside the programmed path and going inside/around the programmed corners
[12:18:52] <cradek> NO, it depends on the following move
[12:18:58] <taiden> but it appears it travels to the right side of the point specified
[12:19:07] <cradek> it depends on the following move
[12:19:15] <taiden> alright so it looks ahead
[12:19:25] <taiden> instead of just dumbly following what we ask it to do
[12:19:39] <cradek> yes, it has to, because it has to stop short for inside corners
[12:19:42] <taiden> yeah
[12:19:45] <taiden> fair enough
[12:20:05] <cradek> in fact look at your program near line 73.
[12:20:07] <taiden> so then how about this.. is there any way to make that move while still using the values of the inside radius?
[12:20:26] <cradek> that move does NOT make a corner at all, the corner is made by lines 69 and 81
[12:20:51] <taiden> i understand
[12:20:56] <taiden> thank you
[12:21:07] <cradek> so when line 69 is read, no move happens. line 73, still no move because it doesn't know where the endpoints are. finally at line 81 all those endpoints can be determined and then moves 69 and 73 are issued (but not 81 yet!)
[12:21:20] <IchGuckLive> http://mechmo.de/elek5_2012.jpg %achsis elektronik asembled Today
[12:21:22] <cradek> you can even do this in MDI and see it work
[12:21:32] <taiden> alright i will play with that
[12:21:34] <taiden> although
[12:21:50] <taiden> if i cannot just tell it to move to the drop in point using the outer radius numbers
[12:22:08] <taiden> there's no point in my using tool comp because the reason was to make reading and editing the code easier
[12:22:32] <IchGuckLive> Cycles cand be done in G42/41 Mode
[12:22:53] <cradek> tool comp is good at cutting outside and inside a path. you're kind of doing slotting here, where you don't have any freedom of movement to enter and exit
[12:22:57] <IchGuckLive> taiden: witch Linuxcnc are you one ?
[12:23:23] <IchGuckLive> is there already the Grid showiung ?
[12:23:23] <cradek> so your remedies are to do all your entry/exit above the work with extra moves, or not use comp for this kind of task
[12:23:27] <taiden> i'm using 2.5
[12:23:30] <taiden> on hardy
[12:23:50] <IchGuckLive> we did this for people like You or my 8000 students a year
[12:24:01] <cradek> I think useful-subroutines uses comp in this way (extra moves above the work for entry)
[12:24:08] <taiden> yeah
[12:24:09] <cradek> useful-subroutines.ngc I mean
[12:24:15] <IchGuckLive> are you now on a ubuntu
[12:24:18] <taiden> yes
[12:24:25] <taiden> to be honest is houldn't really be complaining
[12:24:38] <IchGuckLive> taiden: this is to see what this G42/41 does
[12:24:38] <taiden> i already turned a 3 hour job into a 4 minute job with my cnc router
[12:24:49] <cradek> awesome
[12:25:10] <cradek> but did you spend longer than 2h56 programming it? :-)
[12:25:13] <IchGuckLive> taiden Hardy or lucid or non realtime
[12:25:23] <IchGuckLive> now running
[12:25:34] <taiden> haha yes i did but i will be running the program probably 200 times in the next month or so
[12:25:39] <IchGuckLive> http://buildbot.linuxcnc.org/
[12:25:47] <IchGuckLive> taisden pull the master
[12:25:47] <taiden> so you can math out the time saved if you like :)
[12:26:03] <cradek> aha then you sure win!
[12:26:03] <taiden> it is hardy from the livecd
[12:26:11] <taiden> with an update to 2.5
[12:26:31] <cradek> bbl
[12:26:35] <taiden> pycam wanted 30 minutes and the result was poor!
[12:26:37] <IchGuckLive> the master got a grid beond the movinglines
[12:27:04] <taiden> how do you turn it on?
[12:27:07] <IchGuckLive> so you can messure out where it actuly is moving centerline
[12:27:35] <IchGuckLive> it is not in 2.5 as i think
[12:27:48] <taiden> alright i will look into it
[12:27:52] <taiden> thanks so much IchGuckLive
[12:28:05] <taiden> i have to go upstairs to my comfy comupter so i can rewrite this
[12:28:14] <IchGuckLive> taiden: is ther in VIEW a GRID showing
[12:28:37] <taiden> yeah i do not have that
[12:28:40] <taiden> i think i'd have to update
[12:28:44] <IchGuckLive> taiden: be carfull with the in and outlines on CRC
[12:30:36] <IchGuckLive> cradek: did you see the elektronic board i made today
[12:37:46] <IchGuckLive> id leave today early nice sunshine here going BBQ
[12:39:08] <JT-Shop> I picked up a 50lb sack of sweet onions the other day... french onion soup tonight :-)
[12:40:40] <Jymmm> JT-Shop: 50lb sack... single serving size?
[12:40:51] <JT-Shop> yea
[12:40:57] <Jymmm> =)
[12:41:07] <Jymmm> thats a big ass pot!
[12:41:29] <JT-Shop> 40 cents a pound by the sack and Made in USA!!!!!!
[12:42:13] <JT-Shop> big too over 1lb each
[12:42:30] <Jymmm> Yeah, inion by the sack are REALLY REALLY CHEAP
[12:42:33] <andypugh> So, not actually French Onion soup then?
[12:42:34] <Jymmm> onions
[12:43:01] <Jymmm> andypugh: MADE IN CHINA onions
[12:43:16] <jdh> you should try DX onions with free shipping.
[12:44:06] <Jymmm> Free lead in every bag!
[12:44:15] <Jymmm> extra minerals!
[12:45:37] <Jymmm> Got an erector set for $10
[12:46:09] <Jymmm> well, a clone. (c) 1914, 1915
[12:46:18] <Jymmm> and the original manual
[12:48:12] <JT-Shop> SEM Onion Soup
[12:48:33] <Jymmm> sem?
[12:49:14] <JT-Left> aww taiden left and wrote a cute little spiral using comp http://pastebin.com/4nrSkRt5
[12:49:26] <JT-Shop> South East Missouri
[12:49:34] <JT-Shop> Swamp East Missouri
[12:49:41] <Jymmm> Swapsouri?
[12:49:45] <JT-Shop> yea
[12:49:49] <Jymmm> ;)
[12:50:34] * JT-Shop reads back and yea I have a pot big enough for 150lbs of onions if I want
[12:50:57] <JT-Shop> 25 gallon SS Mega Pot
[12:51:35] <JT-Shop> http://i47.photobucket.com/albums/f163/johnplctech/Boil%20Pot/BP03.jpg
[12:52:17] * JT-Shop thinks it is time to pull the CB out of the smoker and take a nap while it cools down
[12:53:42] <Jymmm> JT-Shop: heavy bottom on that pot?
[12:54:09] <Jymmm> JT-Shop: and did oyu make that SS stand?
[12:54:48] <Jymmm> JT-Shop: and it's way too clean, has that burner ever been used?
[13:06:03] <andypugh> I wonder if you could CNC both axes of this? http://www.ebay.co.uk/itm/230812048957
[13:08:27] <andypugh> I am actually rather tempted.
[13:21:44] <FinboySlick> andypugh: I think it's worth a shot.
[13:22:03] <FinboySlick> Looks beefy enough to give you a rigid setup too, but I think backlash might be an issue.
[13:22:19] <andypugh> I need to imagine how big it is too.
[13:27:52] <andypugh> I think it is probably too big for my machine.
[13:27:55] <Tom_itx> swampsoup
[13:28:04] <andypugh> I have 9" between the bottom of the collet chuck and the table.
[13:28:36] <andypugh> So, if that has a 7" centre height...
[13:28:36] * Tom_itx matches andypugh's 9 and raises 10
[13:28:57] * Tom_itx takes off his poker hat
[13:32:09] <Tom_itx> that wouldn't leave much room for tooling or material andy
[13:32:59] <andypugh> Yes, so I think someone else can have it.
[13:40:06] <Loetmichel> re @ home
[13:44:14] <Loetmichel> *grrr, thats SATURDAY and i am coming home from the company at 20:30.... and my keyboard is dead... that was a bit much aplle "sprite" yesterday... good that the modelM have plugs on the keyboard side of the cable and i have a few spare... *Throws dirty one in the dishwasher* :-)
[13:52:33] <jdh> anyone tried WeberSystems cad/cam thing?
[14:08:10] <archivist> that would just fit on my horizontal mill
[14:09:40] <archivist> andypugh, with an outrigger plate! http://www.collection.archivist.info/archive/DJCPD/PD/2012/2012_06_15_Adcock_Shipley/IMG_1249.JPG
[14:10:40] <archivist> non rotating angle version hanging outside the working envelope
[14:11:19] <archivist> just get some inch plate
[14:11:32] <andypugh> It's a little harder to outrig vertically on my machine (The Deckels are set up for it, though)
[14:12:17] <andypugh> That AS has a certain solidity to it.
[14:12:59] <archivist> it is brick built shit house style
[14:13:58] <archivist> after a hard days fight I got the front wheel bearing out
[14:15:22] <archivist> idiot in the past left the circlip out so the wheel could have come off if the interference fit was bad
[14:18:04] <andypugh> That could have been disconcerting.
[14:19:08] <archivist> had it happen with rear half shaft bearing failure on a landrover so I have "experience"
[14:19:41] <cei> What is the hal syntax to invert a pin?
[14:22:29] <cei> Trying to adapt to an inverted limit switch
[14:22:29] <Connor> input or output ?
[14:22:32] <cei> input
[14:23:23] <andypugh> cei: You don't invert inputs, you use the input-not pin instead
[14:23:39] <Loetmichel> How true, how true.... http://9gag.com/gag/4474920 ;-)
[14:23:42] <cei> Ahh Thank you
[14:24:21] <cei> That did it
[14:25:09] <cei> :D
[14:25:57] <Connor> http://www.cnczone.com/forums/attachment.php?attachmentid=162149&amp;d=1340478621
[14:26:03] <Connor> http://www.cnczone.com/forums/attachment.php?attachmentid=162150&amp;d=1340478627
[14:26:10] <Connor> http://www.cnczone.com/forums/attachment.php?attachmentid=162151&amp;d=1340478635
[14:26:15] <Connor> http://www.cnczone.com/forums/attachment.php?attachmentid=162152&amp;d=1340478641
[14:26:32] <Connor> My stepper covers. Painted, engraved, and installed. :)
[14:27:35] <andypugh> Loetmichel: http://www.snopes.com/politics/soapbox/schoolrules.asp
[14:28:48] <andypugh> Connor: Pretty.
[14:29:22] <andypugh> Though I don't like that particular style of motor mount. Even though it is rigid and effective and easy.
[14:30:05] <Jymmm> andypugh: the stilts?
[14:31:29] <Jymmm> Connor: noce job on the covers, but whay the connector facing the same direction as the shaft?
[14:31:32] <Jymmm> nice
[14:31:50] <Loetmichel> andypugh: regardless of who said it first, its SO true!
[14:32:10] <Connor> Jymmm: Protects them.
[14:32:57] <Connor> andypugh: What style of motor mount do you like ?
[14:33:54] <andypugh> I have always tended to use a toothed belt, quite often with the motor lying back along the screw.
[14:34:25] <Connor> Jymmm: The way they are done, you can't bang into the connectors.. I thought it was better way to go.
[14:34:41] <Connor> andypugh: Ah. You mean direct drive vs belt.
[14:34:44] <Jymmm> ah
[14:35:12] <andypugh> https://picasaweb.google.com/lh/photo/abzo-Io3-DMkbvox4DLo19MTjNZETYmyPJy0liipFm0?feat=directlink for example.
[14:35:54] <Connor> andypugh: This style is a bit cheaper. At some point, I might belt drive the Y. But, this was just to get me going.
[14:35:58] <andypugh> This is partly because my garage is small, though.
[14:35:59] <cei> Wouldn't that introduce more points for failure?
[14:36:26] <Connor> The belt can act as a "fuse" in case you crash.
[14:36:31] <Connor> which is a GOOD thing.
[14:36:43] <cei> I see
[14:36:44] <andypugh> cei: Yes. It isn't technically better, it just looks a little prettier.
[14:36:45] <Connor> andypugh: My shop is tiny. 11' x 7'
[14:36:47] <Jymmm> stepper woould/should stall befor then =)
[14:37:41] <frallzor> yoyoyo
[14:37:47] <Connor> okay. Time to go get lunch. Back later. :)
[14:38:13] <frallzor> John Connor, Im here for you
[14:38:27] <frallzor> *Arnold Accent*
[14:41:14] <frallzor> anyone around into metal breaking?
[14:43:40] <archivist> what definition of breaking
[14:43:59] <frallzor> bending
[14:44:47] <archivist> bending allowances in textbooks just work
[14:44:49] <frallzor> i noticed I dont get the fit I want on my machined parts and figures I'd give it a go to get it spot on, is there a nice "formula" to get the K-factor?
[14:44:53] <JT-Shop> frallzor: yea
[14:45:22] <JT-Shop> oh, I'm not that much into bending
[14:45:28] <andypugh> I think it is "braking" for bending
[14:46:03] <JT-Shop> yea
[14:46:09] <andypugh> I tend to let my CAD package do it. Tell it to make the flat pattern, and bend on the lines. Works every time :-)
[14:46:09] <frallzor> I know its called a brake, just figured it sounded better breaking than braking =)
[14:46:14] <archivist> breaking is scrapping
[14:46:35] <frallzor> I just assumed flat material = unbroken
[14:46:41] <frallzor> and bend = broken, scrap =P
[14:46:45] <frallzor> but good scrap
[14:47:04] <frallzor> andypugh I dont trust my software
[14:47:12] <frallzor> it relies on the k-factor
[14:47:22] <frallzor> which I just use the default setting
[14:49:26] <frallzor> but I might have entered some manually and some using tables it seems, might try to set all to tabled settings
[14:50:47] <archivist> bending is pretty much known art, defaults will probably be right unless your radius's are off
[14:51:51] <frallzor> could be a bad bend too, hard to know
[15:36:02] * JT-Shop looks for his sous chef hat
[15:37:08] * Tom_itx smells the onions cooking way over here
[15:38:29] <JT-Shop> lol, gotta slice them first
[15:38:42] <syyl_ws_> you could use a chopsaw
[15:39:03] <JT-Shop> yes, but the tears from using a chopsaw would be too much
[15:46:08] <andypugh> I chopped a 50lb bag of onions once. It really wasn't much fun.
[15:54:33] <DJ9DJ> gn8
[16:06:33] <JT-Shop> that went well chopped 4lbs of onions and did not bleed at all
[16:08:40] * JT-Shop reads an auction flier and noticed this "Most Items New or Used"
[16:08:53] <JT-Shop> I wonder what the rest of the items are?
[16:09:53] <jdh> newly used?
[16:10:20] <JT-Shop> or "used but good" and I've seen that marked on boxes of parts
[16:18:02] <andypugh> JT-Shop: Old and Unused?
[16:18:36] <JT-Shop> that's a possible condition
[16:18:58] <jdh> new old stock
[16:24:42] <JT-Shop> seems the 15Kw gen is wired up for WYE with a bonded neutral
[17:01:44] <JT-Shop> new enclosure mounted on the generator... getting there
[17:05:09] <Tom_itx> good and used
[17:09:29] <alex4nder> re..
[17:30:40] <ReadError> g10 cuts pretty awesome
[17:31:01] * jthornton smells onions cooking
[17:35:24] <_abc_> Updated patches to geda-pcb, new features for milling (routing) pcbs, see peter5.50webs.com/free
[17:35:51] <_abc_> The patches create simple gcode output just perfect for simple parsers like those implemented in atmegas ;)
[17:35:59] <_abc_> Let me know what you like/hate
[17:38:36] <Jymmm> Breastesess/Breast Cancer
[17:40:10] <Tom_itx> sardines
[17:40:37] <Jymmm> Tom_itx: is that a like or a hate?
[17:41:00] <Tom_itx> strong dislike
[17:42:06] <Tom_itx> i sure wish i had a die i could punch these holes out
[17:42:27] <Tom_itx> out to drill and file...
[17:45:43] <Jymmm> Um, okey, so... If you are to hang this in the window so 1) it can be solar charged, 2) bad guys can see/read the "warning" on it, 3) to detect vibration... What stops a bad guy from just taping over the solar panel and come back a week or so later??? http://www.techkomaid.com/security/solaralarms/S096.html
[17:46:37] <jthornton> .44 magnum works for me
[17:46:47] <Tom_itx> they are seriously not that bright
[17:46:48] <jthornton> they never come back
[17:47:01] <Tom_itx> jthornton, they never leave
[17:47:13] <jthornton> well... yea
[17:47:21] <Tom_itx> handy having a backhoe
[17:47:32] <jthornton> hehe
[17:47:34] <Jymmm> jthornton: Yeah, but then you gotta clen up the blood, hide the body(s) (though, you do have a tractor and live in swapsurri)
[17:48:17] <jthornton> tractor, backhoe, dozer... makes short work of it
[17:48:24] <Jymmm> I'm surprised gators won't eat dead human flesh though.
[17:49:49] <Jymmm> I got one of these for $10 today, and I'm SERIOUSLY DISAPPOINTED in it, specifically the tapered bottom 1" too short side water bottle pockets... http://www.youtube.com/watch?v=PR7hrEkJ1jU
[17:50:24] <Jymmm> It's $70 MSRP too! about $50 street
[17:50:55] <ReadError> can wd40 be used for cutting fluid?
[17:50:58] <ReadError> or too flamable?
[17:51:57] <Jymmm> ReadError: no cooking or other oil available
[17:52:16] <ReadError> i do have some red colored cutting fluid i think
[17:52:21] <ReadError> its just some cheap stuff from lowes
[17:52:26] <Jymmm> beware of cooking oilgoing rancid
[17:52:34] <syyl_> wd40 is ok
[17:52:37] <ReadError> i also have some 3-in-1
[17:52:40] <Jymmm> wd40 could work, in a pinch
[17:52:44] <syyl_> works good for aluminum
[17:52:49] <Jymmm> but it is flammable
[17:52:56] <syyl_> pff
[17:53:04] <Jymmm> 3in1 good stuff
[17:53:20] <ReadError> im cutting some 0.090 aluminum
[17:53:25] <Jymmm> syyl_: you never made a torch from wd40?
[17:53:26] <ReadError> im going to try to do it in 2 levels this time
[17:53:32] <syyl_> i use spiritus for aluminum...
[17:53:43] <syyl_> never had a fireball around the machine
[17:53:49] <Jymmm> I use tapping/cutting fluid =)
[17:54:01] <Jymmm> syyl_: you havent' tried hard enough then =)
[17:54:31] <syyl_> http://www.youtube.com/watch?v=NP4sDX87JE8
[17:54:38] <syyl_> see the mistcooling?
[17:54:42] <syyl_> thats spiritus
[17:54:55] <syyl_> no problem
[17:55:06] <andypugh> White Spirit?
[17:55:29] <syyl_> uhm no
[17:56:02] <syyl_> http://en.wikipedia.org/wiki/Ethanol
[17:56:07] <syyl_> pure
[17:56:26] <andypugh> I just found that, by looking at de.wiki then switching to en.wiki
[17:56:55] <andypugh> I think paraffin/white spirit/stoddard solvent work too.
[17:57:14] <syyl_> yeah, but fogged paraffine oil can be nasty
[17:57:35] <syyl_> ruins your lungs
[17:57:44] <syyl_> the ethanole only makes you drunk ;)
[17:59:59] <andypugh> all three of those are OK for fire-breathing with
[18:00:32] <syyl_> hmm
[18:01:34] <syyl_> right on the topic, i welded up my cooleant tank today
[18:01:34] <syyl_> :D
[18:01:35] <syyl_> https://dl.dropbox.com/u/24396704/IMG_0596.jpg
[18:01:55] <syyl_> yes, i have a wooden welding table ;)
[18:01:56] <andypugh> Pretty
[18:02:08] <andypugh> I need to clean out my coolant tank.
[18:02:11] <andypugh> Any tips?
[18:02:31] <rob_h> wet and dry vacume ;)
[18:02:38] <andypugh> Imagine that it hasn't been used for decades, and contains mainly way-lube with a hint of rancid coolant..
[18:03:15] <andypugh> So, perhaps I should rent a vacuum..
[18:03:22] <syyl_> friend of mine recommendet natron
[18:03:24] <rob_h> haha yea dont use the wifes i guess
[18:03:29] <syyl_> to clean out the tanks
[18:03:59] <rob_h> i then always put a bucket or two of jeyes fluid in the tank and pump it,. that kills lal the bugs i find
[18:04:12] <rob_h> other wise the next coolant i find goes off pritty quick from the left over bugs
[18:04:21] <syyl_> the pump works, too
[18:04:21] <syyl_> https://dl.dropbox.com/u/24396704/IMG_0599.jpg
[18:04:22] <syyl_> :D
[18:04:31] <rob_h> jeyes fluid as in mixed.. not neat buckets.. or that might be rather costly
[18:05:56] <andypugh> syyl_: That looks pretty good
[18:06:26] <syyl_> thanks :)
[18:16:15] <jthornton> rob_h, what is jeyes fluid?
[18:17:02] <andypugh> http://en.wikipedia.org/wiki/Jeyes_Fluid
[18:17:23] <jthornton> andypugh, I pump what ever is in there with the coolant pump to a bucket then drain the rest
[18:17:34] <rob_h> quite a strong disinfectant
[18:18:10] <jthornton> it even kills scarlet fever and dropsy
[18:18:26] <andypugh> It's a good thing to pour down a sewer before unblocking it. It might not help, but is smells a lot cleaner
[18:18:31] <jthornton> maybe similar to lysol or something
[18:19:06] <archivist> sewage works will be hating you for killing their bugs
[18:19:13] <jthornton> lol
[18:19:24] <andypugh> We got away with it.
[18:19:33] <jthornton> dang onion soup is smelling wonderful
[18:19:39] <andypugh> And that sewer doesn't go anywhere near a sewage works
[18:19:54] <andypugh> In fact, we have no real idea _where_ it goes :-)
[18:20:15] <archivist> jthornton, I used to volunteer at a stem sewage pumping station next to a live one, we learnt a lot
[18:20:22] <archivist> steam
[18:20:26] <andypugh> Jeye's fluid goes white in water, just like coolant.
[18:20:33] <jthornton> I imagine you did
[18:20:57] <jthornton> so water soluble what ever it is
[18:21:52] * jthornton runs back to the cocina to stir...
[18:22:11] <Jymmm> archivist: you might appreciate this http://www.youtube.com/watch?v=dx-ndeBo8Ng&feature=endscreen&NR=1
[19:02:36] <Tom_itx> 3 down 4 to go
[19:22:06] <r00t4rd3d> in that rose video, where is the debris?
[19:22:49] <r00t4rd3d> oh now there is some..
[19:23:34] <syyl_> those datron machines rock, Jymmm ;)
[19:29:46] <andypugh> As do Brother: http://youtu.be/L5aC5Kpvibc
[19:30:53] <r00t4rd3d> holy fucking tool change~
[19:30:54] <r00t4rd3d> !
[19:31:31] <Connor> So much flood coolant can't tell what's going on.
[19:31:49] <syyl_> when you see a brother machine live
[19:31:54] <syyl_> watching trough the window
[19:32:04] <syyl_> you back off when it moves toward you
[19:32:04] <syyl_> :D
[19:32:10] <syyl_> its just fast
[19:35:47] <andypugh> I was looking at http://www.youtube.com/watch?v=7c6pMgqoY2E&feature=fvwp
[19:36:35] <andypugh> (I actually think the Blacktoes look pretty good) and was wondering if people ever fir a second Z to the back to hold a different sort of spindle.
[19:36:50] <syyl_> if its a realy cold winter, you could use the mill as as fuel for the stove..
[19:37:01] <syyl_> but for its purpose it looks like a good machine
[19:37:02] <ReadError> hmmm so
[19:37:07] <ReadError> what am i better off with
[19:37:12] <ReadError> oil or brush+vac ?
[19:37:14] <andypugh> Yeah, we can't all afford Decke;s
[19:37:18] <ReadError> assuming im manually doing both
[19:38:02] <syyl_> hmm
[19:38:14] <syyl_> i have seen machines with two spindles on one z-axis
[19:38:24] <syyl_> that can be interchanged automaticaly
[19:40:15] <syyl_> i think its a good idea, if you dont want a toolchanger
[19:40:44] <andypugh> Did you see than Emco mill with a spindle-changer?
[19:40:51] <syyl_> whut?
[19:41:10] <andypugh> I posted it to the mailing list
[19:41:34] <andypugh> http://www.ebay.co.uk/itm/120927276579#ht_1136wt_1413
[19:42:13] <andypugh> One motor and a carousel of tools all in their own spindle bearings
[19:42:30] <syyl_> sure?
[19:42:42] <syyl_> as i remember, that machine uses iso30 tooling
[19:44:42] <syyl_> thats the machine is was refering to
[19:44:46] <syyl_> with the interchanging spindles
[19:44:47] <syyl_> http://www.youtube.com/watch?v=HjM0LfrzAZc&feature=related
[19:47:15] <andypugh> It seems have a lot of spindles
[19:48:56] <archivist> for multiple spindles http://www.youtube.com/watch?v=a6fZjUy0_U0
[19:51:23] <toastyde1th> brush and vac keep chips clear, oil lubricates and reduces cutting temperature
[19:52:23] <toastyde1th> so what do you need to do?
[19:52:23] <toastyde1th> oil also improves surface finish
[19:52:23] <toastyde1th> but won't do anything for chip recutting
[19:52:24] <toastyde1th> brush + vac won't really help recutting either
[19:53:04] <ReadError> sounds like i need a pump
[19:53:10] <ReadError> and a flood table ;)
[19:55:07] <ReadError> alex4nder really wasnt kidding when he said these things are like barbies
[19:55:23] <toastyde1th> with emc you can put two z axes on the machine
[19:55:23] <toastyde1th> they'll just be called Z and W
[19:55:59] <ReadError> is there a set of drill bits that one could obtain
[19:56:09] <ReadError> with a collar and a known height
[19:56:23] <toastyde1th> most machine controls allow for multi spindle mills
[19:56:24] <ReadError> so i can just chuck one in, put in the known touchoff for z
[19:57:07] <andypugh> ReadError: PCB drills normally have a depth collar
[19:57:29] <ReadError> yea i noticed that
[19:57:41] <ReadError> im lookin for something up to say, .25"
[19:57:49] <ReadError> well maybe not that large
[19:57:57] <ReadError> but same concept
[19:58:17] <ReadError> i wish they had ones that where like square endmills, so i didnt have to account for the V shape
[19:58:24] <andypugh> What is your toolholder?
[19:59:29] <ReadError> its just a taig
[19:59:32] <ReadError> nothin fancy ;/
[20:00:19] <andypugh> Yes, but, still..
[20:01:26] <andypugh> With a collet chuck you could probably just fit a stop-pin in the back, and push cuttters in against the pin
[20:20:08] <r00t4rd3d> i only have 2 pieces of mdf left in my machine :)
[20:20:32] <r00t4rd3d> the sides to my Y axis
[20:20:36] <Jymmm> the frame and body?
[20:20:59] <r00t4rd3d> pine and aluminum
[20:22:19] <r00t4rd3d> make up the rest and some laminated plywood
[20:23:10] <ReadError> cuttin yet r00t4rd3d ?
[20:23:15] <r00t4rd3d> nope
[20:23:16] <ReadError> im cutting right now
[20:23:23] <r00t4rd3d> to buzy changing stuff
[20:23:28] <ReadError> lol
[20:23:32] <ReadError> get the mount?
[20:23:39] <r00t4rd3d> made one
[20:24:04] <r00t4rd3d> http://i.imgur.com/iSa7e.jpg
[20:25:57] <r00t4rd3d> i will cut a new one probably out of HDP when i get going
[20:26:20] <r00t4rd3d> or just buy an aluminum one
[20:27:06] <r00t4rd3d> i just got a dollar raise so I got 50 more bucks to burn a week :)
[20:30:24] <r00t4rd3d> funny i finally got everything to start cutting and i took my table completely apart
[20:31:07] <r00t4rd3d> but i noticed a 1/16th dip in my X axis mdf table
[20:31:16] <Jymmm> JT-Shop: andypugh Deer for breakfast anyone? http://www.snotr.com/video/2772
[20:31:20] <r00t4rd3d> warped from only painting one side i guess
[20:32:36] <andypugh> Those deer are not shy
[20:59:01] <r00t4rd3d> http://i.imgur.com/Y5ADb.jpg
[21:03:40] <toner> nice
[21:04:47] <ReadError> ohai mr toner
[21:05:01] <ReadError> just finished a marathon cutting session
[21:06:42] <toner> yeah?
[21:06:44] <toner> awesome
[21:07:06] <toner> I need to hurry up and move the laser
[21:07:11] <toner> I've got about a week left here, heh
[21:07:26] * toner should probably get back to moving the rest of his crap
[21:09:15] <alex4nder> ReadError: how's the quadcopter coming?
[21:09:19] <andypugh> Not a Snickers cutting session? http://en.wikipedia.org/wiki/Snickers ("In the United Kingdom and Ireland, Snickers was formerly sold under the brand name Marathon until 1990"
[21:09:20] <ReadError> where you moving too?
[21:09:26] <ReadError> alex4nder, just cut another frame today ;)
[21:09:28] <toner> ReadError: you got a quadcopter?
[21:09:29] <alex4nder> nice
[21:09:31] <ReadError> this time
[21:09:33] <andypugh> Have I really been resentful for that long?
[21:09:37] <toner> ReadError: about a block, down the hill
[21:09:42] <ReadError> i just multiple cuts
[21:09:45] <ReadError> like 1/2 depth
[21:09:47] <ReadError> then full
[21:09:51] <ReadError> on my aluminum
[21:09:53] <ReadError> worked out well
[21:10:06] * toner just got a quadcopter about 2 weeks ago, and it is basically the coolest thing ever
[21:10:08] <toner> heh
[21:10:11] * toner wants to CNC it ;P
[21:10:14] <ReadError> what you get brah ?
[21:10:17] <ReadError> mqx ?
[21:10:19] <toner> Blade mQX
[21:10:22] <ReadError> ;p
[21:10:24] <andypugh> toner: Have you seen the quadcopter swarm and quadcopter building?
[21:10:31] <ReadError> toner, go bigger ;)
[21:10:34] <ReadError> FPV that thang
[21:10:34] <toner> hehe
[21:10:43] <toner> I've seen some formation drone stuff
[21:10:48] <toner> but not them building :)
[21:10:55] <ReadError> ill show u some vids 1 sec
[21:10:59] <toner> sweet
[21:11:30] <andypugh> http://www.youtube.com/watch?v=5186HbbE3kA and http://vimeo.com/33713231
[21:11:58] <ReadError> http://vimeo.com/38802024
[21:12:01] <ReadError> i think thats it
[21:12:05] <ReadError> this mobo is garbage
[21:12:13] <ReadError> low latency, horrible youtube
[21:12:27] <toner> whoa
[21:12:32] <r00t4rd3d> what mobo?
[21:12:52] <ReadError> or it could be my bunk wifi down here
[21:13:27] <ReadError> d525
[21:13:43] <ReadError> i think it might be this 10$ wireless thing i got
[21:13:52] <alex4nder> ReadError: did you just pick that up?
[21:13:55] <ReadError> but probably the mobo
[21:14:25] <ReadError> the mobo?
[21:14:25] <ReadError> nah i had it for a bit now
[21:14:32] <alex4nder> werd
[21:14:49] <ReadError> but boy does it get laggy
[21:15:02] <andypugh> I remember when electric-powered flight was absolutely impossible. It was no more than 20 years ago.
[21:15:33] <ReadError> not in linuxcnc
[21:15:33] <ReadError> but flash media
[21:15:33] <ReadError> i should try enabling the other option in flash maybe
[21:21:46] <ReadError> toner: timecop, the guy that ported the firmware
[21:21:49] <ReadError> is on efnet
[21:21:58] <ReadError> he calls his quads "dongcopters"
[21:22:02] <toner> oh cool
[21:22:03] <toner> haha
[21:22:13] <ReadError> and, his controller he made, is the "AfroController"
[21:22:25] <toner> I should meet this character
[21:22:26] <toner> heh
[21:22:49] <ReadError> pretty bright guy, total troll
[21:23:14] <toner> heh, uh oh
[21:23:23] <toner> I guess this is the age of trollcopters, huh
[21:23:50] <r00t4rd3d> crashes on purpose
[21:23:58] <toner> so what does he do with his dongcopter armada?
[21:24:30] <ReadError> http://www.youtube.com/watch?v=bsrzBwylodU
[21:24:33] <ReadError> alot of people do FPV
[21:24:39] <andypugh> Armadas traditionally sink
[21:24:39] <ReadError> you can actually make money
[21:24:48] <ReadError> doing aerial photography
[21:24:55] <toner> hm
[21:25:23] <ReadError> like for realestate
[21:25:25] <ReadError> car lots
[21:25:27] <ReadError> etc
[21:25:48] <r00t4rd3d> roof and chimney inspections
[21:26:22] <toner> that is awesome
[21:26:43] <andypugh> ReadError: Forget the 'copter, I want his house
[21:26:44] * toner needs some cameras and transmitters, huh
[21:26:50] <r00t4rd3d> hook a taser up and get cats down from trees
[21:26:51] <toner> haha, seriously
[21:27:53] <r00t4rd3d> i would be scared to strap my camera to a quadcopter
[21:29:11] <r00t4rd3d> ive seen where people have hooked super expensive dslrs onto them.
[21:30:13] <toner> yeah, I still crash too much for that ;P
[21:30:13] <ReadError> yea
[21:30:18] <ReadError> but
[21:30:24] <ReadError> high end controllers pretty much fly themselves
[21:30:31] <toner> right
[21:30:31] <ReadError> you can program GPS waypoints on the computer
[21:30:38] <toner> I want to hack mine and try to make it more autonomous
[21:30:40] <ReadError> it will stay within a meter or so
[21:30:44] <r00t4rd3d> http://quadcopter.heliguy.com/
[21:30:45] <toner> or make new ones or smth
[21:30:47] <ReadError> you cant with the blade ;/
[21:30:51] <ReadError> but
[21:30:53] <toner> maybe I should just join the navy, haw :P
[21:31:04] <ReadError> MWC is like, 50$
[21:31:04] <andypugh> Why would you ever use kmalloc when kzalloc exists?
[21:31:16] <toner> oh cool
[21:31:28] <ReadError> toner: you can get a setup, minus TX/RX
[21:31:32] <ReadError> for like 150 or so
[21:31:35] <toner> huh awesome
[21:31:37] <ReadError> from goodluckbuy.com
[21:31:42] <toner> thanks for the tip
[21:32:11] <ReadError> https://twitter.com/ReadError67/status/209095596118786050/photo/1/large
[21:32:14] <ReadError> er
[21:32:18] <ReadError> https://p.twimg.com/AubbVjsCQAAyyge.jpg:large
[21:32:21] <ReadError> thats my big dog one
[21:32:22] <ReadError> for AP
[21:33:10] <andypugh> Very generous, says AP
[21:33:13] <toner> whoa cool
[21:33:34] <toner> hmmmmmmmm
[21:33:42] <r00t4rd3d> http://www.ebay.com/itm/190644759648?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1438.l2649
[21:34:06] <toner> nice
[21:34:08] <ReadError> r00t4rd3d
[21:34:08] <toner> multicopters ftw
[21:34:12] <ReadError> problem with those
[21:34:15] <ReadError> too much flex
[21:34:18] <r00t4rd3d> the price just went down on those, they were 41 last week
[21:34:19] <ReadError> i have 2 DJI frames
[21:34:33] <ReadError> you cant get a rigid frame
[21:34:38] <toner> ReadError: any recommendations on motors for small flying aircraft?
[21:34:43] <ReadError> too much flex in hte rotational axis
[21:34:52] <ReadError> toner: depends on the frame entirely
[21:35:13] <toner> http://triplehelix.org/~ink/laser/balsa-glider-2.jpg heh
[21:35:23] <toner> I hacked together a quick glider with the laser a while ago
[21:35:28] <toner> but I have some ideas for making actual wings
[21:35:49] <ReadError> http://www.goodluckbuy.com/x525-v3-quadcopter-friber-glass-folding-arfset-mwc-flight-control-multicopter.html
[21:36:17] <ReadError> thats frame, esc, motors, MWC
[21:36:24] <toner> pph
[21:36:25] <toner> ooh*
[21:36:36] <ReadError> it can do altitude hold
[21:36:40] <ReadError> so you can flip a switch
[21:36:43] <ReadError> and fly it around
[21:36:47] <ReadError> or just let it stay put
[21:36:59] <r00t4rd3d> http://www.youtube.com/watch?v=vqurBOMdly0
[21:37:11] <ReadError> and, that same firmware, is what warthox is usin to do all those flips
[21:37:23] <toner> whoa so
[21:37:30] <toner> the firmware for that thing is open?
[21:37:47] <ReadError> ya
[21:37:51] <ReadError> its arduino based
[21:37:52] <toner> awesome!
[21:37:59] <ReadError> so the code is easy to read
[21:38:01] <toner> ardupilot?
[21:38:04] <ReadError> you can hax some stuff in
[21:38:05] <ReadError> nope
[21:38:09] <ReadError> multiwii controller
[21:38:10] <toner> cool
[21:38:17] <toner> I will check this out
[21:38:19] <ReadError> you can hack your own controller
[21:38:24] <toner> awesome
[21:38:26] <ReadError> from a nunchuck + wii motion plus
[21:38:32] <ReadError> but shit, the board is 50$
[21:38:34] <ReadError> with a baro
[21:38:36] <ReadError> cant beat that
[21:38:40] <toner> wow, yeah
[21:38:52] <ReadError> very active community
[21:38:58] <ReadError> new releases pushed out all the time
[21:39:00] * toner will have to join it
[21:39:04] <toner> heh
[21:39:05] <r00t4rd3d> http://www.youtube.com/watch?v=XKSDxpimQ_s
[21:39:07] <r00t4rd3d> im buying one
[21:39:12] <toner> maybe get some bigger hardware
[21:39:35] <ReadError> r00t4rd3d
[21:39:36] <ReadError> better yet
[21:39:39] <ReadError> ill send you my gcodes
[21:39:48] <ReadError> get some towel bars from home depot
[21:39:54] <ReadError> and you will have a killer rig ;)
[21:40:08] <ReadError> i just designed a smaller one today
[21:40:14] <ReadError> perfect to start with
[21:40:40] <ReadError> http://i.imgur.com/pb0c4.png
[21:40:44] <andypugh> toner: LinuxCNC is now (in master) fairly good at XY/UV foam cutters
[21:40:46] <ReadError> thats my lower
[21:41:42] <ReadError> you can build that frame for like
[21:41:44] <ReadError> 25$
[21:41:53] <ReadError> w/o bulk purchases
[21:42:32] <toner> nice
[21:42:34] <toner> hm
[21:42:52] <toner> I think it would be cool to make a dual rotor flying wing
[21:43:03] <toner> but with the two rotors on the ends of the wing, on servos
[21:43:06] <ReadError> toner
[21:43:10] <ReadError> MWC supports it ;)
[21:43:14] <toner> so it could point upward and hover like a helicopter
[21:43:26] <toner> then just shoot up and airplane forward
[21:43:36] <toner> and do all kinds of neat rolls and maneuver
[21:43:44] <andypugh> I think it has been done full-size
[21:44:03] <toner> http://news.cnet.com/8301-13576_3-57457501-315/drone-dogfights-by-2015-u.s-navy-preps-for-futuristic-combat/?tag=rtcol heh
[21:44:43] <toner> andypugh: probably, but I don't have one
[21:48:01] <andypugh> Ah, not quite, but close: http://en.wikipedia.org/wiki/AgustaWestland_AW609
[21:48:53] <ReadError> http://en.wikipedia.org/wiki/Bell_Boeing_V-22_Osprey
[21:51:15] <andypugh> They are both real "evil overlord" / Bond Villain transport, aren't they?
[21:57:47] <taiden> evening gents
[21:58:03] <taiden> got my code i was working on earlier all worked out and it runs quite nicely
[21:58:28] <taiden> now I need to figure out how to set up a fixture and a GUI so I can one click create different styles of part :)
[21:58:36] <taiden> so much for not working today :\
[21:58:49] <ReadError> styles of a part/
[22:00:43] <toner> heh indeed
[22:00:47] <toner> hi taiden
[22:00:57] <toner> http://www.youtube.com/watch?v=-zHlY3P25aA cinematic automation
[22:01:39] <andypugh> If I have a char* string in C, how can I give it a multi-character value? Do I actually have to include a string library? Or can chan->confs[0].UnitString="degrees"; be made to work?
[22:02:06] <djdelorie> what compiler?
[22:02:35] <djdelorie> wait, multi-char, not multi-byte chars
[22:03:07] <djdelorie> a "char *" is not a string per se, but the address of a string. You can assign that address the address of a constant string in memory (like you did) or allocate new memory and copy the string into it
[22:03:16] <toner> you can do strcpy(pointer_to_string, "string literal");
[22:03:38] <andypugh> djdelorie: Gcc
[22:03:45] <toner> also sprintf
[22:04:02] <djdelorie> toner: only if the char* is initialized to point to a sufficiently large buffer
[22:04:09] <toner> true
[22:04:48] <andypugh> I was rather hoping to avoid including a whole (not necessarily threadsafe) library just to populate one part of one struct
[22:04:58] <djdelorie> most people get confused about the difference between assigning the *string* a value, or assigning the *string pointer* a value
[22:05:10] <andypugh> The char* is a fixed-size
[22:05:11] <toner> if (stringPtr) delete[] stringPtr;
[22:05:23] <toner> stringPtr = new char blah blah
[22:05:30] <djdelorie> if the struct says "char * foo" and you want to have it "be" one of a few fixed strings, your example is approprieate
[22:05:42] <djdelorie> toner: that's C++, not C
[22:05:49] <andypugh> djdelorie: I am very much in the "most people" ring of that Venn-diagram.
[22:05:57] <Jymmm> pointers oh my!
[22:06:01] <toner> heh, fine, use malloc
[22:06:12] <djdelorie> toner: only if you want mutable strings ;-)
[22:06:14] <toner> and wrap it in a function if you use it a lot
[22:07:08] <andypugh> That example is totally static. In fact I would cheerfully populate the whole thing with bytes.
[22:07:11] <djdelorie> the most important questions is: the string you are assigning, will its *contents* change, or just *which* string you're pointing to?
[22:07:15] <taiden> different styles of a part like
[22:07:43] <taiden> ngc #1 does the basic cut for the part
[22:07:58] <djdelorie> or, perhaps, are you using a string pointer where an enum would be more appropriate?
[22:08:00] <taiden> then there is ngc #2, #3, #4 which all cut from what #1 leaves but creates three different styles
[22:08:15] <taiden> and then make a fixture that holds say 4 parts
[22:08:18] <djdelorie> (i.e. "enum AngleUnit angle = ANGLE_DEGREES;"
[22:08:20] <andypugh> I am actually emulating data that would be read from an eprom if the boards were newer. It's a completely static byte sequence
[22:08:20] <toner> just allocate a big buffer upfront and overwrite the contents with strcpy or something
[22:08:30] <toner> waste a bit of space, but eh, what will this code be running on?
[22:08:31] <taiden> and be able to say first part is #2, next part is #3, next part is #2, next part is #4
[22:08:41] <toner> allocating memory takes cpu time
[22:08:51] <toner> you have to call into the kernel and all that
[22:09:10] <toner> memory is cheap these days :P
[22:09:22] <djdelorie> toner: malloc only goes to the kernel when the local heap is empty
[22:09:30] <toner> still, though
[22:09:32] <toner> it has to be allocated
[22:09:33] <andypugh> This is part of the Mesa 8i20 driver, all in kernel space and realtime,
[22:09:35] <toner> and deallocated
[22:09:55] <toner> it's fast, but if the string only needs to be large enough for "degrees"
[22:09:59] <djdelorie> andypugh: are you trying to just set up a static block of bytes which "is" the eeprom ?
[22:10:05] <toner> then leaving it allocated is faster
[22:10:05] <andypugh> Yes
[22:10:29] <djdelorie> so, somewhere in this block of bytes is a stream of bytes which spells out "degrees" ?
[22:10:45] <andypugh> Indeed, and a zero-terminator
[22:10:56] <djdelorie> that is different than what your example does
[22:11:23] <andypugh> Yes, I know that. If my example worked I wouldn't have bothered you all
[22:11:44] <djdelorie> declare your variable in the structure like this: "char UnitString[8];" since you know the length of the string
[22:12:23] <andypugh> It's pre-declared.
[22:12:24] <djdelorie> when you provide the static initializer for that variable, use "degrees". GCC should warn if the lengths don't match
[22:13:05] <andypugh> it's part of a struct that just got kmalloc-ed.
[22:13:07] <andypugh> char UnitString[HM2_SSERIAL_MAX_STRING_LENGTH+1];
[22:13:38] <djdelorie> ok, that's already a buffer, not a pointer.
[22:13:49] <djdelorie> char * UnitString; would have been a pointer
[22:14:14] <djdelorie> a "pointer" and "that to which it points" are two fundamentally different datum in C
[22:14:38] <djdelorie> in your case, there is no pointer, so to initialize it, you would use either strcpy() or memcpy ()
[22:14:50] <andypugh> Yes. I admit that I am so confused by C I just tend to put * and & in intil the compiler stops moaning.
[22:14:55] <djdelorie> note that GCC is very good at optimizing strcpy() from a constant string
[22:15:28] <djdelorie> heh. That normally results in code that neither you nor the compiler understand well enough to fix ;)
[22:15:36] <andypugh> I was rather hoping not to have to include string.h
[22:16:10] <djdelorie> if you're writing a kernel driver, either <string.h> is the kernel's version, or there's something else you'll need to include
[22:17:08] <djdelorie> anything obtained with kmalloc needs to be filled in either from computed values (i = f(5)) or by a block copy (memcpy/strcpy)
[22:17:13] <andypugh> Would chan->confs[0][0]='d"
[22:17:31] <djdelorie> If the data is *always* the same, you can do a structure assignment, but gcc just uses memcpy anyway
[22:17:39] <andypugh> confs->chan[0][1]='e'
[22:17:49] <andypugh> and so on be simpler?
[22:17:52] <djdelorie> it's faster to call memcpy/strcpy and let gcc optimize it, than do manually try to do it that way
[22:18:25] <djdelorie> GCC will likely turn that 8 byte copy into one 64-bit assignment or two 32-bit ones, depending on the target arch
[22:19:03] <andypugh> I guess I could inline-assemble it
[22:19:17] <djdelorie> you'll just be wasting your time
[22:19:37] <djdelorie> gcc knows how to optimize strcpy/memcpy away *completely* when the source is a constant string like that
[22:19:51] <andypugh> Is there not some curly-brace magic to be used?
[22:19:54] <djdelorie> it will be faster than what you're likely to write, and far more portable
[22:20:09] <djdelorie> the more magic you use, the worse your code gets, because it confuses gcc's optimizer
[22:20:22] <djdelorie> unless you do structure assignment
[22:20:50] <djdelorie> you can't do "a = b;" when a and b are arrays, but you *can* do "a = b;" when a and b are struct's
[22:22:12] <djdelorie> I just tested strcpy (foo, "degrees"); with "gcc -O3", it got turned into two opcodes, no calls at all.
[22:22:26] <djdelorie> movabsq $32481108707206500, %rax
[22:22:26] <djdelorie> movq %rax, foo(%rip)
[22:22:38] <andypugh> it is a common complaint of mine on here that folk ask for help to make their solution work, rather than ask for a solution to the problem.
[22:23:58] <andypugh> So, to go to a higher level. I have this struct: http://pastebin.com/6xfUNuzT and I want to populate it with 100% static data. It is to emulate block of eeprom.
[22:24:29] <djdelorie> and the driver is a read-like thing, that returns some sub-block of it?
[22:25:15] <andypugh> The blocks of data are used to create HAL pins of various sorts
[22:25:35] <djdelorie> I mean, what is the kalloc() for
[22:26:01] <djdelorie> perhaps you could have a static variable hold that, with a static initializer built at compile time, and just return a pointer into that static block rather than copy it
[22:26:15] <andypugh> There are an unknown quantity of them at compile time
[22:26:29] <djdelorie> Note: "float" and "short" are not portable at the byte level across architectures
[22:27:11] <djdelorie> although for a pcie card, it's likely you're only dealing with i386/x86-64 anyway
[22:27:54] <andypugh> This is linuxCNC, it is not really supported on anything other than x86/32 Ubuntu.
[22:28:23] <djdelorie> funny, I just got my Raspberry Pi yesterday, and was wondering if linuxcnc would work on it...
[22:28:35] <djdelorie> not that a mesa card would work on a Pi
[22:28:56] <pcw_home> though theres PCIE on ARM
[22:28:57] <andypugh> Mine is due next week. I will certainly be having a go
[22:29:13] <djdelorie> I suspect there just isn't enough RAM to do useful things, but we'll see
[22:30:03] <djdelorie> pcw_home: thankfully, ARM is typically little endian (there's a BE option, but nobody uses it) and uses the same float/double format as i386
[22:30:26] <Thetawaves> how much ram does it have?
[22:30:27] <djdelorie> SPARC would be the problem case, for example. Or mipseb
[22:30:37] <andypugh> There is a demo of LinuxCNC running on http://www.roboard.com/RB-110.htm
[22:30:44] <djdelorie> 256M but some is allocated to the video buffer. 190M is available to linux userspace
[22:30:55] <Thetawaves> little endian is best endian
[22:31:01] <pcw_home> The VAX is little endian
[22:31:04] <Thetawaves> but what is he issue with be?
[22:31:35] <djdelorie> big endian vs little endian means "float" would be the wrong way relative to some "this is what I expect from an eeprom" code
[22:31:48] <pcw_home> BE is NBO
[22:31:54] <andypugh> Well, not that _exact_ board, but a similar one from the same folks.
[22:32:37] * Thetawaves recently got the pic32 ethernet starter kit
[22:32:44] <djdelorie> whether linuxcnc works well or not on a Pi depends less on linuxcnc and more on how much crap today's modern operating systems load in the background because "RAM is cheap"
[22:32:55] <andypugh> The guy seems desperate to send me a free sample, I am worried about what he might expect in return
[22:33:48] <andypugh> Anyway, we have veered away from my problem!
[22:34:05] <Thetawaves> djdelorie, yeah i was thinking you could massively strip it down... use an ancient window manager
[22:34:33] <djdelorie> The Pi image I'm using uses xfce, gnome is likely itself too big for the Pi
[22:34:46] <djdelorie> but just systemd looked like it was using 10meg itself
[22:35:14] <djdelorie> just so your flash drive is automounted ;-)
[22:36:04] <pcw_home> isn't PIC32 just MIPS?
[22:36:11] <djdelorie> andypugh: anyway, the fastest way to fill in a pre-allocated string buffer is strcpy, let gcc optimize it. If you need to initialize the whole struct to the same thing every time, use a structure copy
[22:36:28] <djdelorie> pcw_home: PIC32 is very mips-like, but they didn't license the core so they can't *call* it MIPS
[22:36:37] <pcw_home> Ahh
[22:36:43] <djdelorie> "it's not mips, wink wink nudge nudge"
[22:37:02] <djdelorie> at least, that's what I've heard.
[22:37:30] <pcw_home> I thinks theres a a FPGA core like that "plasma" or something
[22:37:33] <andypugh> djdelorie: But if I don't have strpy?
[22:38:32] <djdelorie> http://www.linuxforums.org/forum/programming-scripting/79465-strcpy-kernel-space.html
[22:39:17] <djdelorie> but like I said, gcc "knows" about strcpy and will optimize it away completely
[22:39:59] <andypugh> It appears to be working
[22:42:26] <andypugh> On a different issue. Why wouldn't we chance every kmalloc to a kzalloc?
[22:43:56] <djdelorie> if you're going to overwrite all the data anyway, why waste the time filling it all with zeros?
[22:45:08] <andypugh> Well, because I wasted all of today rebooting because krealloc wasn't coping with being sent a pointer from randomised memory
[22:45:52] <andypugh> I am guessing it would have realised it was a new-alloc not a re-alloc had the pointer been null
[22:46:21] <ReadError> Thetawaves
[22:46:24] <ReadError> i got a avr32
[22:46:27] <ReadError> ngw100
[22:46:34] <ReadError> i got it free in college ;)
[22:47:00] <ReadError> has 2 network interfaces
[22:47:02] <ReadError> so if anything
[22:47:06] <ReadError> run linux + iptables
[22:47:09] <ReadError> have a little router
[22:48:21] <djdelorie> kzalloc doesn't return you a null pointer (other than when kmalloc would), it returns a pointer to a block of zeros. The stuff around the block that malloc/free use to manage memory are never random
[22:48:23] <andypugh> (kmalloc a struct with a pointer to an array of pin defintitions of unknown length, iterate through then looking for a zero-sentinel kreallocing as you go. About 10% of the time it worked perfectly. Those 10% runs reallt confused the issue when they coincided with a code change.
[22:49:07] <djdelorie> it might be faster to count first and kmalloc just once, if you can do that
[22:49:47] <andypugh> I can, and did make that change, but it felt rather untidy.
[22:49:59] <taiden> so if I wanted to create a GUI that would trigger different NGC files and be able to set "touch off locations" where would I look first?
[22:50:50] <djdelorie> in user space, realloc() is a time-saver. In kernel space it might be a time-waster depending on the implementation.
[22:51:07] <djdelorie> the fewer calls to alloc/free you do, the less chance of fragmenting memory too
[22:51:35] <andypugh> djdelorie: it involves a lot of reading byte-by-byte from a remote eeprom thorugh a serial interface. Rewinding back to the start and doing it all over again having counted them seems inefficient
[22:51:49] <djdelorie> how big is the eeprom?
[22:51:56] <djdelorie> (bytes, not inches)
[22:51:57] <andypugh> 80 bytes
[22:52:18] <djdelorie> so kalloc 80 bytes, read the whole thing in a block, and process it locally
[22:52:51] <djdelorie> or write a tiny read cache for it, so you only read any given byte once
[22:53:03] <andypugh> Ah, sorry, it is N x 80 bytes
[22:53:50] <andypugh> 80 bytes per pin.
[22:54:03] <djdelorie> is this something you do once at startup, or many times during operation?
[22:54:12] <andypugh> Once
[22:54:38] <djdelorie> so... is the extra time taken, times the number of mesa cards sold, more or less than the time this conversation has taken? ;-)
[22:55:02] <andypugh> Possibly more
[22:55:25] <andypugh> it's every time the machine starts
[22:55:35] <djdelorie> the pc machine, or the cnc machine?
[22:55:59] <andypugh> LinuxCNC
[22:56:36] <andypugh> more specifically, every loadrt hm2_pci
[22:56:45] <djdelorie> I wouldn't worry about it too much then, just make sure it's reliable and reasonably fast
[22:56:48] <andypugh> Or loadrt hm2_7i43
[22:57:02] <djdelorie> reliable is far more important than a few milliseconds
[22:57:48] <andypugh> On thr EPP cards it can take seconds
[22:58:01] <andypugh> (worst-case)
[22:58:03] <djdelorie> ick
[22:58:31] <djdelorie> do you know the max total eeprom size in advance? I.e. some card-specific upper limit?
[22:58:53] <andypugh> Well, the pins have to fit onto 96 bits.
[22:59:21] <andypugh> Worst case would be 96 single-bit values with 32-character names.
[22:59:24] <djdelorie> I mean number of pins
[22:59:48] <djdelorie> perhaps you could allocate a per-card buffer that's "big enough" to cache the eeprom values
[23:00:15] <andypugh> Perhaps _you_ could :-)
[23:00:43] <andypugh> Though it's an interesting idea
[23:00:56] <djdelorie> I mean, if you know in advance that the total memory needed is only 32k because the eeprom chip is that big, you could kalloc 32k of shorts, etc...
[23:01:19] <djdelorie> or use kalloc with a linked list, clean up afterwards
[23:01:30] <pcw_home> I doubt that any sserial device will have more than 12 or PTOC records
[23:01:42] <pcw_home> -or
[23:02:39] <andypugh> I have a terrible worry that PCW has beem banging his head on the table through this entire conversation
[23:03:00] <djdelorie> my parts or your parts? ;-)
[23:03:05] <pcw_home> also array types will compress most multiple channels Nbit data so even 12 is a stretch
[23:03:28] <andypugh> Oh, mine
[23:04:15] <andypugh> Anyway, the count and malloc or realloc on the fly thing is a bit of a diversion
[23:04:46] <tjb1> What does it mean when a linear actuator has a rated load thrust of 675 lb and a max load capacity of 1350 lb
[23:04:52] <tjb1> how much can it actually lift?
[23:04:56] <djdelorie> compared to EPP speeds, strcpy is "instant" ;-)
[23:05:04] <andypugh> What I am now wondering is if I can define a static structure in the header file and copy that as a psuedo-eprom
[23:05:39] <pcw_home> so something like the 7I77 that has 6x 13 bit analog out channels and
[23:05:40] <pcw_home> 6 analog out PTOC records would have 5 fewer PTOC entries with arrays
[23:06:18] <andypugh> I wasn't concerned about the speed of strcpy, I was worried about whether it was available to trapi kernel drivers
[23:06:20] <pcw_home> Oh to patch around the 8I20/7I64 lack of PTOCs?
[23:06:55] <andypugh> pcw_home: Yes, I am trying to create pseudo-ptocs for them
[23:08:24] <pcw_home> I think I saw you mention getting rid of 8i20.c and 7i64.c
[23:11:14] <andypugh> Yes, they are very nearly gone
[23:11:30] <andypugh> (and mesa_auto.c too)
[23:12:51] <pcw_home> we wish they were the same as the generic sserial devices as well as theres special code in SSLBP
[23:12:52] <pcw_home> for them (and we only have 2K of code space there so every wasted bit is s pain)
[23:14:07] <andypugh> djdelorie: You hinted that I could make one struct equal to another. So would it be possible to define a pre-loaded struct of the form I pastebinned in the header file?
[23:14:17] <djdelorie> yup
[23:14:38] <andypugh> Syntax?
[23:15:07] <djdelorie> at compile time, you could do "static struct pinstruct pin_thing_5 = { 1, 2, 4.5, "degrees", 7 };
[23:15:19] <pcw_home> must be well into tomorrow in the UK
[23:15:20] <djdelorie> then at run time, pin[i] = pin_thing_5;
[23:16:16] <andypugh> pcw_home: 5am. Birds have woken up and it's daylight again.
[23:16:41] <andypugh> djdelorie: sounds too simple.
[23:16:52] <djdelorie> gcc just does a memcpy
[23:17:16] <pcw_home> I dont think I could do that anymore...
[23:17:23] <ReadError> where can i obtain cheap CF sheet inside the USA
[23:17:25] <djdelorie> the problem with arrays is that in C an "array" and "the varable representing an array" are two different types
[23:17:47] <djdelorie> so if you have "char a[8];" and you do "a = b" its trying to assign *pointers*, not the *data*
[23:17:51] <djdelorie> structs don't have that problem
[23:18:09] <djdelorie> so "a = b;" with structs assigns the data, like you'd expect.
[23:19:05] <andypugh> If it's a memcpy the strings have to be fixed length. Do I just escape a 0 and pad with dots?
[23:19:24] <andypugh> Or can I cast a literal to a fixed length?
[23:19:53] <djdelorie> the string *buffers* are fixed lengths, the "degrees" you use at compile time is something different
[23:20:08] <djdelorie> gcc does the equivalent of strncpy for you
[23:20:51] <djdelorie> so, the size of the string buffer is determined by the struct type, not by the static initializer you give it
[23:21:16] <andypugh> Really? That seems not-at-all like C
[23:22:24] <andypugh> Surely C will insist on copying extra bytes to the most dangerous place possible inless prevented from doing so, at least twice?
[23:22:52] <djdelorie> at compile time, not run time...
[23:23:10] <djdelorie> at run time it's much more exciting
[23:23:14] <djdelorie> ;-)
[23:23:31] <andypugh> Hmm, specifier for single-precision is?
[23:26:11] <djdelorie> float you mean?
[23:26:54] <djdelorie> something like 1.23 is a float by default
[23:27:32] <andypugh> I want to be very sure it's a 4-byte float
[23:27:50] <djdelorie> then use "float" :-)
[23:28:03] <djdelorie> again, the whole thing about "float" being not as portable as you'd like
[23:28:18] <andypugh> Especially in rtapi..
[23:28:49] <andypugh> I am almost sure that "float" is double in rtapi
[23:29:47] <djdelorie> "float" should be 32-bits in gcc for i386
[23:30:30] <djdelorie> add "static int float_test[(sizeof(float) == 4) ? 4 : -4];" somewhere in your C file and gcc will error out if float isn't 4 bytes
[23:32:03] <andypugh> I am now almost certain that I have no clue
[23:32:55] <djdelorie> I would be very surprized if sizeof(float) were 8 for you
[23:35:08] <andypugh> I think you are right. hal_float_t is a double, I think, but that is different.
[23:36:40] <andypugh> It seems that " static struct hm2_8i20_0 {0xA0,0x10,0x01,0xC0,(float)1.0,(float)0,0,"degrees","angle"}; "is not the correct incantation
[23:37:06] <djdelorie> static struct hm2 = { ... }
[23:37:19] <djdelorie> or better, static const struct hm2 = { ... }
[23:37:40] <djdelorie> it's like "int i = 5;" but bigger
[23:38:32] <Jymmm> const???
[23:38:55] <djdelorie> means read-only so its value can be assigned at compile time
[23:39:23] <djdelorie> vs creating a const copy from which the variable is initialized at run time
[23:39:38] <Jymmm> if it's a constant, how can you assign a value?
[23:39:47] <djdelorie> it's a constant "that has this value"
[23:40:05] <Jymmm> of {...} ?!
[23:40:17] <djdelorie> it's "constant" at run time but at compile time you can pre-set its value, and it has that value for the duration of the program
[23:40:26] <djdelorie> yes, that's how you initialize a struct
[23:40:27] <Jymmm> (I see no vlae there is what I'm saying)
[23:40:31] <andypugh> sserial.h:38: error: expected identifier or ‘(’ before ‘=’ token
[23:40:37] <djdelorie> the "..." means "fill in the blank"
[23:40:54] <Jymmm> literally or figuratly?
[23:41:01] <djdelorie> ah, ok... static struct TYPE VARIABLE = { DATA } ;
[23:41:23] <Jymmm> (ok, figuratively =)
[23:41:43] <Jymmm> so declaration and assignment at the same time
[23:42:01] <djdelorie> "struct type" should match whatever's in that header, so in your case, you can skip the "struct" part
[23:42:01] <Jymmm> It's beena while since I touched c
[23:42:30] <andypugh> I tried static const sserial_data_t hm2_8i20_0 = {0xA0,0x10,0x01,0xC0,(float)1.0,(float)0,0,"degrees","angle"};
[23:42:36] <djdelorie> Jymmm: right
[23:42:56] <Jymmm> I thought "{...}" might have had some menaing to the compiler =)
[23:43:25] <Jymmm> ++--++--++ <--- that means something! LOL
[23:43:53] <Jymmm> all that pre/post incremanent/decrament shit =)
[23:44:55] <djdelorie> http://www.delorie.com/tmp/andypugh.c
[23:48:01] <andypugh> I am not utterly confused, because I thought what I had was identical to that..
[23:48:11] <djdelorie> take out the (float)
[23:48:17] <andypugh> But your version works, and mine doesn't
[23:48:42] <Jymmm> djdelorie: LOL, I wrote that shit many moons ago... http://codepad.org/3KG01buI
[23:48:57] <andypugh> Ah. OK. How do I make sure it isn't copied accross as a double?
[23:49:24] <djdelorie> the "float" in the structure definition defines the type, not the constant you're initializing it with
[23:50:06] <andypugh> OK, that makes sense now that there is a typedef in the declaration.
[23:50:50] <andypugh> I had imagined I was defining a byte list to be blindly copied
[23:51:27] <djdelorie> nope, gcc does the initialization on a field-by-field basis according to normal C casting rules. It just does it at compile time to *create* the byte stream which *is* the variable
[23:54:47] <andypugh> Eventually you learn to translate "warning: ISO C90 forbids mixed declarations and code" as "you deleted one bracket too many, you idiot"
[23:54:59] <djdelorie> or added one
[23:55:14] <Connor> What are you all working on?
[23:55:35] <djdelorie> him or me?
[23:55:41] <Connor> andypugh:
[23:56:04] <andypugh> And "suggest braces around assignment used as comparison" means "I reckon you meant == you BASIC programmer, you.
[23:56:42] <andypugh> Connor: I am trying to make the mesa 8i20 driver less stable and more complicated.
[23:56:56] <Connor> ROFL
[23:57:33] <andypugh> No, wait, that is what I am doing, not what I wanted to do
[23:59:33] <andypugh> The Mesa Smart-Serial drivers were written assuming that there would be lots of card-types, and was made modular. Then there were so many cards coming through that Pete decided they should actually self-declare their pin-structure and pin names, so I ended up with 2 modular drivers and "the rest"