Delaying an output

Hi,
I've written a program that acts as a calculator (which accepts RPN expressions).
The stack is displayed at every step of the way:
          try
          Thread.sleep(1000);
          catch(InterruptedException e)
          e.printStackTrace();
          String str = new String(stack).trim();
          System.out.println("STACK: " + str);I'm currently trying to convert into into a GUI. It accepts the RPN expression from a textField, and when a button 'calculate' is pressed, the stack is displayed in a textArea (one line every second).
public void actionPerformed(ActionEvent e)
               textArea.setText("Stack:");
               String rpn = inputLine.getText();
               rpn = (" " + rpn);
                        calculate(temp, stack);
                        inputLine.setText(rpn);The calculate method calls the print stack method much as before:
static void printstack(char[] stack)
          try
          Thread.sleep(1000);
          catch(InterruptedException e)
          e.printStackTrace();
          String str = new String(stack).trim();
          textArea.append(str + LINE);
     }However, when the calculate button is pressed, the program seems to freeze - in fact it is performing the Thread.sleep(1000), but not outputting the stack to the textArea until the whole expression has been worked out.
eg: The expression 3 4 + should output:
3
(wait one second)
4
(wait one second)
+
(wait one second)
7
But what happens is
(wait 3 seconds)
3
4
+
7
Does anyone know what might be the problem and how to fix it?

Calling Thread.sleep(...) in a Swing GUI without care will put the entire GUI to sleep. The problem is that your sleeping the main thread that runs the GUI, the Event Dispatch Thread (or EDT). Better would be to use a Swing Timer. Please search for and check out Sun's excellent tutorial on Concurrency and Swing and on the Swing Timer.

