Jump to content

alexadmin

Members
  • Posts

    13
  • Joined

  • Last visited

    Never

alexadmin's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. QUOTE (Mads @ Apr 10 2008, 02:49 PM) My test applications is used for familiarity with Labview. I analyze LabView adequacy for our tasks. We plan to produce several hardware boards (USB, PCI, PCIe) for demodulation, telemetry, etc. The planned rates is up to 6 MB/s for full data logging and maximal available momentary rates (depended on used bus) for data window capturing (PSD graphs printing, oscilloscope, raw signal form analyzing). QUOTE You can generate up to 3MB/s and the file IO will handle that, the data formatting will not run any faster. Hmm. Finally, it is a sad. 10 years old borland compiler gives 20 Mb/s in this case. Perhaps we would use LabView for GUI and simple data server for data logging with communication between them via sockets. QUOTE Unrelated to the problem at hand, but a tip for the future: The code can be written much more compact (both in logic and display size)..attached is a picture of basically the same approach(no optimization of the logic though, that is still the same as in your speed test). Not the optimal code that either, but much easier to read. Thank you. I will try
  2. tcplomp, thank you for interes. I tried similar structure before. I have implement your example. For unkown reasons the result is worse than previous. It gives 120-140 kb/s only. QUOTE (Mads @ Apr 10 2008, 02:22 PM) Oh, how did you get this value? I tried to use Profiler but cannot vanquish it ;-) Thank you for suggestion. I will try it now. PS I have based on limitations of USB driver - it has buffer ~64 kb. So I need to read it every 30-40 ms (maximum).
  3. QUOTE (PJM_labview @ Apr 10 2008, 04:37 AM) My test model above (speed_test) makes the similar thing - writes chunks of binary data from queue. But the problem is in data generating (processing). Processing limit is about 250 kb/s. Procesing consist of reading new byte from array, converting to hex (text) representation and putting into queue.
  4. I make new example which does not depend on USB device and more compact. It based on example model of UDP logger and some suggestion above. It uses queue to transmit data between parallel process. The source process generates data from predefined array and put it to queue. The output process reads data blocks from queue and writes one to file. The running period of both process are controllable from front panel. I perform experiments with various array size/read/write period and found that maximum speed is about 260 kb/s when writing to file is enabled. I suppose the problem is not writing to file but performance in a whole. But I cannot have any new implementation ideas.
  5. Yes, you a right about big data packetss - it gives considerable increasing of transfer rate in test application ;-) I know about unefficiency per-byte I/O but I didn't wait so huge degradation. I didn't flush buffers manually so physical writing must be performed by I/O library automatically. Ok, I slightly change my application - now it uses "format into string" with buffering data instead of "format into file". Unfortunately the result is worse. I attach my model - it cannot work without FTDI USB driver but shows my implementation. It reads data from USB port and writes to file in hex format, 5 bytes per line. Could you help me to find bottleneck in the design, please?
  6. I had try to capture ~1Mb/s data flow from hardware and write it to text file (with some formatting). But the problem was found: my Labview writes file with speed less than 100 kb/s. I attach the simple example (it is need to set correct file name) - it takes ~10 minutes to write 50 MB file . Where am I wrong? Certainly, I work with modern PC (Pentium iV, SATA HDD, etc). The program built with c++ has no such problems.
  7. I have developed simple application and build executable. I want to add any auto-incremented version information to front panel. It can be VI's revision number or File Version Number of executable. How I can get these data? I know that FileVersion can be extracted with system calls (via dll, for example) with several screens of c++ code. Is there more easy solutions? Thanks.
  8. As a result I decide to not use VISA USB RAW driver. Now I use native FTDI driver via functions exported from driver dll. It works fine.
  9. I try to operate with custom USB device based on FTDI FT245R chip. It works via VISA driver. I can succesfully write data to device. But reading causes some problems: If reading performed when no data available from usb then reading count is 2 and data are 0x31 0x60. If reading performed when data from usb present then reading count is two bytes more then real data present and first bytes are 0x31 0x60, next data is correct (from usb device). This occurs in LabView while reading via "VISA Read" block as well as while reading in VISA Test panel. What can cause this behavior? Any ideas?
  10. QUOTE (ned @ Mar 18 2008, 03:11 PM) Yes, exactly. I put all elements including buttons inside Event structure and it began to work correctly. Thank you very much.
  11. QUOTE (JFM @ Mar 18 2008, 02:17 PM) Ohh... There are a lot of new words about LabView for me ;-) I try to analyze them and read respective help. Also I have attached my example model. The buttons I said is LED1..LED8; String3 and String4 are calculated value outside and inside of Event structure. Thank you.
  12. I have several boolean buttons configured as "Switch when pressed". The integer value is calculated based on state of these buttons. Also I have Event structure which should run on changing of any button state. Event structure uses calculated value inside. I add "Value change" of whole buttons to handled events. Event succesfully runs on any buttons but value of integer inside Event structure is old. In other words, the value inside Event structure updated 1 event later than actual value outside one (like D-trigger). I suppose the reason of this behaviour that Event runs momentary after pressing button and data from button cannot propagate to Event structure's data input. What can I do to get actual value when event runs? Is it possible to run event after all data propageted throw math blocks to data input of Event structure? PS Sorry for strange questions. I work with LabView 3rd day only
  13. I have integer number in the range 0..255. I want to convert it to char with respective code. For example, I can write in the C language printf("Char: %c\n",ch). In LabView (block diagram) I found block "Format Into String" which is similar to printf() function. But it does not have support of %c specifier. So, how I can perform described conversion? Thank you.
×
×
  • Create New...

Important Information

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