How to count digital pulses?

I am using usb-6501 to read in 12 distinct digital pulses and want to know how to count the pulses. The 6501 has only one counter channel so I am looking for a software/labview program option to count pulses for each channel individually. 

Do you need to know when they change or just how many times they changed? Also how fast are they changing?
Mike ...
Certified Professional Instructor
Certified LabVIEW Architect
LabVIEW Champion
"... after all, He's not a tame lion..."
Be thinking ahead and mark your dance card for NI Week 2015 now: TS 6139 - Object Oriented First Steps

Similar Messages

  • How do I count digital pulses and convert them to an x-axis unit?

    I am a grad student in Chemistry and I have undertaken a project to switch an old spectroscopic instrument from a stepper motor chart recorder to a digital interface. 
    I am using Labview 7.1.
    I just measured the signals coming from the instrument, so I know exactly what I am working with.
    I have one constant, 100mV, digital pulse--which was used to drive the stepper motor a set # of wavenumbers for a given amount of pulse. I need to convert this signal to correlate with wavenumbers--on the x-axis of my final waveform graph.
     The other signal is an analog signal, up to 250 mV, which is coming from a photomultiplier tube and represents my y-axis of my final waveform graph.
    I am using the NI BNC-2110 DAQ board. 
    Should I design the program based from just the AI Aquire Waveform.vi? Add a Count Events or Time vi. for the digital pulse?
    Could anyone give me some hints with my initial setup/layout? 

    Hints:
    Figure out what is the modle number of your DAQ device. I think the model you cited is just a break-out box.
    Depending on your hardware you may be able to use the step pulses to clock your A/D conversions.
    The number of sample will be the number of steps so all you need is a conversion factor to convert sample count totoal to wavelength.
    Others may offer better ideas so stand by.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • How to count TTL pulses during 100ms ?

    I need to count TTL pulses coming out of an instrument (particule
    counter). The pulses appear randomly. I must count how many pulses
    appeared in the last 100ms, and so on, every 100ms. I don't want
    cumulative counts, but the number of events every 100ms.
    I need a hardware clock, so that the counting pace cannot be disturbed
    by Windows making some weird, unrequested, CPU-hungry task.
    I fact, I need to do that for 2 identical instruments of the same kind,
    and I have 2 cards with 2 counters each, total 4 counters. My idea
    would be to use 1 counter as the clock for 2 other counters, but how to
    trigger the counter value read ?
    Thanks.

    Hi,
    In the example I gave you, you need to supply the TTL you want to count the pulse (connected on pin 37) and a TTL "clock"  which is connected to PFI0. The TTL on PFI0 permits a hardware timing (100ms for example) to count the edges that occur on the TTL source.
    If you do not need hardware timing, have a look at the example attached. You only have to connect the TTL source and the VI counts every 100ms (software timed) the edges that occur durind those 100 ms.
    Hope it will help you,
    Regards,
    David D.
    Application Engineer - NI France
    01-02-2006 01:26 PM
    Attachments:
    Compatge des fronts toutes les 100 ms.vi ‏61 KB

  • How to count the pulses of an incrementa​l encoder with PCI-6010?

    Hi everyone,
    I am trying to use an incremental encoder and PCI-6010 card to measure the speed of a rotary shaft in Labview 2011. I need to use the counter to count the numbers of the pulses that the encoder generates but I have some problems there to do so.
    I connected the encoder signal to the counter source (PFI0) and built a daq assistant block in the Labview (Acquire signals -> Counter Input -> Edge Count -> ctr0) and it is set as shown in the figure. The problem is that no matter how I turn the shaft the measured value will always be 0 although the pulses can be seen very clearly on the O-scope. 
    I suppose I must have made a very simple mistake. Could anyone help me on that please?
    Thank you.

    Hi YShZh,
    The current Acquisition Mode setting is set to "1 Sample (On Demand)" and will therefore only ever give you the first count value.  The fist count value is equal to the initial count value, which in your case is 0.
    Try changing the acquisition mode to either N Samples or Continuous Samples.
    Kind regards,
    Marshall B
    Applications Engineer
    National Instruments UK & Ireland

  • How to count TTL pulse by DAQ through BNC 2090?

    I'm trying to count the TTL pulse from a APD by DAQ. There are some very nice discussions about this issue in this board. However, I am a novice and not sure about the hardware connection. The signal from APD is delievered out through a BNC cable and I'm trying to deliever this signal to DAQ through BNC 2090. I tried just simply connect the BNC cable to ACH0 and tried running the vi's, such as "Count_Edges.vi" and "Count_Events.vi". But I got no counts. I noticed that both these vis are actually reading signal from PFI port. That could explain why I got not counts.
    So now the problem is how should I connect my signal in a BNC cable to the DAQ and have the counting working? Thank you for your help.

    Hi Opal,
    Here is what you should do for the hardware connections with these devices:
    - connect your external signal to the BNC-2090
    - connect the 68 pin connector on the BNC-2090 to the 68 pin connector on your DAQ board. You should have a 68 to 68 pin cable for this.
    That is all that is involved with the hardware connections. After this, you should be able to read your signal. Here is the link to a helpful DAQ manual with in depth getting started information: DAQ Getting Started Guide. I hope that you find this information helfpul.
    Regards,
    Hal L.

  • How to generate digital pulses to run stepper motor in a sinusoidal motion profile using NI DAQ 6229 card

    Hi,
             I need to make a stepper motor undergo rotary oscillation with a sinusoidal motion profile. As it nears the extreme points it should decelerate and finally slow down to zero velocity and then it should reverse direction and accelerate until it reaches the other extremity where it should slow down and stop and reverse direction and repeat this motion.
            The hardware is NI DAQ 6229 and the stepper motor can be controlled using digital Hi-Low (1,0) pulses. For each high pulse(1's) the motor turns 1 step. I am able to generate a analog sine wave and convert it to digital data using Analog-to-Digital.vi  But i am not able to convert the digital data to a stream of 1's and 0's in the correct sequence to get the sinusoidal profile with the amplitude and frequency i require.
            The direction of rotation can be changed by giving a pulse to another input of the stepper motor. So only half cycle of sine wave needs to be generated and it can be replayed after changing the direction to get the full sinusoidal profile.
    Any ways of making this approach work or any new approaches to this problem would be helpful. Thank You.
    Regards,
    Prabu.
    Solved!
    Go to Solution.

    Hi,
             I finally figured out a way to do it. The analog sine wave is converted to digital and sampled. Consecutive values are compared and if the least significant bit(LSB) changes then a pulse is sent to the stepper motor to turn one step.
    I have included the sub-VI's that accomplish it for the particular stepper motor and connector block i have. The front panel of both sub-VI's are quite messy but the block diagrams should be much clearer. The sub-VI's get their inputs from a third VI which i have not included. So take a look at the VI connector panel to figure it out. Hope this helps. Kinda messy but worked out fine in the end for my application. 
    Thanks again for all the help. I appreciate it very much.
    Regards,
    Prabu Sellappan
    Graduate Student
    Aerospace and Mechanical Enggineering
    University of Southern California
    Attachments:
    start motor test waveform dtest.vi ‏73 KB
    sine profile generation subVI.vi ‏41 KB

  • How to count the no of digits entered in the NumericField & print the same

    Hi!
    How to count the no of digits entered in the Numberic Field and print the content of Numberic Field.
    Thanks.

    Hi Venkat,
    To check the number of digits, just convert it to a string and use the length() method. to get the number of characters. However, I am not getting your second point of printing the number?
    Kindly explain in detail.
    Regards,
    Poojith MV

  • How do I count arbitrary pulses from an oscilloscope with labview

    I am looking at arbitrary pulses on a TEK 2024B oscilloscope.  I want to use LabView to count those pulses and record a time stamp for each pulse (perhaps to an excel spreadsheat).  The duration of the measurement is over ten minutes and the pulses, on the average, occur once per millisecond.  How do I count/record these pulses with LabView?

    Jay,
    I would start by downloading the Instrument Driver for the 2024B from ni.com/idnet It should have the functions that the scope is capable of implemented there. If you have problems using the driver please post back.
    -Marshall R
    National Instruments
    Applications Engineer
    One stop for all your NI-VISA Support
    GPIB Support has a new homepage

  • How to send/recei​ve digital pulses through parallel port?

    Hi, im working on a project to send/receive digital pulses through parallel connection. I need to control the frequency of the pulse sent as my device communicates through negative triggering of the digital pulse. How to use LabVIEW send and capture these waveforms?

    Here's a good place to start:
    http://zone.ni.com/devzone/conceptd.nsf/webmain/72​C6FC6CE4AD4D1386256B1800794596?opendocument
    2006 Ultimate LabVIEW G-eek.

  • Finite pulse train generation​... how to count number of pulses?

    hi guys,
    this has probably been solved a hundred times but i just couldnt find it!!
    i have a pulse train generation happening on my ni usb-6211... using FREQ OUT, using a divisor on this, and routing it to PFI4.
    id like to update my VI so i can specify the number of pulses....
    im pretty much a noob at this stuff so any help would be greatly appreciated!! thanks!
    dan
    Attachments:
    pulse train generation.vi ‏25 KB

    Hi,
    No problem at all, we are here to help. What I’m going to do first is to point you to a bunch of examples for that might give you a better insight of the capabilities of the card in terms of finite pulse generation. What you should be looking at is called retriggerable pulse generation and here are some examples to look at: Retriggerable Finite Pause Trigger Digital Pulse Train Generation, Creating a Delayed, Retriggerable and Finite Pulse Generator, DAQmx - Retriggerable Pulse Train Generation - LabVIEW - CVI - ANSI C - VB.NET - C#.NET and Retriggerable Finite Pulse Train with Changing Pulse Specs.
    Let me know it helps
    Jaime Hoffiz
    National Instruments
    Product Expert
    Digital Multimeters and LCR Meters

  • How to combine Digital Output, a delay and Analog Input in a fast loop

    I need to develop a process loop that runs at least at 250 Hz that performs a Digital output, than a delay of 50 microseconds and than an analog input of all the channels. All will be done using ATI MIO 64E3 card. Of course, the acquired data will be processed, displayed and saved. The loop will be running for several minutes until user stops it.

    The fastest and most precise timing will occur if you use hardware timing. You can apply hardware timing to analog input on the E Series boards, but not the digital lines. Let's focus on the analog input first. Continuous waveform scanning uses a scan clock, which can be the board's internal one or an external one which you apply. If you want to scan all the channels 50 microseconds after a digital rising edge, then you need an external signal to signify that scan clock.
    The E Series boards also have 2 counter/timers onboard that you can use for this purpose. You can set up a retriggerable pulse generation operation, where the counter receives a trigger and then on the user specifications, produces a pulse. You can have that route to the analog input scan clock.
    The trigger signal for the counter is that digital pulse. As I mentioned earlier, there is no hardware timing for the digital lines on an E Series board. We do have other digital boards (653x family) that have hardware timed operations if precision is important. If you are satisfied with software's resolution (in the milliseconds), then you can call the E Series board digital function in a loop with a software timer. That digital line can route to the counter to act as the trigger.
    So, on the programming side, you can have three separate and independent operations in parallel. One is for the digital function to output on that line every so often. Another is for the counter set at the retriggerable pulse generation. The last is for the analog input. I will describe this in terms of LabVIEW, but it can be done in a similar fashion with the NI-DAQ function calls or Measurement Studio.
    The digital examples are in the LabVIEW >> Examples >> Daq >> Digital >> E-Series directory. The Generate Retriggerable Pulse example is in the LabVIEW >> Examples >> Daq >> Counters >> DAQ-STC directory. The E Series boards use the DAQ-STC timing chip.
    Go to the LabVIEW >> Examples >> Daq >> anlogin >> strmdisk.llb directory and start with the Cont Acq to Spreadsheet File. This shows how to continuously acquire data and stream it to disk while displaying the data on a chart. Streaming to disk is the efficient way to save data while you are acquiring, as it eliminates the overhead of always opening and closing the file through the iterations of the loop. This saves to a file that can be opened by other applications (Excel, Word, etc.), but it is not as fast as writing to a binary file, which must be opened and read back through LabVIEW. However, for your ~250 Hz rate, it should be fine. Then, go to the LabVIEW >> Examples >> Daq >> anlogin >> anlogin.llb and look at the Acquire N Scans -ExtScanClk example. This shows how to apply the scan clock. Here, the AI Start that you saw in the previous example is replaced by 4 VIs (3 AI Clock Config's and the AI Control). Make those changes to the first example and then add a constant 0 to the AI Control parameter for total scans to acquire. That specifies the continuous operation. The File >> VI Properties >> Documentation menu item of the example describes the physical connections.
    If you aren't using LabVIEW, use the NI-DAQ User Manual and the NI-DAQ Help file installed on your machine. You can look at your AT E Series User Manual at the http://www.ni.com/manuals pages for more information on the hardware. Also, if you want to route those signals internally on the board, you can find some entries in the KnowledgeBase at the http://www.ni.com/support pages.
    Regards,
    Geneva L.
    Applications Engineering
    National Instruments
    http://www.ni.com/ask

  • How to send trigger pulse for every 0.25 sec until user stops the task?

    Hi All,
    Iam using NI_DAQ PCI 6221 Card for the Data Acquisition.
    Can any body please tell me how to send trigger pulse for every 0.25 sec until the user stop the task??
    Please suggest me the methods I should use to meet this requirement.
    Thanks In Advance,
    Sindhu

    Hi Sindhu,
    Am I correct in thinking that you do not want to use your 6221 to output a digital pulse, but that you are getting a digital pulse from somewhere else that you want to use as a trigger for the analog input?  And you will have more than one trigger?  If this is the case, then it can be accomplished by doing a retriggerable operation.  The way that this works is you use the counter on your board to generate the sample clock for your analog input because analog input cannot do retriggerable operations with its own sample clock.  You can modify the example GenDigPulseTrainContinuous_DigStart that is in the same location as the example I referenced before to be retriggerable by using the property DAQmxSetStartTrigRetriggerable.
    After doing that and testing to make sure that it works, you can setup an analog input task like the example ContAcqVoltageSamples_IntClk but specify the source of the sample clock to be the internal output of the counter you used in the counter portion of your program.  If you need help with the terminal names (You will need to use Ctr0InternalOutput for example), you can reference the NI-DAQmx C Reference Help at Start >> Programs >> National Instruments >> NI-DAQ.  After doing this, you will acquire the same number of samples as the number of pulses you choose to generate in the counter portion of your code every time a trigger is received.
    Also, I have come across an example that does retriggerable analog input using the counter as a sample clock in C++.  Either by using this example or modifying the shipping examples as I stated above you should be able to achieve what you are trying to do.
    Let us know if you have any questions.
    Thanks,
    Laura

  • Niscope for pxi5105, use a digital pulse signal to control analog signal sample

    i want to use ni-scope to drive pxi5105. And the PFI1 connect to a digital pulse signal(10KHz, 0-3.3V), to control a single channel analog signal continuous sample(Chan 0). I want a loop when the digital signal falling, the analog singal start to sample, and when the digtal signal rising, the analog singal stop. And by the low level of the digital singal, the analog singal sample (coupling by DC) can get an average and export to txt. I have tried the "start_and_reference_trigger.vi " and it did not work correctly. i need your help, thank you very much.
    Attachments:
    start and stop triggers for analog sample.vi ‏94 KB

    Hi Phil,
    The SCC carrier is only conditioning your signals (i.e. if your signals are not in optimal ranges, bandwidth or need external excitation). The actual counters and all digital lines are controlled directly by the M-series board. This means you will never be able to refer to a counter in the SCC module.
    If you route the signals of the M-Series board, is as if you had done so externally from the SCC. Look at this example and might give you more insight to how to implement it (This is software timing). The hardware timing would be doing correlation DIO. Here is an example that needs to be modified to adapt to your timing: http://zone.ni.com/devzone/cda/epd/p/id/4414
    Hope this helps,
    Yardov
    Gerardo O.
    RF Systems Engineering
    National Instruments
    Attachments:
    Finite Dig Output High.vi ‏31 KB

  • How to count number of edges using PXIe-6363 Counters

    Hello,
    I am trying to count number of edges in a test signal in a 50 ms duration. I am using PXIe-6363 card and connecting the test signal to CTR 0 SRC (PFI 8). Is it a correct connection? What else do I need hardware-wise to make a correct set up for this application?
    Thanks
    Jeet
    Solved!
    Go to Solution.

    Hi Jeet,
    When you say interrupt signal, do you mean a pulse that will pause your counter task? If that is the case, and you want to pause your task with a digital pulse, you need to use the DAQmx Trigger Property Node and set that to Pause, Trigger Type. As you said, you can connect that signal coming from the chip to any PFI line and then set that line as the source of the property node.
    There is an example that you can use that does exactly what I just described. This example is called Count Digital Events-Pause Trig.vi, and you can find it by going to Help>Find Examples..., then on the NI Example Finder window go to the Browse tab and navigate in the folders to Hardware Input and Outpout\DAQmx\Counter Measurements\Count Digital Events.
    Regards.
    Jorge
    Applications Engineer
    National Instruments
    Certified LabVIEW Associate Developer (CLAD)

  • How to get digital signature for Google Map geocoding V3 in PL/SQL?

    Hi, Gurus:
        Could anyone provide me an example about how to generate digital signature for Google Maps service v3 in PL/SQL? We tried to upgrade our program using Google maps service from v2 to v3. We are using PL/SQl on background to send request to Google for geocoding. We found some sample code to register with digital signature, but none of them is based on PL/SQl. Notice I used Google business client ID "gme-XXX" and wallet.
    https://developers.google.com/maps/documentation/business/webservices/auth#digital_signatures
    Google Maps API - more URL signing samples
    Here is my code for V2. I notice in order to get signature, I need to use HMAC-SHA1 algorithm.
    procedure Get_Geocoding(P_s_Address in varchar2, P_s_Geocoding out varchar2, P_n_accuracy out number, P_b_success out boolean) is
      l_address varchar2(4000);
      l_url varchar2(32000);
      l_response varchar2(3200);
      n_first_comma number;
      n_second_comma number;
      n_level_length number;
    BEGIN
      /* TODO implementation required */
      l_address:=APEX_UTIL.URL_ENCODE(P_s_Address);
      l_address := replace(l_address,' ','+');
      l_url := 'http://maps.google.com/maps/geo?q='||l_address||'&'||'output=csv'||'&'||'client=gme-XXX';
    l_response := utl_http.request(l_url, APEX_APPLICATION.G_PROXY_SERVER, '/u02/app/oracle/admin/apexsb/wallet', 'XXXXXXXX');
      n_level_length:=0;
      n_first_comma:=instr(l_response,',',1,1);
      n_second_comma:=instr(l_response,',',1,2);
      n_level_length:=n_second_comma-n_first_comma-1;
      P_n_accuracy:=0;
      if n_level_length>0 then
      P_n_accuracy:=to_number(substr(l_response,n_first_comma+1, n_level_length));
      end if;
      l_response:=substr(l_response,instr(l_response,',',1,2)+1);
      --dbms_output.put_line('In function: l_response ='||l_response);
      P_s_Geocoding:=l_response;
      if (P_s_Geocoding<>'0,0') then
      P_b_success:=true;
      --dbms_output.put_line('true');
      else
      P_b_success:=false;
      --dbms_output.put_line('false');
      end if;
    END;
    Thanks!

    Hi, guys:
        I tried to generate digital signature for Google map service
         Maps for Business: Generating Valid Signatures - YouTube
        Generating an HMAC-SHA-1 Signature Using Only PL/SQL
          OAuth and the PL/SQL | Data Warehouse in the Cloud
       but I got error message from Google:
    Unable to authenticate the request. Provided 'signature' is not valid for the provided client ID. Learn more: https://developers.google.com/maps/documentation/business/webservices/auth
       I think there is something wrong with my code to generate signature, as if I remove the part regarding client and signature, it will work, can anyone help me on this problem?
    /*Procedure Get_Geocoding is used to get geocoding with accuracy level for V3 business account, you can find Google map digital signature descrirption from
    https://developers.google.com/maps/documentation/business/webservices/auth#digital_signatures
    if geocoding is 0,0, procedure returns false to indicate failure of get geocoding*/
    procedure Get_Geocoding2(P_s_Address in varchar2, P_s_Geocoding out varchar2, P_n_accuracy out number, P_b_success out boolean) is
      --private key for Google business account, this is provided by Google with client name.
      l_private_key_src varchar2(200):='xxxxxxxxxxxxxxxxxxx';
      l_private_key_b64_alter varchar2(200):= translate(l_private_key_src,'-_','+/');
      l_private_key_bin raw(2000);
      l_client_name varchar2(100):='gme-xxx';
      l_signature_mac raw(2000);
      l_signature_b64 varchar2(200);
      l_signature_b64_alter_back varchar2(200);
      l_Google_service_domain varchar2(200):='http://maps.googleapis.com';
      l_address varchar2(4000);
      l_url varchar2(32000);
      l_path varchar2(32000);
      l_response varchar2(32000);
      l_page UTL_HTTP.HTML_PIECES;
      n_actual_length number;
      json_obj json;
      json_tempobj json;
      jl_listOfValues json_list;
      json_geom_obj json;
      json_loc json;
      l_lat  VARCHAR2(40);
      l_lng  VARCHAR2(40);
      l_status VARCHAR2(255);
      json_accuracy json;
      --temp_string varchar2(10000);
      n_first_comma number;
      n_second_comma number;
      n_level_length number;
      BEGIN
    /* TODO implementation required */
    l_private_key_bin := utl_encode.base64_decode(UTL_I18N.string_to_raw(l_private_key_b64_alter, 'AL32UTF8'));
    l_address:=APEX_UTIL.URL_ENCODE(P_s_Address);
    --dbms_output.put_line(l_address);
    l_address := replace(l_address,' ','+');
    l_path := '/maps/api/geocode/json?address='||l_address||'&'||'sensor=true';
    dbms_output.put_line(l_path);
    l_signature_mac :=DBMS_CRYPTO.mac(UTL_I18N.string_to_raw(l_path, 'AL32UTF8'), DBMS_CRYPTO.hmac_sh1,l_private_key_bin);
    l_signature_b64:= UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(l_signature_mac));
    l_signature_b64_alter_back:=translate(l_signature_b64,'+/','-_');
    dbms_output.put_line(l_signature_b64_alter_back);
    --get response from Google map service
    l_url:=l_Google_service_domain||l_path||'&client='||l_client_name||'&signature='||l_signature_b64_alter_back;
    --l_url:=l_Google_service_domain||l_path;
    dbms_output.put_line(l_url);
    l_page:=utl_http.request_pieces( l_url, 99999);
    for i in 1..l_page.count loop
    l_response:=l_response||l_page(i);
    end loop;
    n_actual_length:=length(l_response);
    dbms_output.put_line(n_actual_length);
    dbms_output.put_line(l_response);
    --parse JSON result
    json_obj:=new json(l_response);
    l_status := json_ext.get_string(json_obj, 'status');
    IF l_status = 'OK' then
    jl_listOfValues := json_list(json_obj.get('results'));
    json_tempobj := json(jl_listOfValues.get(1));
    json_geom_obj := json(json_tempobj.get(3));
    json_loc := json_ext.get_json(json_geom_obj, 'location');
    l_lat := to_char(json_ext.get_number(json_loc, 'lat'));
    l_lng := to_char(json_ext.get_number(json_loc, 'lng'));
    P_s_Geocoding:=l_lat||','||l_lng;
    dbms_output.put_line('##########'||P_s_Geocoding);
    case json_ext.get_string(json_geom_obj, 'location_type')
    when 'ROOFTOP' then P_n_accuracy:=9;
    when 'RANGE_INTERPOLATED' then P_n_accuracy:=7;
    when 'GEOMETRIC_CENTER' then P_n_accuracy:=5;
    else P_n_accuracy:=3;
    end case;
    P_b_success:=true;
    else
    P_b_success:=false;
    P_n_accuracy:=0;
    P_s_Geocoding:='0,0';
    end if;
      END;

Maybe you are looking for

  • Advice needed regarding Database design practice

    OK, here is my situation. I've started working for a company about 6 months ago. I'm a .NET developer with 12+ years of experience. Most of my experience with databases is with SQL Server. Recently I've discovered an design change with our Oracle dat

  • Reconfigure sales BOM deletes line item and creates new line item

    We are having issue with Sales BOM. Once sales BOM is reconfigure, line item is automatically deleted and creates new line item. These changes are not captured by reporting tool. Is it standard SAP behavior? if its not standard behavior, how to fix t

  • Importing XML. Not working for me.

    I've watched the InDesign/XML video now three or four times and I've tried to follow its steps diligently. But, I'm not having success. I created an InDesign template with all of the xml placeholder items in place. The structure at the left side of t

  • I need  a simple example of shopping cart(newbie)

    Has any one come across a simple example of shopping cart and the process behind it i.e. from jsp to ejb. So far I have looked at the buybeans example and it still is not clear the approach that was used. I would be greatful for any assistance thank

  • How do you eliminate duplicate iphoto photos?

    How do you eliminate duplicate iphoto photos?