Jump to content

Kas

Members
  • Posts

    55
  • Joined

  • Last visited

  • Days Won

    1

Kas last won the day on December 26 2012

Kas had the most liked content!

Profile Information

  • Gender
    Not Telling

LabVIEW Information

  • Version
    LabVIEW 2012
  • Since
    2003

Kas's Achievements

Newbie

Newbie (1/14)

1

Reputation

  1. Above FFTW only works for 32 bit versions. It was simple enough to grab the 64 bit DLL version from FFTW website and replace it. Attached is for both 32 and 64 bit version. LAVA_FFTW (32 and 64 bit).zip
  2. You are right, but since my University work (Electronic and Physics), any programming work I've needed was done by trial and error. I concentrated fixing the problem without thinking of how. So now my brain doesn't work until I start coding and fix whatever needs fixing along the way. In the end, Panic time arrives and I'm off to LAVA . I've been using LabView for a long time, but its always been on-and-off. Its only recently that I'm more invested on it and I'm finding it rather difficult shaving of the bad habits of programming I've accumulated over the years. It was very easy to learn LabView the wrong way .
  3. Hi Shaun. Would it be of any help if start doing a flow chart of the execution functions of the program? I haven't done it yet, but I just wanted to check if it would be of any help. Kas
  4. Well, I wouldn't have approached it this way but if you really need to, then just use this error message code as an indicator if the file is already open or not. i.e. check if you are receiving this error 5, and if so then you know the file is already open. Are you trying to write to this file or deleting it, or trying to open it again? Kas
  5. I definetly agree with you in this. Initially, I was planning on having the "Upload VI" as nothing more than a very simple VI that does nothing more than reading the updates, logs etc. But as the project went on and new functionality that I wanted to add to the main VI, then the Main VI became too congested and I started making the Upload VI more complicated until it became what you see now. Having separate modules for this, and having a communication link for data and messages for these modules would certainly be the way forward, but unfortunately, I'm used to statemachine type of structures and not much in module based work. I started thinking on how to handle different errors, i.e. have each module sort its own errors out or delegate them to a central error handling module, where error logging then comes into play. While all that is going on than I remembered various race issues that can creep up (specially if I continue using my current framework), and somewhere around here my head started hurting . So I thought coming here and get some help along the way .
  6. Hi Shaun. I just sent you the account details. And no, there is no deadline for this project. After using "Usenet" for sometime now, I saw something that I needed and I started this on my own.
  7. Haha. I do, I remember from this thread, for both you and Daklu. http://lavag.org/topic/16154-qsm-producerconsumer-template/#entry98307 Correct, currently the Main VI does this through the "Check Availabiltiy" state. However, I'm worried the way that I am doing this may be abit of an overkill. i.e. I'm thinking that there should be a much easier way of doing the same operation that would result is less confusion. Usually, the simplest method is the best method, and I'm worried I haven't approached it that way. 0 So far, the main VI keeps track of all the jobs (i.e. Uploads and Downloads) through their properties of queues where they were initially generated from. Their state such as Pause, Cancel, Exit, Ready, etc. is kept track by the main VI and when the right conditions are met, the token is then given by the main VI to the right job. When that Job is paused, the Main VI then goes through the list again and checks the next Job that meets the right criteria, and so on. Well, the Upload VI, has 3 such loops. The Progress loop, the Log loop and Pre-processing loop. The progress loop updates the progress of the Upload VI (i.e. the progress bar, speed etc.) where the same values are then also sent back to the main Update loop of the Main VI. The same happens with the Log loop, where the log indicator of the Upload VI is Updated and the same log is also sent back to the Main Log on the Main VI. I kept this loops seperate because depending on the amount of Logs generated or the Updates, I didn't wand to occupy the Main loop that deals with Uploading articles itself. I will also try and buy a block account from newsreaders so you can also run the program and see how it works. I will post the information as soon as I'm finished. In the mean time, tweaknews https://www.tweaknews.eu/?page=order&product=1 seem to be providing free accounts for 10 days, but since I've used it in the past I can't create another account with them. Thanks Kas
  8. Ayayay, when things happen they all seem to happen at the same time. I get the attached error when trying the built specification. I think this may have to do with clashes between various VIPM packages that I've installed. I have to go though them and sort this out later. As for the files itself, I'm now providing the full folder in my current LabView version i.e. 2012. As usual the link is below since the attachment is bigger than the forum allows. https://mega.co.nz/#!oA8SnRrJ!Uop2vwECVGQk_pCsovLhFnb9kCwtEwc0VMvD6ZVVm8E As for what you've just mentioned Shaun, you are correct. The main VI first initializes the whole set of connections and then provides the exact same ones to all the jobs waiting. However, the main VI organizes and makes sure that only one of the jobs (i.e. either downloading or Uploading) can use the connection at a time. The reason I provide them all with the same connection is that when a job or process is paused, the next job in the main queue waiting starts to work straight away, since the previous job is now paused and no longer using these connections, the next job can now start using them until finished or the user pauses that job as well, and so on. Kas
  9. Hi guys. This actually follows very closely to what Shaun suggested. The only difference is that it uses an intermediary VI i.e. in this case its the Upload Main VI. This upload main VI throws asynchronously called VI's for each connection. In this example maybe 30 asynchronously called VI's where they individually Upload a piece/chunk of data to the server and when finished they are closed and the TCP connection is passed back to the Upload Main VI for reuse again. This is shown in the "TCP: Upload" state on the "Upload Main - GUI". On that state I call "Upload Article" asynchronously where 1 call is 1 TCP connection. Also, Attached I cleaned up the files a bit and placed them into a project as Daklu suggested. All the relevant VI's should now be there. Thanks Kas P.S. I'm using some of Shaun's VI's for calculating the percentage and Transmission speed , I found them from one of the examples in the forum (I think it was something to do with Bluetooth connections) Oups, for some reason this thread is not allowing me to Upload a file that bigger than 733.62K. My ZIP file is 1,184 KB. So please use the link below instead. https://mega.co.nz/#!NMdUXbLI!IxWKyhj8zrq60S2xOL4Mc3VTPC12qCsL3F00nxbrN4Y
  10. Hello I'm currently writing a personal application that deals with NNTP server protocol (i.e. a command based TCP communication) related to binary Usenet newsgroups. This application will be used for general data backup on Usenet. While I have nearly finished the application itself (and it works), I am drastically falling into various problems, mainly parallel execution of various SubVI's and handling various errors within them. Nearly all of these problems seem to come from a lack of a solid framework for the whole application itself. The amount of commands that I'm dealing with are very few, (around 5) so building a basic version of this application is straight forward. However, my application follows the functionality similar to "Internet Download Manager" or various download accelerators that are found in internet, and this is where majority of the complexity is situated. And so, I'm hoping if I can get some help/pointers in 2 categories. 1. I keep having a TCP Error 1 problem. So, a user may select to have up to 30 TCP connections simultaneously to the same server and port (I have tested this and it is supported). However, every once in a while, a TCP connection is timed out (this is normal). This connection is than closed (By sending a "QUIT" command) and opening a new one in its stead. So far all this works. The problem comes when trying to use this same connection for operations again. Every time I use it, it throws a error 1 out. and I cant seem to get rid of it. 2. This may be a more difficult problem to deal with since its more of a framework problem. I really want to use a proper programming structure for this application, but I've been using state machines, QMH based structures for a long time now, and I can't get out of this habit. The way this app is designed is full of holes, and I would like to make a proper structure for it. Unfortunately, I'm not into OOP programming yet so I went with normal Labview programming structure. This may also solve the problem 1 above. Attached is a ZIP file that I've included everything so far. The program itself is not yet finished, but it works with basic uploading operations. Everything is down-converted to LabView version 2009, but if there are any VI's missing then please let me know and I'll provide them. Again, any solutions, thoughts are most appreciated.
  11. Kas

    yEnc Decoding

    Hello. Apologies for bringing this thread back again but I thought this is relevant to the thread. Attached are some VI's that encode the message and prepares it for NNTP protocol. This includes the header, footer and encodes the message or file. The attached example however seems to fail but the failure seems random. When the whole message is prepared, it is sent through using the TCP/IP but conforming to the NNTP commands structure. Below are steps that I use to send the data to NNTP server. NNTP Communication structure: 1. A server Address and Port is established. 2. User Authentication is carried out. 3. NNTP Server capabilities are checked. 4. Prepare the NNTP server to receive the data through the "POST" command. 5. First the main Header information is sent (i.e. information like "From", "Group Names", "Message ID" etc.). 6. Main data is then sent. 7. Check if the data was sent successfully. All the above steps come back as successful. Basically, all the steps 1 through 7 are OK when the data is sent. However, when the whole file (around 500 MB) is sent through by repeating the above steps, I also save the unique Message ID's so that the same file can be downloaded later on. On this process, as soon as the file upload is finished, I go back and re-check the upload again using the "STAT" command, and even though its only few minutes later, the file doesn't seem to have been transmitted properly. There seem to be some pieces missing. Its as though those pieces no longer exist on the NNTP server. This process is also shown in the attached image. So far, I have traced the problem to how the encoder is working and how the message is prepared in general. For those that are not too familiar with NNTP protocols, the link below provides an introduction. http://www.javvin.com/protocolNNTP.html For those that are not too familiar with yEnc Encoding, the link below provides an introduction. http://www.yenc.org/develop.htm Sorry for providing reading material for this. I know that chances for help are greatly reduced if a person needs to read and learn before helping, but I'm hoping that someone may be allready familiar with the two concepts (yEnc and NNTP). One of the problems that may contribute to this may be the yEnc Encoder. All the encoded lines should be constant in size (i.e. 128 bytes excluding the End-of-Line character). Looking at the attached encoder, it doesn't seem to guarantee that. The last line of the encoded message will obviously be less then 128 but based on the codding the previous lines seem to be either 128 characters long or 129 characters. This should however be always 128 characters plus the end of line. If anyone has a quick fix on this it would be great. I can than test and see if the situation improves. I apologize for making this a long post, and if anything more is needed than please let me know. Kas
  12. Very true. If you are new to Labview, new to various control architectures, new to electronics involved etc., then I would seriously sugest that you choose or amend the project that makes use of your current knowledge. Otherwise, majority of your time will be spent on research that you may or may not understand rather than doing the project itself. As for the project itself, it sounds good.
  13. I haven't really looked into that, but it wouldn't resolve the issue even if they do. Trouble is getting away from this 2GB limit. One workaround would be to go through cmd prompt, but I was hoping the native solution would work.
  14. Has there been any more headway towards this? I get the attached error with files <2GB. The zip file is created up to 2GB but then the error comes up. I'm using LabView 2012 32bit in Windows 7 64 bit. Thanks
×
×
  • Create New...

Important Information

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