Jump to content

Black Pearl

Members
  • Posts

    410
  • Joined

  • Last visited

  • Days Won

    13

Posts posted by Black Pearl

  1. But then you realize that you just have to right click and select TortioseSVN->Revert to solve all your problems ;)

    Question: do you automatically check in vi's when they are saved?

    Normally I work on a bunch of vis together and close (so save) them, but just check in the bunch together (including callers if recompiled) when a task is done.

    As a side node:

    I'm currently working on a large uml project (well, I'm working my way through the specs, so I guess I'm at 100+ classes) and Eclipse/Papyrus is crashing pretty often. :throwpc:Yesterday it managed to destroy the main model file. :frusty:Then I discovered that there was a build-in revision control, so I could revert to my last save (and due to the crashes I save often).:worshippy:

    I'm not sure if there is a hook for saving/closing vis, but having them automagically commited to a SVN repository with a auto-message could be cool. Then of course not use SVN but Hq for multi-users so the check-in is only into your private repo and not breaking the build.:book:

    Felix.

  2. You can make this by-val as well. What you need is a bi-directional association. So you need a container of Sensor and Power Meter in each class (somewhere you propably nee to use the parent clas + type cast). When you transform PowerMeter to Sensor, you just place the PowerMeter Obj in the Sensors property and then returen the Sensor, and the other way round.

    Edit: Search for 'Beagle State Machine' for this birlliant design.

    Felix

  3. Couldn`t we ask for a LV-prim to be named after him?

    So we can post in the forum: If you want to mak this clas friend (community scope) of that class, just place a Balla prim connecting both wires.

    Shall I promote this on IE? :wub:

    Felix

  4. When I submit newer code to the CR, the date seems to be stuck at the old time. I submitted a newer version today, but the date is the original submission date:

    med_gallery_15343_36_5762.png

    Or am I doing something wrong? -> I edit my older submission.

    It's not really inutitive how to submit newer versions in the CR. There are two buttons to submit code, that create a complet new entry.

    Felix

  5. Thank you shb for looking into my tools.

    I wasn't working on the state machines since some time. Both issues you found were already fixed in my private code base. I uploaded the current code in the CR, just download V_1.0.1.

    You still need to change the ReplaceNoAttrib for your version.

    With the parameters you provided (I had tried the same), I get error 1 thrown.

    Felix

  6. It's a duplicate upload. Please continue here:

    http://lavag.org/topic/12887-discuss-quick-create-a-new-vi-from-template/page__view__getnewpost__fromsearch__1

    index.php?app=downloads&module=display&section=screenshot&id=153

    Name: quick create a new vi from template

    Submitter: Black Pearl

    Submitted: 23 Oct 2010

    Category: *Uncertified*

    Version: 0.9.1

    LabVIEW Version: 7.1

    License Type: BSD (Most common)

    V 0.9.1 Fixed issues with the Application Instances of LV8.0 and higher.

    Wizards are still launched in the diaolog App.Instance, they need to get the default App on their own.

    Click here to download this file

  7. Well, spiders make intersting pets. Once I was doing some stuff on my PC (maybe gaming) late night. I had two of them suddenly running over my monitor. Left side up, along the top, right side down. My monitor has a foot, so this was really a loop way, but greate sight to suddenly have them racing on top while playing some shooter. :ph34r:

    At the moment my spider looks really fat, propably eaten the whole fly for dinner, so sorry for your THC spider. :D

    But there is still a mosquito in the net, shall you ship it to you. My spider prefered the fat fly... :P

    Felix

  8. Today I was witnessing a battle of life and death. I've got a bunch of spiders in my room, as wild pets. There is a big web on the window next to my monitor. Today, a big fly was captured! The web was shacking as the fly was trying to breack free, while the spider was busy getting the fly relaxed. Took maybe 5 minutes until the fly was quite.

    Right now, it seems that my spider is weaving a nice blanket around the fly.

    biggrin.gif

    Too sad my daughter wasn't here to watch...

    Felix

  9. I am passing a lot of data (multiple clusters with arrays).

    That could be an issue, as if you resize the array, the complete super-cluster must be reallocated/copied.

    But I would suggest to dig further. Try to get hold of the code section where LV crashes. If your project is big, you could implement a simple logger vi, that just writes to a file it's call chain. Then you know until which point the code did run fine.

    Felix

  10. Well, my specs usally say:

    10. software: customized software wirtten in LabVIEW.

    Yep, no more. And I can live with it. The customer hase to design the feature (write more detailed specs) and at some point I can say 'that's out of scope/budget/...'. This seems to be a completely different situation that NI has, but in parts, it isn't.

    Once I have a feature completed and go on to the next customer, all change requests are pure cosmetic.

    Well, both situations are completely different. So I try to put it in a much higher abstraction level.

    I think that a correctly working software only gets (by request) two kinds of additions:

    * new features (so completly new from the scratch, as add-on)

    * cosmetic changes (like a cancel button on a dialog)

    and this mechanism is user (customer) driven.

    but seldom (never)

    * improving a sub-feature (performance optimization, Edit->Create SubVI)

    * adding a subfeature (e.g. support for abstract classes in LVOOP)

    Because this can only be judged by the developers and sometimes the power users; never management or new customers (-> marketing).

    Felix

  11. Don't be. The Lithium system is far from knocking me off my feet with amazement, and it wouldn't shock me if it didn't have anything other than the Duplicate status.

    The 'community' is even weaker, but much better polished. And a lot of succesful open source projects use ugly bugzilla web services. I wouldn't judge from what we see to what 'they' see.

    Well, we all know that the LV programmers community is cool, despite scrapy ways of communication.

    Which brings me to a fundamental 'flaw' in the IE system. You and me as users just see a very small portion of the complete code. We are power users, don't forget, so we already discuss 'stability' and 'performance' while I guess most ideas are on the level 'add a button to do X in Express VI Y'.

    I make pretty complex measurement equipement and I'd like to have the customers questioning the 'though stuff' (how do you implement error propagation, what about the PID controller, how is your internal messaging system designed ...) but in 99% of the cases I get 'I want a cancel button here', 'I want a plot legend there' and I want a 'comment field in this dialog'.

    :throwpc:

    If the only mechanism to develop LV further would be the pure IE exchange, we will all be talking about the good old times of Express VIs when LV didn't look like facebook. If we implement a class, we would need to invite the method vi's as friends and then go on the method to accept the invitation; instead of Icons they would all have Avatars double the size of an express vi ..

    :lol:

    Felix

  12. I learn something new every day. Thanks for correcting my misunderstanding. :)

    I do think in general language (if not in uml syntax) inheritance and dependencies are specific types of associations. At least that's how I use it. In the early phases of a model I'll use an association to link two classifiers that need to collaborate in some unknown way to achieve a goal. Later on as the model and software takes shape I'll usually replace it with something more specific. Are my models wrong? Possibly, but since I'm the primary customer of my implementation models and I understand my intent, I'm okay with playing a little loose with uml syntax. (I'd happily use more correct syntax if 1: I knew what the correct syntax was, and 2: I could use the correct syntax without addition cost in time.)

    I enjoy the discussion with you, because it really helps me to understand my own issues (in this case uml) better :thumbup1:.

    As the metamodelling is a field somwhere between mathematical/philosophical domain and formal (computer) languages, it comes to splitting hairs about every single word. In addition I'm a bit frustrated why associations are classifiers and not relationships. :frusty:

    So slightly modifying your statement above: 'inheritance and dependencies are specific types of associations relationships' is according to the uml specs.

    After writing the previous post, I actually found an explanation why associations are classifiers: they own properties.

    Back to splitting hairs: a link is the instance of an association.

    If by meta-model you mean the relationships between components in the uml spec, I think not at all. My impression is that the uml spec is primarily for people implementing uml modelling software, perhaps as a way to make models interchangable. It doesn't tell you how to use uml to model the software or how to implement the model.

    Nope. They specify the model.

    So, whatevery you do, a state in your (any) uml model ownes an optional 'entry'-Behaviour.

    If your implemenation of a state machine has an entry code, but your uml model has not, your model is incomplete (which is not bad!).

    If your model has an entry behaviour but your implementation has not, your work is not finished; so either: a) rework the model so there is no 'entry' behaviour, b) code the 'enrty' (if possible by your state machine design) or c) make a state machine design that allows for an 'entry' code.;)

    To get a bit philosophical, we make our lifes easier be needing to make less decisions. Having a good knownledge of uml and LV eliminates a) from above choices (never model what we can't do because we now what we can't do) and make c) more easy because we know a state machine design that allows for entry/doActivity/exit. :yes:

    Felix

  13. An association (as I understand it) is a more general link betweeen classes on the UML diagram. It could be composition, dependency, delegation, inheritance, etc. I can have an association between two classes without either class definition containing an instance of the other. For example, if ClassA:Method1 has a ClassB input terminal, ClassA is dependent on ClassB without necessarily containing ClassB. At the same time ClassB:Method2 can have ClassA as an input terminal. This is a bi-directional association and allowed in Labview. Labview disallows bi-directional composition of classes. No cycles allowed in class definitions. That's where LVObject (or some other parent class) comes into play.

    Inheritance and Dependencies are not Associations. If I remember correctly, they both are decendants of 'relationship', while the Association is a Classifier itself.

    Also note, that associations connecting properties (so not methods or parameters).

    Because they are connecting properties and properties can be stored in the classes private data (if the properties belong to the class), it is always necessary to have the type cast in LV for bidirectional associations. It was clear to me that you can have bidirectional associations with by-ref implementations (also requiring the type casts). I was questioning if the same is possible with by-val design, which you showed is practical code.

    [Edit]

    On re-reading I think you're saying the state machine should have access to the input signals, but the states should not. Is that correct?

    Yes, that was my point. From the formal point, the state machine should contain the 'alphabet', the states, the transitions, the initial state and the final states (Σ,S,s0,δ,F). But I'm not sure if this really would lead to a 'better' code. Doing it all the way as 'correct uml' with region->vertex->state seems like an overkill to me at the moment.

    I was actually looking at the mathematical model.

    This was an implementation compromise. I've considered a more pure model where the state object would invoke a transition object, which in turn would execute its actions and prepare the next state object. I haven't run across a state machine where I needed a lot of independent transition actions, so the additional complexity isn't worth it. If actions need to be performed on a specific transition when exiting a state, you can override the StateTransition method, query NextState to determine which transition is taking place, and drop the transition code in a case structure.

    I'm ok with an implementation compromise. I was thinking more about this. From a 'formal point of view' where I just look at the abstract state machine, it is very clear to me that states (executing code fragments) should be seperate from transitions (defining the order the code fragments are executed). I think this seperation is even more functional than Entry/Do/Exit.

    As I understand it, UML specs define model behavior not implementation details. The modelling rules and objects may or may not translate directly into code. I'd have to see a very clear benefit to justify the additional complexity of an implementation that matches UML behavior. (That's not to say it isn't there... just that I don't see enough payback yet.)

    This is one of the big questions: to what extend should code reflect the uml meta-model, how concrete (or strict) should be the uml syntax.

    Felix

    • Like 1
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.