private string GetTimingData(TIMING_TYPE e_timingType, Timing_Parameters timingParam)
        {
            try
            {
                if (e_timingType == TIMING_TYPE.PRE_CONDITION)
                {
                    var timingCoord = new TimeCoord(TIMING_TYPE.PRE_CONDITION);

                    return(GenerateTimingData(timingCoord, timingParam));
                }
                else if (e_timingType == TIMING_TYPE.LED)
                {
                    var timingCoord = new TimeCoord(TIMING_TYPE.LED);

                    return(GenerateTimingData(timingCoord, timingParam));
                }
                else if (e_timingType == TIMING_TYPE.INTEG_SEQUENCE)
                {
                    var timingCoord = new TimeCoord(TIMING_TYPE.INTEG_SEQUENCE);

                    return(GenerateTimingData(timingCoord, timingParam));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception in GenerateTimingData API = " + ex);
            }
            return(string.Empty);
        }
示例#2
0
		public TimeCoord[] GetHistory (Gdk.Window window, uint start, uint stop)
		{
			IntPtr coords_handle;
			int count;

			if (gdk_device_get_history (Handle, window.Handle, start, stop, out coords_handle, out count)) {
				TimeCoord[] result = new TimeCoord [count];
				for (int i = 0; i < count; i++) {
					IntPtr ptr = Marshal.ReadIntPtr (coords_handle, i + IntPtr.Size);
					result [i] = TimeCoord.New (ptr);
				}
				gdk_device_free_history (coords_handle, count);
				return result;
			} else
				return new TimeCoord [0];
		}
        private string GenerateTimingData_local(TimeCoord timingCoord, Timing_Parameters timingParam)
        {
            string timingData = string.Empty;

            int automatic_period = 150;

            int    pre_width    = 8;                //8
            int    led_offset   = 16;               //16
            double integ_offset = (16625 / 1000.0); // Divide by 1000 to convert nanosecond to microsecond
            int    led_width    = 2;                //2
            int    integ_width  = 3;                //3

            var default_Y   = 100.0;
            var peak_height = 50.0;

            var x1 = 0.0;
            var X2 = 0.0;
            var X3 = 0.0;
            var X4 = 0.0;
            var X5 = 0.0;
            var x6 = 0.0;
            var X7 = 0.0;

            var Y1 = 0.0;
            var Y2 = 0.0;


            try
            {
                if (timingCoord.eTimingType == TIMING_TYPE.PRE_CONDITION)
                {
                    x1 = (TimeCoord.START_POINT + timingCoord.initial_width);
                    X2 = (x1 + (pre_width * TimeCoord.Per_ms));
                    X3 = (X2 + (END_WIDTH - X2));

                    Y1          = default_Y - peak_height;
                    timingData  = "M " + TimeCoord.START_POINT + "," + default_Y + " ";
                    timingData += "L ";
                    timingData += x1 + "," + default_Y + " ";
                    timingData += x1 + "," + Y1 + " ";
                    timingData += X2 + "," + Y1 + " ";
                    timingData += X2 + "," + default_Y + " ";
                    timingData += X3 + "," + default_Y;

                    m_preCoord = timingCoord;
                    Console.WriteLine("Pre Condition Timing data = " + timingData);
                }
                else if (timingCoord.eTimingType == TIMING_TYPE.LED)
                {
                    var end_width_diff = 0.0;
                    x1 = timingCoord.initial_width + (pre_width * TimeCoord.Per_ms) + (led_offset * TimeCoord.Per_ms);
                    Y1 = default_Y - peak_height;
                    X2 = x1 + (led_width * TimeCoord.Per_ms);

                    X3 = (integ_checkpoint + (integSeq_Offset_diff * TimeCoord.Per_ms));
                    // X3 = X2 + automatic_period; //automatically calculated period

                    X4 = X3 + (led_width * TimeCoord.Per_ms);
                    if (X4 > END_WIDTH)
                    {
                        end_width_diff = X4 - END_WIDTH;
                        X5             = X4 - end_width_diff;
                    }
                    else
                    {
                        end_width_diff = END_WIDTH - X4;
                        X5             = X4 + end_width_diff;
                    }

                    //X5 = X4 + end_width_diff;

                    timingData  = "M " + TimeCoord.START_POINT + "," + default_Y + " ";
                    timingData += "L ";
                    timingData += x1 + "," + default_Y + " ";
                    timingData += (x1 + 1) + "," + Y1 + " ";
                    timingData += X2 + "," + Y1 + " ";
                    timingData += (X2 + 1) + "," + default_Y + " ";
                    timingData += X3 + "," + default_Y + " ";
                    timingData += (X3 + 1) + "," + Y1 + " ";
                    timingData += X4 + "," + Y1 + " ";
                    timingData += (X4 + 1) + "," + default_Y + " ";
                    timingData += X5 + "," + default_Y;

                    Console.WriteLine("LED Timing data = " + timingData);
                }
                else if (timingCoord.eTimingType == TIMING_TYPE.INTEG_SEQUENCE)
                {
                    var end_width = 100.0;
                    x1 = timingCoord.initial_width + (pre_width * TimeCoord.Per_ms) + (integ_offset * TimeCoord.Per_ms);
                    Y1 = default_Y - peak_height;
                    Y2 = default_Y + peak_height;
                    X2 = x1 + (integ_width * TimeCoord.Per_ms);
                    X3 = X2 + (integ_width * TimeCoord.Per_ms);
                    X4 = X3 + automatic_period;

                    integSeq_Offset_diff = led_offset - integ_offset;

                    integ_checkpoint = X4;

                    X5 = X4 + (integ_width * TimeCoord.Per_ms);
                    x6 = X5 + (integ_width * TimeCoord.Per_ms);

                    X7        = x6 + end_width;
                    END_WIDTH = X7;

                    timingData  = "M " + TimeCoord.START_POINT + "," + default_Y + " ";
                    timingData += "L ";
                    timingData += x1 + "," + default_Y + " ";
                    timingData += x1 + "," + Y1 + " ";
                    timingData += X2 + "," + Y1 + " ";
                    timingData += X2 + "," + Y2 + " ";
                    timingData += X3 + "," + Y2 + " ";
                    timingData += X3 + "," + default_Y + " ";
                    timingData += X4 + "," + default_Y + " ";
                    timingData += X4 + "," + Y1 + " ";
                    timingData += X5 + "," + Y1 + " ";
                    timingData += X5 + "," + Y2 + " ";
                    timingData += x6 + "," + Y2 + " ";
                    timingData += x6 + "," + default_Y + " ";
                    timingData += X7 + "," + default_Y + " ";

                    Console.WriteLine("INTEG Sequence timing data = " + timingData);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception in GenerateTimingData API = " + ex);
            }
            return(timingData);
        }