Jump to content

NeilA

Members
  • Posts

    50
  • Joined

  • Last visited

Everything posted by NeilA

  1. Thanks, yeah didn't realise that was possible, I can see them I will take some time later to see if I can extract them for use. Many Thanks! Neil.
  2. My VIPM is crippled by my works proxy and rediculous IM rules so I was wondering if it is possible that these be shared in a non VIP format? I will continue to try and get the VIPM solution fixed but at the moment I would love to see this design pattern if it is at all possible. Many Thanks, Neil.
  3. I have been asked by the installation builder to insert LV DVD's to generate the installer. I understand that this has been covered, but the best option I can see is to copy the Install DVD's to the hard drive or a server to point at during the installer build process. This is fine but my IM department have my copy of the LV installer, which is frustrating if each time a new update comes in and I have to get it and copy it to a hard drive or server. Is there seriously not a way for this to use the files on the PC? I have everything needed for the installation on my machine and all the components required to make the installer? I have the update, 8.6.1 on my desk, is there a way for me to change something a reg setting or something in the .LVProj file that will allow me to use the update discs?
  4. I have a situation where instrument drivers are being fixed/modified on the test systems and this is effecting deployment of new code as often 'vanilla' versions of these drivers are used in future developments (I know stupid right). My real problem here is that I am unsure how to have the drivers in source code control and also have them be available in the functions palette as well so everyone has the modified versions. This may be an obvious/dumb question, but, I am trying to implement some integrated source code control using LabVIEW proffessional. Code control has been separated up until now and causing a night mare. Any advice, direction and help much appreciated. Thanks, Neil.
  5. I have a server that listens on a port (27000) that I need to replace to fit in with my new system. The client code can't change. I have found a few articles that say you can build a server using the LabVIEW TCP primitives but having little knowledge about what is exchanged between client and server and how it all works. I have tried using the solution found in this link (read cutting a corner lol). http://forums.ni.com...&thread.id=1941 I am unsure how to set the Local IP there doesn't seem to be a way to do this, only a way to read it. This is going to be a problem. As at first this was setting itself to 127.0.0.1 which is fine, but now it seems to use 0.0.0.0 which means the client app wont connect. From what I can read about the winsockcontrol activex component you should be able to set the IP but maybe I am missing something(I have not done much more than the Int2 ActiveX training). I dont know how to monitor the client handshaking data but I am lead to believe it is winsock standard. I don't know if any of you have seen this code before and know what the problem may be or have a LabVIEW primitive solution, but any help would be greatly appreciated. Many Thanks in advance!! Neil.
  6. I just got it to work! I just cropped the image that I copied until it was just the graph and border and then added the additional borders. I then copied and pasted back in to the customise VI saved and updated. Done!! Thanks, Neil.
  7. Hi, Thanks for replying. As I said I dont have any experience with the editor but after trying I guess I can go to the custumise screen coppy the grap open it in paint edit it and then copy it back? Sound simple so I tried it and if I copy it and try to edit it it copies the whole control not just the graph bit so when copy back do it crop just the part I am interested in or what? going to give it a go now and see what happens but any other word of advice would be great. Neil.
  8. I am generating final results as a popup VI front panel which allows the user to select the output result to view as an example they can switch between phase vs frequency and Gain vs frequency. Every thing happens dynamically based on the data set selected so that once the selection has been made a button can be pressed to print the VI front panel. To make the graph look best when printed out I prefer to have every thing white except the graph grid lines, outlines, scales, titles and the plot lines unfortunately because of the 3D effect of the graph there is no bottom and right hand graph outline which make the plot appear to not have printed correctly. I have tried using a report VI and attaching the plot too but as far I can tell it takes an image of the front panel to achieve this so it has the same problem. I have not used the customise function much other than to define type def's so I dont know if it is possible to do this there. Any advice or help would be great. Many Thanks in advance, Neil.
  9. I have tried to reply correctly to this a couple of times I will create a more complete response when I get home from work my work set up seems to not like posting to LAVA. Thanks, Neil.
  10. OK to keep it simple I explained the simplest use for the system (single measurement). What the Executive actually does in its simplest guise is run a simple test, for instance a Gain vs Frequency sweep and translate and mediate all of the comms back and forth. In actuality the master system sends an execute xml that contains all the details for 64 sweeps of the DUT the executive then refactors the xml from one complete XML to a test specific XML. XML structure:- General test details Detail 1 Detail 2 ... Detail n ---> Test 1 specific Details ---> Detail 1 ---> Detail 2 ---> .... ---> Detail n ---> Test 2 specific Details ---> Detail 1 ---> Detail 2 ---> .... ---> Detail n Refactored to:- General test details Detail 1 Detail 2 ... Detail n Test 1 specific Details Detail 1 Detail 2 .... Detail n I then send this flattened test specific XML to the Test VI. I then control the execution of these tests and inform the master system of the progress and translate the requests. Not much more than the simple version but it gives you an idea of the reason behind the executive. We dont generally do this , but, the way it is done you to just change the XML and it could potentially run all of the tests with one call to the executive. This is simple because the XML is created by a database script and the data is populate by another script from an excel speadsheet. The spreadsheet become your sequence editor.
  11. OK, thanks for the comments. First off the diagrams were thrown together quickly this afternoon based on a few seperate diagrams I have that describe the seperate components of the system to give a simple overview to help my explanation. To address a couple of the statements in your post ShaunR I consider the three components inside of the red dotted area to be the executive and the test VI represents the test called for measurement at that moment in time. There have only been a few Test VIs written at this point but they all follow a Queued State Machine architecture. The Executive and the Test VIs each have their own queues, the executive starts both queues but either the exec or test vi can add to the others queue this allows the test vi to call for information from the Master test controller about DUT or to ask the Master test controller to change the DUT cofiguration via the exec which has control of the SOAP messaging. So I think I have a similar sub-language/protocol you discss that is aparant in the supplier software. The C# sharp layer in the diagram is actually in 2 parts the first part is C# layer that is the best way I could find to create a SOAP webservice server, but, what it does is strip out the SOAP namespaces etc and then sends it through a localhost datasocket. The second part is a LabVIEW coded server that is loosely based on the XML-RPC server in the code repository (Sincere thanks to the dev(spoke to them before)) to monitor the localhost port and package the data into a native labview format from XML and place it on the queue. What I was originally illuding to in my earlier posts is that I think y LabVIEW server could be promoted to a similar duty as the suppliers interface layer. In the main program/vi of the executive I currently examine the received execute messages from the LabVIEW server to discover which test to load this sort of task could also be promoted to the server and could also check for tester specific information that would help me to select the correct Test VI or queue to talk to which could also work with more than one at a time. Also I would like to add that my Test VIs are hard coded tests which may make my software not strictly a Test Executive in the sequencer sence but just executes and controls the tests as more of an interface. The tests become set based on the test parameters that are sent to them ie frequencies, powers etc. Allowing them to be generic in performance and I forsee there to be a growing repository of tests available to be picked from. The only problem is that in my system it may be easier to keep the system as it is but allow it to determine a pair of tests that run together and are both controlled by a single executive. But I am unsure how this could be done. Either system would require some sort of synchronisation. Both the synchronisation and queues would have have to be network dependant (which I have seen some things to help on this forum). Does that make sense? Have you had to deal with these sorts of issues? Are there any tips? Dean, A lot of what you say makes sense and is very informative it also gives me some confidence that my slightly covoluted but modular approach makes sense and that although not always the easiest route to test executives they can be done in LabVIEW. Also the fact that I have seperated the functionality means that I can change parts of the system without massive reprocussions like you suggested Again I like to say thanks for your input, I am also relatively green but have learnt a lot from watching the forum and asking questions. I would still appreciate any further suggestions if you feel I am doing anything wrong or there is a better way. Many Thanks, Neil.
  12. Sorry, I have not had time to respond recently. ShaunR I like that you have taken the time to understand my requirement and I think you have done well with my limited description. I don't know where the boundry lies in what I am allowed to say so I have to be a little bit vague I'm afraid just to cover my own back, I hope you can understand. The set up is like this:- Now what needs to be understood from this set up is that the blue dotted RF measurement section can be my software (I call it the 'test exec' this is based on a company legacy software that I will replace) or any of our other suppliers. It is designed this way because they can all be attached at once or in any combination to test different parts of the DUT at once they can also be run locally without the Test system controller to perform debug and development and diagnostic checks. I have this pretty much figured out, the interfaces were set by the rest of the team before I joined, they are using SOAP messaging, so I did what I could and implemented a layer in C# code which acts as a server that talks to LabVIEW and I built a native LabVIEW client. I am happy with this part of the solution. My executive works really well and handles tests well. I found more confidence and happiness after reading a couple of other post that explained a similar situation using QSM architecture. However my solution is a little convoluted due to the teams choice of using SOAP which not handled well in LabVIEW. The overall system is designed this way to remove any knowledge of the testing from the test controller to make it usable in all projects. The only parts that are test specific are the data in the database and the Test VI's (in my case) my executive doesn't know what the test is it just loads the test based on a single parameter in the execute XML received from the Test Controller. OK, now then, my original question was based around the best way to implement what our supplier is doing for this current project. They are effectively running two testers at the same time that work in collaboration to acheive a more complex tests. There is no direct requirement to acheive this straight away but thought it may be worth looking into now as I could add hooks, loops or what ever you want to call them as I can, to help later. They have done this by adding a layer above their tester which is a comms layer. This layer accepts the comms form the Test system controller and then uses a different simplified dialog/protocol to talk to the testers once the SOAP has been decyphered. Sort of like this (excuse the quick and approximate drawing):- I wanted to see how others would approach this sort of thing. Does this make any more sense? This idea seems the most obvious to me and is fairly simple. It envolves an extra layer of communication which I think I could expand my C# interface and use this to work out to which tester the commands should be sent. I hope that atleast this gives you all an idea of what I am doing and hopefully explains why I am not using TestStand. I will try and answer any more questions if I can. Many Thanks in advance for all/any help. Neil.
  13. Was not being cranky, as I said I am just frustrated as I clearly don't know how to get my questions across correctly. I wouldn't go that far, lol! They are TestStand CLD and LabVIEW CLD I think. But I really think my use is a little light for TestStand (it is OK to say I am not really a psycho lol!) and since I have seen a few other Test Executive type questions on the forum I kind of thought my question would spark discussion. I will see what I can use to explain how my system works and get back to you. Cheers, Neil.
  14. As I wrote in my posts above, my code is really a protocol converter that is called Test Executive (as that is what it does). My test Executive is able to interpret an XML message (that is received via a SOAP webservice) and starts/iterates through tests based on that XML message. I have no need to edit test sequences or anything like that. The sequence for testing is held in the XML message. Using a refactoring of the XML I can determine the number of times the test is called etc. Using TestStand to do what I am doing:- I would have to write a SOAP webservice (maybe a service that linked to a .dll or datasocket) that would call to TestStand in probably a similar way that I have already done for LabVIEW. I would have to create something to parse the XML, like I have done for LabVIEW (using the company schema not LabVIEWs). Then I could write a sequence using these items to call test VIs. Currently the only difference to using TestStand that I can see would be using a sequence instead of a state machine. The hard parts of what I have done so far would still have needed to be done for Test Stand. My state machine is a bit complex but at the heart is still a statemachine, a simple architecture that is proven in exactly the same way as TestStand. I may be too rookie with TestStand to know what I am missing but I work with some NI alliance members and they believe my implementation using LabVIEW is good and that TestStand would be wasted for my architecture. Which is why I wanted to discuss ways in which you could potentially create what I wanted in LabVIEW which is to have two of my programs running at once that could work together to perform a test. For instance one sets a RF signal and the other measures it. Maybe either a heirarchy of VIs with a logging in system etc, or to implement a master/slave relationship where one nominates itself as master at start up and if a master quits there would be a shuffle to re-select a new master. I wanted to discuss the use of items like the network queue VIs etc with perhaps debate about what could be interesting code in the end. I have ideas of what to do if on one PC but on networked machines it gets a bit more confusing. However, this turned into a discussion about TestStand which was magnified when the post was moved to a TestStand forum section. How am I going to get interesting LabVIEW responses now? I am annoyed that I am constantly told to use TestStand on a LabVIEW forum, I may not be explaining myself very well or something but I dont get what more I can say! I have had lots of help from the members of this site in the past, I am a bit sad this has been such a frustrating experience. Neil.
  15. Took a while to find this it moved I think. A little background: The complete system is used for testing satellites, and controls all of the satellite during build. There are sub systems for power, configuration, monitoring, testing etc. Therefore the architecture of our testing system is complex and wierdly the test executive I am writing is only a small part one of the subsystems. My executive controls an RF measurement system which contains things like spectrum analysers, network analysers, power meters and switching networks for RF testing. My executives' main purpose is to receive communications from the Master Test System Controller (MTSC) which controls the entire measurement and satellite payload and sub systems. It then decyphers the message, selects the correct test and passes the parameters to the test which is effectively a sub VI. My executive also controls execution of the test, then relays the results as they are captured to the MTSC. The legacy system had an MTSC which was based on Teststand and controlled an in-house RF test system that was an HTBasic relic that lost support and functionality over the years. Our group came to rely on out sourced RF Test systems with teststand remaining. My executive is being developed to claw some of this capability back in house and to fit in to the new system using an MTSC developed in c# by my colleagues. Test Stand does a lot of things but we only used it simply to run sequences. I haven't been in the company long but I understand that teststand has not been used correctly and therefore not worked well. This has led to a redesign. I turned up after the design was created and I already had LabVIEW experience, so I chose labVIEW. It made sense for the tests and talking to the equipment. But has not been simple to implement the SOAP etc. If I used teststand in my executive I would again only use a subset of the teststands functionality and would still have to use a converter for the SOAP handling. The use of LabVIEW in this context is much more reasonable. There is a requirement to have to test systems working together to acheive a certain type of test. This is being done by our outside provider by making the webservice part of the system Heirarchical leader of the test and delegating to the RF Measurments systems. I am certain that it is possible to either add the functionality to my SOAP handler function and have that delegate the tasks to the execs similar to our provider or add a master slave decision system in to my exec. Does it make more sense now? I hope it does, I have asked questions about my executive on here before and have gotten a similar answer of Teststand can do that, try teststand. I believe that for my currently requirements the QSM structure is simple and works fine controlling the messaging and test control perfectly. The ability to control two or more test systems at once has again made me wince with concern that the path I have chosen is the right one specially when the answers are Teststand again. Teststand is not always the right solution and our suppliers are not using it acheive the same thing I want to do so wanted to discuss really if the way they do it is the best. If you were in the same situation what might you do? Many Thanks, Neil.
  16. I have been working on a Test Executive as my main project at work for a while now. It has however been made clear to me now that I could potentially need multiple test executives working together to complete one test. Although this is a way off down the line (I want to think about it now). I would be interested in the way people have used LabVIEW to create a similar set up or how you may go about it. Our supplier uses different language but does this by using a layer about what effectively is similar to my system that regiters the systems and kind of asset manages them. I use a LabVIEW written server that monitors a datasocket for communication from a C# web app I created. The C# converts the SOAP message received in to an xml usable in the the test executive and sends it out on the data socket to the LabVIEW server. This is a seperate VI at the moment that I start when I start the test executive. I was wondering if I raised this VI in the heirarcy to be above the test executive. Enabling the Test executives to register with it and put the handling of the test in the hands of the server which splits the responsilities amongst subscribed test execs. An alternative approach I thought of is to make the test execs have both master and slave capabilities and the first one active becomes master. This throws up the problem of them knowing where to look for the other execs etc. Really not sure how best to implement something like this, any suggestions or help would be greatly appreciated. Neil.
  17. I am sure I have seen this in the old forum but obviously cant search for it now. What I am after is.... when a user clicks on the relevent box with in the listbox control a seperate control is loaded on top with a predetermined set of values for example an enum control. I understand how you could trigger an event based on location of the click and the selected item could then be set in to the list box as a string. Beyond this I cant remember the way this was handled when I saw it previously. At the time I remember thinking "thats neat" but I didn't need ti then so I swiftly moved on. However, the situation I have is that a VI loads a CAN switch set up to a list box. There are several different types of switches that we use regularly in our system and would be better if an enum set the correct switch to avoid spelling mistakes. I know this could have been done using an array of clusters but I personally think it would look better this way. Any help would be greatly appreciated..... Thanks. Neil.
  18. Do you need to use activeX? I am not a very experienced LabVIEW programmer and found that activeX was a bit too advanced to use. Plus I heard that it was a lot of hassle even if you are experienced/skilled enough. I use a format-in-to string function to build my own http header (for a SOAP client and the sam for the SOAP message which is basically an XML with SOAP namespaces) you may want to try it out its pretty simple. I had a couple of issues when starting as it is important to use CRLF for each line of the HTTP Header and then 2 at the end before the body and the body can be just LFs. I can post more code if you like, but, I took most of my queues from the XML-RPC server/client project in the code repository.
  19. I have had a further chat with my colleague and it appears that the client looks at the service to see that it exists. However I am not sure how to expose my application as a website URL. Im wondering if I could just put a case in to my server that responds to a HTTP GET at the URL I want to use. If I look at the localhost of my service using the web browser I get an error back because it does not deal with a GET command properly which may be why I am having issues. I have also been if it is possible to do the required detting up using .NET or activeX to try and mimic the c# server by setting up http binding etc to my VI. Is there any one who could shed any light on this? I saw advice on another thread to use net.tcp.dll in activex. Any help here would be great!
  20. I have had a bit of success creating a SOAP server in LabVIEW that works fine with a single method. Hoorah I thought. I have copied the SOAP messaging by generating the soap encoded XML and TCP headers to post I also watch for the incoming in the server. However, I then tried my server with the C# client my colleague wrote (rather than one I made in LabVIEW). Here is where it all went wrong! I discovered at this point that my colleagues implementation requires WSDL and possibly other things to validate communication or something. The client software is actually an interface simulator that was generated for another company to test their SOAP service comms with ours. Therefore I know the interface works, however, they are using TCL to code there system and java to provide the SOAP server/client. I have read a lot about proxies and WSDL generation etc. and I think this is what I need. I spent some time trying to point the C# client at a WSDL that had already been created I just changed the server info in the WSDL which did not appear to work. I am not sure what is happening in the client code as my colleague is not here at the moment. But I imagine the implementation is a standard C# thing which means I need to have a WSDL of sorts and may be a proxy. I have read of java SOAP implementations using the wsdl.exe tool to create a proxy for the client but my knowledge at this stage is slim. Does any one here have any suggestions as to what I could try? Many Thanks.
  21. QUOTE (Matthew Zaleski @ Apr 6 2009, 09:23 PM) Yeah Thanks, I have been happily using XPath without any issues but the addition of namespaces has seemed to just add headaches. I dont have control of the namespaces this XML is the soap message sent to me from another system. I have been playing around with the LabVIEW XML parser property and invoke nodes as they contain a function to ignore the namespaces but the LabVIEW implementation is based around DOM and I find it really cumbersome after XPath plus I dont really want to re-write everything. Is there any way I can access the namespaces myself (ie namespace manager/nametable (bear in mind I got this info from the net I have only just heard about them and I dont know if I am asking the correct thing lol!))to recover the XPath solutions I have already implemented. Thanks for the help so far. Neil. Sorry, Not to worry chatted to my colleague doing my other system. I am pretty certain that I will always be using the RMS namespace etc. So to make it easier I have the incoming message pass through a vi that removes all the namespace stuff and makes it work again in XPath. Thanks for all your help though.
  22. QUOTE (MJE @ Apr 6 2009, 07:24 PM) Sorry to be an idiot but could you please explain further? I have tried using different namespaces and xpath combinations but cant get any further, are you suggesting that I still use SelectSingleNode method of the xpath class but with a different xpath!?! Thanks
  23. I have gotten used to the awkwardness of XML in LabVIEW but have just come up against a massive problem of using XPath and trying to parse namespaced xml. Basically where XPath used to do the trick it now doesnt because parts of my xml are in a different namespaces. I cant figure out how to get acces to the namespace manager or anything (which is what you need to do according to google). I need to talk to my colleague who has just added the namespaces and made my day very hard, but, I may just remove them for my simple implementation if there is no way round it in LabVIEW. I have attached an example XML where I used to be able to loadXML String and then SelectSingleNode with an XPath of /soap:Envelope/soap:Header/UUID/UUID to get the guid. Any ideas on what to use? I have had a look round in the constructors but cant work out how to do this, is it me or does this just seem like even more hard work, blooming XML :headbang: Many Thanks in advance.. <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <UUID xmlns="http://RMS/"> <UUID>guid</UUID> </UUID> </soap:Header> <soap:Body> <ControlResume xmlns="http://RMS/"> <ParameterList> <Parameter> <Type>string</Type> <Name>string</Name> <Value> <string>string</string> <string>string</string> </Value> <Units>string</Units> </Parameter> <Parameter> <Type>string</Type> <Name>string</Name> <Value> <string>string</string> <string>string</string> </Value> <Units>string</Units> </Parameter> </ParameterList> </ControlResume> </soap:Body> </soap:Envelope>
  24. QUOTE (mesmith @ Apr 3 2009, 05:18 PM) It does indeed, a great write, up thank you very much for taking the time. It clarifies what I worked out today and more. I was uncertain about the internecine avoider.vi, I even had to look the name up on google lol. However after doing some investigating I see that it just negates any TCP port issues, is that correct? I am going to try and investigate the implementation next week after the weekend, if I have any good progress and come up with anything useful to others I will post it up. Many Thanks, Neil.
  25. QUOTE (mesmith @ Apr 3 2009, 04:14 AM) This is the thing, I have the request and response templates for each of the 10 or so methods that will be used. I have already made methods for decyphering the xml in the soap body when used with my SOAP to REST conversion and REST LV invocation. I have written a robust client for the methods in the other direction so, I am familiar with SOAP messaging. Therefore it is literally a server. I dont need a template etc. it will be just (for now) an implementation for this system with methods that map to an older messaging system so we know that the messages are mature and unlikely to change drastically in the future. The problem I had was with the incoming TCP connection, but after looking at your server I see that you use a producer consumer pattern to dequeue TCP references. Is it possible to explain a bit further what you are doing in the server vi? Is there any particular reason that you use the set server vi (I have not seen this before)? I have attached an example of the SOAP methods I have to use they are all pretty simple having a body that either contain a UUID (a GUID provided by the other system to tie the messageing) and/or parameters in xml format. and the response is similar but with an additonal status. POST /RMSInterfaceSim/RMSWebService/RMSService.asmx HTTP/1.1Host: pthaitwebdev Content-Type: text/xml; charset=utf-8Content-Length: length SOAPAction: "http://RMS/TerminateTest" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <UUID xmlns="http://RMS/"> <UUID>guid</UUID> </UUID> </soap:Header> <soap:Body> <TerminateTest xmlns="http://RMS/" /> </soap:Body> </soap:Envelope> HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <UUID xmlns="http://RMS/"> <UUID>guid</UUID> </UUID> </soap:Header> <soap:Body> <TerminateTestResponse xmlns="http://RMS/"> <TerminateTestResult> <Status>int</Status> <Message>string</Message> </TerminateTestResult> </TerminateTestResponse> </soap:Body> </soap:Envelope> Many thanks for any help!! Neil.
×
×
  • Create New...

Important Information

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