Similar Messages

  • Configuration EDI output - Delaying the output by specific amount of time

    Hi,
    I am trying to delay EDI output when it is generated by 1 min exactly before the IDOC leaves SAP to go to Business Connector. I would like some notes or step by step guide on how to do it.  Which program requires change?
    We tried to change NACE, output type definitions and we changed ZFNDTIM accommodate but it didn't work.
    Thanks heaps,
    Robin/Anna

    what about to generate it scheduling the program RSNAST00 every minute with the idoc message condition type ?
    reward if helpful
    regards
    Roberto

  • How to set input delay and output delay when source Synchronous

    ClkIN is the board clock which is connected to the FPGA. Clkif is the generated clock from ClkIN. The Device's clk come from Clkif. So, how to set input delay and output delay in this scene(within my understand, this is Source Synchronous)?
    The example in many document, the input delay and output delay setting all refer to board clock(within my understand, this is System Synchronous). In that scene, the input delay max = TDelay_max + Tco_max; input delay min = Tdelay_min + Tco_min; the output delay max = Tdelay_max + Tsu; output delay min = Tdelay_min - Th.
    So, I want to know how to set input/output delay in the Source Synchronous.
    In system synchronous, I set input/output delay such as:
    create_clock -period 20.000 -name ClkIN -waveform {0.000 10.000} [get_ports ClkIN]
    create_generated_clock -name Clkif -source [get_pins cfg_if/clk_tmp_reg/C] -divide_by 2 [get_pins cfg_if/clk_tmp_reg/Q]
    create_clock -period 40.000 -name VIRTUAL_clkif //make virtual clock
    set_input_delay -clock [get_clocks VIRTUAL_clkif] -min 0.530 [get_ports DIN]
    set_input_delay -clock [get_clocks VIRTUAL_clkif] -max 7.700 [get_ports DIN]
    set_output_delay -clock [get_clocks VIRTUAL_clkif] -min -0.030 [get_ports DOUT]
    set_output_delay -clock [get_clocks VIRTUAL_clkif] -max 1.800 [get_ports DOUT]
    *******************************************************************************************

    So, first. Architecturally, the clock that you forward to your external device should not come directly from the clock tree, but should be output via an ODDR with its D1 input tied to logic 1 and the D2 tied to logic 0. This guarantees minimal skew between the output data and the forwarded clock.
    ODDR #(
    .DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE" or "SAME_EDGE"
    .INIT(1'b0), // Initial value of Q: 1'b0 or 1'b1
    .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC"
    ) ODDR_inst (
    .Q (Clkif_ff), // 1-bit DDR output
    .C (ClkIN_BUFG), // 1-bit clock input
    .CE (1'b1), // 1-bit clock enable input
    .D1 (1'b1), // 1-bit data input (positive edge)
    .D2 (1'b0), // 1-bit data input (negative edge)
    .R (rst), // 1-bit reset
    .S (1'b0) // 1-bit set
    OBUF OBUF_inst (.I (Clkif_ff), .O (Clkif_out));
    This generates an output clock that is the same frequency as your input clock. This is consistent with your drawing, but inconsistent with your constraints - is the forwarded clock a 50MHz clock or a 25MHz clock?
    I will assume your ClkIN goes to a BUFG and generates ClkIN_BUFG.  Your first constraint generates a 50MHz clock on the ClkIN port which will propagate through the BUFG to (among other places) this ODDR.
    create_clock -period 20.000 -name ClkIN -waveform {0.000 10.000} [get_ports ClkIN]
    Assuming your forwarded clock is supposed to be 50MHz, then your 2nd command is close to correct
    create_generated_clock -name Clkif -source [get_pins cfg_if/ODDR_inst/C] -combinational  [get_pins cfg_if/ODDR_inst/Q]
    With this done, you have successfully described the forwarded clock from your design. This is the clock that goes to your device, and hence should be the clock which is used to specify your input and output constraints.
    set_input_delay -clock [get_clocks Clkif] -min 0.530 [get_ports DIN]
    set_input_delay -clock [get_clocks Clkif] -max 7.700 [get_ports DIN]
    set_output_delay -clock [get_clocks Clkif] -min -0.030 [get_ports DOUT]
    set_output_delay -clock [get_clocks Clkif] -max 1.800 [get_ports DOUT]
    If you want to get fancier, you could try adding a set_clock_latency to the forwarded clock to account for the board propagation of the clock
    set_clock_latency -source TDtrace2 [get_clocks Clkif]
    (But I haven't experimented with clock latency on a generated clock and I don't know for a fact that it works).
    Avrum

  • IP-sla udp-jitter / one-way delay no output

    Hi *,
    i have a question regarding "ip sla udp-jitter".
    On some connectins i get an output for the "show ip sla stat" for the _one-way delay_
    on other links i don't get an output. The Configuration is always the same and the Probes are running.
    NTP is configured but in my opinion the fact weather i get output for the _one-way delay_
    or not depends on the ntp root despersion.
    Is there a max allowed time differances between the two routes ?
    Here one working / one not working output of the same Router but different peers:
    Not working::
    Latest operation return code: OK
    RTT Values:
    Number Of RTT: 100RTT Min/Avg/Max: 11/11/13 milliseconds
    Latency one-way time:
    Number of Latency one-way Samples: 0
    Source to Destination Latency one way Min/Avg/Max: 0/0/0 milliseconds
    Destination to Source Latency one way Min/Avg/Max: 0/0/0 milliseconds
    Working:
    Latest operation return code: OK
    RTT Values:
    Number Of RTT: 100RTT Min/Avg/Max: 12/13/14 milliseconds
    Latency one-way time:
    Number of Latency one-way Samples: 100
    Source to Destination Latency one way Min/Avg/Max: 6/7/8 milliseconds
    Destination to Source Latency one way Min/Avg/Max: 5/6/7 milliseconds
    I hope one of you can help me to find / fix the problem,
    Thanks in advance / Emanuel

    Hi everyone,
    I have the same doubt.
    I did a ip sla configuration on 1841 and 7206VXR and don't show nothing in one-way delay.
    ----------------------7206---------------------
    -ip sla monitor responder
    -ip sla monitor 1
    - type jitter dest-ipaddr 10.9.105.14 dest-port 16384 source-ipaddr 10.8.20.102  codec g711alaw
    - tos 184
    -ip sla monitor schedule 1 start-time now
    -ntp peer 10.9.105.14
    HOST)#show ip sla sta
    Round Trip Time (RTT) for       Index 1
            Latest RTT: 507 milliseconds
    Latest operation start time: 10:57:36.619 UTC Sun Oct 10 2010
    Latest operation return code: OK
    RTT Values:
            Number Of RTT: 1000             RTT Min/Avg/Max: 125/507/846 milliseconds
    Latency one-way time:
            Number of Latency one-way Samples: 0
            Source to Destination Latency one way Min/Avg/Max: 0/0/0 milliseconds
            Destination to Source Latency one way Min/Avg/Max: 0/0/0 milliseconds
    Jitter Time:
            Number of Jitter Samples: 999
            Source to Destination Jitter Min/Avg/Max: 1/1/6 milliseconds
            Destination to Source Jitter Min/Avg/Max: 1/5/23 milliseconds
    Packet Loss Values:
            Loss Source to Destination: 0           Loss Destination to Source: 0
            Out Of Sequence: 0      Tail Drop: 0    Packet Late Arrival: 0
    Voice Score Values:
            Calculated Planning Impairment Factor (ICPIF): 17
            Mean Opinion Score (MOS): 3.84
    Number of successes: 38
    Number of failures: 0
    Operation time to live: 1347 sec
    -------------------------1841-------------------------------
    -ip sla monitor responder
    -ip sla monitor 1
    - type jitter dest-ipaddr 10.8.20.102 dest-port 16384 source-ipaddr 10.9.105.14 codec g711alaw
    - tos 184
    -ip sla monitor schedule 1 start-time now
    -ntp peer 10.8.20.102
    3383)#show ip sla monitor statistic
    Round trip time (RTT)   Index 1
            Latest RTT: 614 ms
    Latest operation start time: 10:50:50.491 UTC Wed Oct 27 2010
    Latest operation return code: OK
    RTT Values
            Number Of RTT: 999
            RTT Min/Avg/Max: 347/614/867 ms
    Latency one-way time milliseconds
            Number of one-way Samples: 0
            Source to Destination one way Min/Avg/Max: 0/0/0 ms
            Destination to Source one way Min/Avg/Max: 0/0/0 ms
    Jitter time milliseconds
            Number of SD Jitter Samples: 997
            Number of DS Jitter Samples: 998
            Source to Destination Jitter Min/Avg/Max: 0/6/19 ms
            Destination to Source Jitter Min/Avg/Max: 0/1/3 ms
    Packet Loss Values
            Loss Source to Destination: 1           Loss Destination to Source: 0
            Out Of Sequence: 0      Tail Drop: 0    Packet Late Arrival: 0
    Voice Score Values
            Calculated Planning Impairment Factor (ICPIF): 20
    MOS score: 3.72
    Number of successes: 32
    Number of failures: 0
    Operation time to live: 1668 sec

  • Delay in output, how to remove?

    brief programme description:
    1. i have a Swing window spawning SwingWorkers.
    2. workers fire events listened to by the swing window
    3. window retrieves results and calls a static method in another class for output
    4. the static method serialises a collection and outputs it to a file
    5. all this while new workers are spawned and activated.
    im trying to make the programme write the data to file for every N workers completed, and write whatever is gathered when the window closes (via windowlistener)
    however, there is always a long delay before the former happens (eg the first 100 is written when progress has reached 1000), and the latter never happens (file made is empty).
    whats the cause and how do i make it output to file immediately when conditions are met as intended?

    In the future, Swing related questions should be posted in the Swing forum.
    im guessing its a threading problem, any ideas? Probably. Read the Swing tutorial on Concurrency for more information on this topic.

  • Delay an output by one sec.

    Hi, i'm new with labview and stuck with a problem. I need to buffer a signal output by one second in order to add it to the total sum of this signal output. I'm calculating the kWh where I have to add up all the power together by one second interval.

    You could use a while loop, running during one second. Calculate de sum of all the power inputs, using a shift register, and divide by the loop indes (+1). See the attached vi to find how to program a one second integration period. Remember that software timing is strongly dependent on Windows...
    CC
    Chilly Charly    (aka CC)
             E-List Master - Kudos glutton - Press the yellow button on the left...        
    Attachments:
    OneSecondAverage.vi ‏25 KB

  • Counter Input with Delayed counter Output with board 6023E

    HELLO
    Is possible with board 6023e have two counters working at same time in this case i need a counter to creat a delay and another one to read. If isn´t possible how i can have a delay in microseconds.

    Yes, each one of those boards have two STC counters you can use. Take a look at the User Manual of the boards for more information. When looking at the pin diagram for the boards, the counter pins are GPCTRx_.
    If you are using LabVIEW, CVI, VB or VC++, when you install NI-DAQ, it will install a lot of counter example programs which will show you how to program the counters.
    Brian

  • WAD Report delaying to display output

    Hello,
    WAD report taking 6 min time to display the output but the same  report displaying output
    in 1 min 50 sec when I executed in BEx Analyzer
    The Same BEx report I incorporated in WAD but it's delaying to display the output.
    What might be the cause in delaying the output display.
    Srujay

    Hi,
    Please to use the new cache mode as note:
    1026944 - New cache mode for BI 7.0 without directory
    As per the note:
    To activate the new cache mode, run the report SAP_RSADMIN_MAINTAIN with
    the following parameters and the option "INSERT":
    OBJECT:    RSR_CACHE_ACTIVATE_NEW
    VALUE:     X
    After this procedure you can benefit from the new cache mode by
    activating it for your query or queries. Go to RSRT -> enter query -> properties ->
    cache mode: 5 Cluster Enhanced should be selected.
    Or via mass maintenance to all queries (transaction RSRT -> menu "Environment" -> "Mass Maintenance").
    It should resolved your issue.
    Thanks,
    Venkat

  • How do I create a delay or time-lag for my data in LABVIEW

    In my data acquisition system I am using acquired data to create an digital output. I want to delay this output or create a sort of time lag for it. Is there any easy way to incorporate this?

    What you might consider doing is using a sequence. Run the data through this sequence and inside of the sequence, put a delay equal to the time you wish to delay the signal. Then, the output will not be available until the delay has completed.
    If you need continuous streaming data, this might not work too well. Then, you will need some sort of a data buffer - perhaps using a queue might be one possible solution. I have not used it, but I think that queues can have a time stamp. You could possibly artifically alter the time stamp.
    Hope this helps,
    Jason

  • Using a counter to create a timing delay

    Hi all,
    I am working on an application where I need to send some digital outputs seperated by precise timing delays.
    So for example, I may want to output a 'high' to channel 1, then have a 20ms delays, then output a 'high' to channel 2, then have a 50ms delay, and so on.
    I want the timing delays to be easily adjustable and I would like them to be precise.
    The program is being set up for hundreds of tests and it will be run once per test. In between tests I will have the opportunity to modify timing delays.
    I already have a cDAQ-9174 chassis and am planning to buy a NI 9401 high speed digital I/O card. It has been suggested to me that I use a counter (which is built into the chassis) to generate the timing delays, which sounds like a good idea to me. However, I don't really understand how to access the counters and configure the 'DAQmx create channel' function because there are so many options for the reference clock which I don't understand.
    I am thinking that I need to implement something like this:
    http://zone.ni.com/reference/en-XX/help/370466V-01/mxcncpts/hwtimedcounter/
    However I'm if this is what I need and I'm not sure how I would go about testing this code. I guess I would need to connect some sort of output to the counter to see if it's working correctly.
    Any help would be much appreciated.

    After a bit of experimenting, now I'm not sure if the hardware time delay has any advantage over the software delay. I can get a constant 5ms delay using the 'wait' function, yet when I use the counter I can normally get a 5ms delay, but sometimes (perhaps one trial out of five) I get a 4 or 6ms delay. I have even seen a 1ms delay using the counter method. Perhaps my method for measuring is flawed though? I have attached some screenshots of my program. If anybody has any comments it would be appreciated.

  • How can I delay analog signal?

    I have an analog signal, the frequency is less than 1kHz. I want to get a delayed analog signal. Is it possible to realize analog delay generator using labview (daq card is PCI-6115)? I hope I could specify the delay time.
    Any suggestion will be greatly appreciated!
    Stephen

    Hello Stephen,
    It is possible to institute a delay an analog output. This is best done by specifying a trigger and then beginning the output when that trigger occurs.
    Below is a link to an example program developed for LabVIEW that waits a specified number of seconds and then triggers analog output to begin. This code performs analog input as well, but for your program you could remove that portion. The trigger that is used is RTSI pin 0. After a specified period of time, the RTSI pin 0 is set to 1 and then the analog output begins.
    Analog Input with Delayed Analog Output
    Take a look at this example and
    try to build from it for your code. If you have any further questions on this issue, let me know.
    Regards,
    Scott R.
    Applications Engineer
    National Instruments

  • Delaying jsp-page

    i want to delay the output of a jsp page efficiently. is it okay to do it this way?
    jsp1 :
    if (condition) {
        Thread t = new Thread();
        t.sleep(10000);
        response.sendRedirect("/jsp2");
    }or are there other posibilities to delay sendRedirect() ?

    No!
    You should call Thread.sleep static method! Do not create new thread!
    if (condition) {   
    Thread.sleep(10000);
    response.sendRedirect("/jsp2");

  • Triggered AO with Delay

    Hi,
    I want to trigger a delayed analog output. I am using the DAQmx trigger property node to start the AO after a certain amount of time. Can anyone tell me, what is the shortest delay that can be used with the property node ? Is the timing done through the software or is it hardware controlled ? I am using a M series PCI-6229 DAQ card.
    i want to delay the AO by around 20 micro seconds from the digital trigger.
    thanks
    Colm 

    Hi Colm,
    the Start>>More>>Delay Units Property help says
    Specifies the units of Start>>More>>Delay.
    Sample Clock Periods (10286)
    Complete periods of the Sample Clock.
    Ticks (10304)
    Timebase ticks.
    Seconds (10364)
    Seconds.
    Start>>More>>Delay
    Specifies an amount of time to wait after the Start Trigger is received before acquiring or generating the first sample. This value is in the units you specify with Start>>More>>Delay Units.
    So depending either on the Sample clock you've got setup, or the Timebase you're using it is then hardware controller, but you must make sure that you've armed the trigger before it actually arrives.
    20uS on a timebase of 20MHz is a resolution 50ns, so a delay of 400.
    If you specify in seconds, then it will be calculated and linked to the master timebase.
    By deafult the delay units should be on Ticks
    Hope that helps
    Sacha Emery National Instruments (UK)
    Message Edited by SachaE on 03-27-2006 03:59 PM
    Message Edited by SachaE on 03-27-2006 04:00 PM
    // it takes almost no time to rate an answer

  • Continuous in- and output with PCI-6229

    Hi All,
    I'm currently evaluating a PCI-6229 card on RTX (and maybe InTime later on). The main goal of the evaluation is to prove we can get hard real-time, deterministic behaviour from this system in order to use it to replace our current DSP-based solution.
    To do so, I'm setting up a rather simple program that should
    - continuously acquire 1 channel @ 20kHz
    - have a processing loop of 5mSec, ie 100 samples; this loop should be entered every 5mSec as exactly as possible
    - do some simple processing in the loop (thresholding the signal)
    - bring out the result on an analog output (low signal if signal is under threshold, high signal for all samples above the threshold)
    I could get the basics working pretty quickly: continuous input, continous output, continuous input with dma, input using interrupts.
    Trying to combine everything isn't really working out however.. Normally I'd try and try until knowing the device inside-out but now I have a rather strict timeframe so hopefully someone here can provide some insight.
    Questions:
    1. For the input, I can get an SC_TC interrupt each time one frame is scanned. I measured this on a scope by toggling a digital output on the card, and there's no noticable jitter on the squarewave which is a good sign.
    However I'd like to combine this with DMA, but the DMA is lagging a bit on the interrupt so I end up having to poll the DMA after all in the ISR, so there's no use using the interrupt in the first place.
    Is there a way to set up continuous DMA servicing and get an interrupt from the DMA system itself after 100 samples are transferred?
    2. For the output, I cannot get continuous mode working with DMA, only by writing to the FIFO manually. I can preload a couple of frames with the dma, but after calling aoStart(), tDMAChannel::write() works once, but all calls afterwards return kBufferUnderflow. Any ideas?
    I probably have to check when exactly to write to the DMA, but I have no idea which of the many status functions to use. Tried with AO_Status_1.readAO_FIFO_Half_Full_St() but that's not it. tried to write it on each UC_TC interrupt but that didn't work either.
    3. DMA is, to my understanding, a more performant way of getting samples into the host and doesn't require to call AI_FIFO_Data.readRegister() in a loop and vice-versa for the output side. But are there really benefits in using DMA?
    4. I made a basic program to bring everything together the simplest way possible: preload 100 samples in the output FIFO, start analog input, start analog output, have the ISR copy all values directly from input to output FIFO.
    Putting both analog signals on a scope, I expected to see the input and about (see question5) 5mSec later the same signal on the output, with no jitter.
    However what I see is the output is just floating around, in other words there is no fixed delay between output and input! How is this possible? I use the same divisor for in-and output. Is there any sample code available that achieves what I want?
    5. Is there a way to start both input and output at the exact same time, eg at the same edge of a certain clock pulse? How are input and output synchronized? Can I be sure they never go out of sync?
    Solved!
    Go to Solution.

    update: looking at the DAQmx control samples, it seems some of them set the start trigger for the AO to the AI start trigger. I mimicked this using kAO_START1_SelectAI_START_1 with the aoTrigger method, and the sync seems better now: the output starts exactly 10mSec after the input (or 5, if I preload only one frame) and stays in sync for about 25mSec. That it goes wrong.
    At the moment I'm using no DMA, just one simple interrupt routine that basically does
    board->Interrupt_A_Ack.writeAI_SC_TC_Interrupt_Ack( 1 );
    board->Interrupt_A_Ack.flush();
    toggle ^= 1;
    board->Static_Digital_Output.writeRegister( toggle ? 0x00 : 0xff );
    for( u32 i = 0 ; i < numSamples ; ++i )
      const u32 val = board->AI_FIFO_Data.readRegister();
      board->AO_FIFO_Data.writeRegister( val );
    In the screenshot in the attachment you can see this goes wrong: cursor A shows the position of the input signal (=AI 0, yellow) that should be shown 10mSec later at the output (blue line=AO). Cursor B shows this 10mSec later position, and you can see there's some garbage right after the cursor. This is the data that was written to the AO FIFO in the fifth interrupt (interrupt position show in purple).
    Trying to figure out where that comes from, I put board->AI_Status_1.readAI_FIFO_Empty_St() in the interrupt loop. And effectively, when trying to read the 500th sample, it reports that the FIFO is empty. Consequently the data written to the AO FIFO does not make sense anymore. But I do not understand how can this ever happen? The SC_TC interrupt is fired whenever 100 samples are read from the input. So after this interrupt occurs, the FIFO should always contain at least 100 samples, no?
    Attachments:
    tek00000.png ‏22 KB

  • Sample Delay VI

    Currently i'm using Labview 7.1 embedded together with speedy-33.
    i had my audio input to speedy-33 from my PC sound card and i wish to delay the time of my signal by let say 1sec.
    I had my left signal connect to the sample delay vi then from sample delay vi to audio output.
    Audio in (only one channel,left)--> sample delay --> audio output
    i should heard a delay of 1sec when a audio signal i played but there is no delay.
    i use two waveform graph to observe the signal before and after the sample delay vi and indeed there is a delay as the waveform are different.

    The file attach has a input sin wave connected to a sample delay vi and then to a analog output.
    Waveform graph were ploted before and after the delay for comparsion.
    Thanks for the help.
    Attachments:
    Sin sample.vi ‏36 KB

Maybe you are looking for

  • Material ledger is not active in valuation area S001

    Dear All, I have created a Scheduling Agreement & did the GR. When I am doing invoice posting system is throwing error as Material ledger is not active in valuation area S001 What might be wrong here ? For same material if I create PO then everything

  • Save as PDF generates SPLWOW64.EXE error

    Just moved to new Windows 7 box Using Frame v 8.0p236 Have book, used Save as PDF option, click "Set". Get a popup box with big red "X" says: c:\windows\SPLWOW64.EXE Ideas? TIA, Theresa

  • Strange system font problem

    Hello, I have the following problem for 2 days now: http://img154.imageshack.us/img154/1462/bild1.png I did not install anything. I tried to delete font caches but it did not help. I re-installed the system but that did not change anything. After res

  • Mini Server makes odd noise from speaker!

    Anyone else getting a noise from their Mac Mini server speaker that sounds like a file being deleted? No regular pattern to when it comes, it's unprompted and happens even when no one is logged on to the network. I have a (used) Mac Mini 2011 with tw

  • Convert a String to java.sql.Date Format

    Hi, I am having a String of containing date in the format 'dd/mm/yyyy' OR 'dd-MMM-YYYY' OR 'mm-dd-yyyy' format. I need to convert the string to java.sql.Date object so that I can perform a query the database for the date field. Can any one suggest me