亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ddata.cs

?? 用C#寫的USB數據采集程序
?? CS
?? 第 1 頁 / 共 2 頁
字號:
        #endregion

        #region "重新設置數據結構,清除原有數據"
        /// <summary>
        /// 重新設置數據結構,清除原有數據
        /// </summary>
        /// <param name="timepoints">時間點</param>
        /// <param name="channels">道數</param>
        public void ResetNew(int timePoints, int channels)
        {
            _data = new int[timePoints][];
            for (int i = 0; i < timePoints; i++)
            {
                _data[i] = new int[channels];
            }
            _overflowtable = new int[timePoints];
            _tmpdata = new byte[channels * 4];
            _tmpvalue = new int[channels];
            _receivedbyte = 0;
            _dataindex = TimePoints;
        }
        #endregion

        #region "清除數據"
        /// <summary>
        /// 清除數據
        /// </summary>
        public void Clean()
		{
            for (int i = 0; i < _data.GetLength(0); i++)
            {
                Array.Clear(_data[i], 0, _data[i].Length);
            }
            Array.Clear(_overflowtable, 0, _overflowtable.Length);
            _receivedbyte = 0;
            _dataindex = TimePoints;
        }
        #endregion

        #region "返回指定時間點的數據"
        /// <summary>
		/// 返回指定時間點的數據
		/// </summary>
		/// <param name="time">時間點</param>
		/// <returns>一維數組,下標表示道址,數組元素是計數數據</returns>
		public void GetData(out int[] data, int timePoint)
		{
			if(timePoint < 1 || timePoint > TimePoints)
			{
                throw new Exception("timepoint overflow!"); 
			}
			if(_overflow != null)//檢查事件是否有預定
			{
				double max = _islinecoordinate? _overflowtable[timePoint - 1] : Math.Log10(_overflowtable[timePoint - 1]);
				if(max > _maxcount)//如果全譜區的數據溢出則產生全譜區溢出事件
				{
					CountOverFlowEventArgs e = new CountOverFlowEventArgs(OverFlowType.Normal, max);
					_overflow(this, e);
				}
				if(max > _zmaxcount)//如果放大區的數據溢出則產生放大區溢出事件
				{
					CountOverFlowEventArgs e = new CountOverFlowEventArgs(OverFlowType.Zoom, max);
					_overflow(this, e);
				}
			}
            data = _data[timePoint - 1];
        }
        #endregion

        #region "返回最后使用的時間點的數據"
        /// <summary>
		/// 返回最后使用的時間點的數據
		/// </summary>
		/// <returns>一維數組,下標表示道址,數組元素是計數數據</returns>
		public void GetData(out int[] data)
		{
            if (_dataindex == TimePoints)
            {
                throw new Exception("No data.");
            }
            if(_overflow != null)//檢查事件是否有預定
			{
                double max = _islinecoordinate ? _overflowtable[_dataindex] : Math.Log10(_overflowtable[_dataindex]);
				if(max > _maxcount)//如果全譜區的數據溢出則產生全譜區溢出事件
				{
					CountOverFlowEventArgs e = new CountOverFlowEventArgs(OverFlowType.Normal, max);
					_overflow(this, e);
				}
				if(max > _zmaxcount)//如果放大區的數據溢出則產生放大區溢出事件
				{
					CountOverFlowEventArgs e = new CountOverFlowEventArgs(OverFlowType.Zoom, max);
					_overflow(this, e);
				}
			}
            data = _data[_dataindex];
            if (_dataindex < TimePoints - 1)
            {
                _dataindex++;
            }
        }
        #endregion

        #region "開始或停止串口接收數據"
        /// <summary>
        /// 開始或停止串口接收數據
        /// </summary>
        /// <param name="start">開始或停止</param>
        public void ReceiveData(bool start)
        {
            if (start)
            {
                if (_stop)
                {
                    _serialport.Write("1");
                    _stop = false;
                }
            }
            else
            {
                _stop = true;
            }
        }
        #endregion

        #region "從文件讀入數據"
        /// <summary>
		/// 從文件讀入數據
		/// </summary>
		/// <param name="filename">要讀入的文件名</param>
        /// <param name="filename">讀入的屬性</param>
		public void BuildData(string fileName, out Hashtable attributes)
		{
			int timepoints = 0;
			int channels = 0;
			int timepoint = 0;
			int channel = 0;
			int count = 0;
            Hashtable tmpattributes = new Hashtable();
			StreamReader filereader = new StreamReader(fileName);
            XmlTextReader datareader = new XmlTextReader(filereader);
			datareader.WhitespaceHandling = WhitespaceHandling.None;
			while(datareader.Read())
			{
				if(datareader.NodeType == XmlNodeType.Element)
				{
                    if(datareader.Name == "ddata")
					{
                        datareader.MoveToAttribute("timepoints");//讀入時間點數
                        if (datareader.Name == "timepoints")
                        {
                            timepoints = Convert.ToInt32(datareader.Value);
                            _data = new int[timepoints][];
                            _overflowtable = new int[timepoints];
                        }
                        else
                        {
                            throw (new XmlException());
                        }
                        datareader.MoveToAttribute("channels");//讀入道數
                        if (datareader.Name == "channels")
                        {
                            for (int i = 0; i < timepoints; i++)
                            {
                                channels = Convert.ToInt32(datareader.Value);
                                _data[i] = new int[channels];
                            }
                            _tmpdata = new byte[channels * 4];
                            _tmpvalue = new int[channels];
                            _receivedbyte = 0;
                        }
                        else
                        {
                            throw (new XmlException());
                        }
                        while (datareader.MoveToNextAttribute())
                        {
                            tmpattributes[datareader.Name] = datareader.Value;
                        }
					}else
					if(datareader.Name == "timepoint")//時間點
					{
                        datareader.MoveToAttribute("index");//讀入時間點
                        if (datareader.Name == "index")
                        {
                            timepoint = Convert.ToInt32(datareader.Value);
                        }
                        else
                        {
                            throw (new XmlException());
                        }
					}
					else
					if(datareader.Name == "data")//時間點//道址和計數
					{
                        datareader.Read();//讀入計數
						string[] data = datareader.Value.Split(',');
						for(channel = 1; channel < data.Length; channel++)
						{
							count = Convert.ToInt32(data[channel - 1]);
							SetData(timepoint, channel, count);
						}
					}
				}
			}
            _dataindex = 0;
			datareader.Close();
			filereader.Close();
            attributes = tmpattributes;
        }

        /// <summary>
        /// 從文件讀入數據
        /// </summary>
        /// <param name="filename">要讀入的文件名</param>
        public void BuildData(string fileName)
        {
            StreamReader datareader = new StreamReader(fileName);
            ArrayList tmpdata = new ArrayList();
            while (!datareader.EndOfStream)
            {
                tmpdata.Add(datareader.ReadLine());
            }
            _data = new int[1][];
            _data[0] = new int[tmpdata.Count];
            _overflowtable = new int[1];
            for (int i = 0; i < _data[0].Length; i++)
			{
                SetData(1, i + 1, Convert.ToInt32(tmpdata[i]));
			}
            datareader.Close();
        }
        #endregion

        #region "保存譜數據"
        /// <summary>
		/// 保存譜數據
		/// </summary>
		/// <param name="filename">要保存的文件名</param>
        /// <param name="attributes">要保存的屬性</param>
		public void SaveData(string fileName, Hashtable attributes)
		{
			//保存數據
            XmlTextWriter datawriter = new XmlTextWriter(fileName, System.Text.Encoding.Default);
            datawriter.Formatting = Formatting.Indented;
			datawriter.WriteStartDocument();
			datawriter.WriteStartElement("ddata");
            datawriter.WriteAttributeString("timepoints", _data.GetLength(0).ToString());
            datawriter.WriteAttributeString("channels", _data[0].GetLength(0).ToString());
            foreach (string s in attributes.Keys)
            {
                datawriter.WriteAttributeString(s, attributes[s].ToString());
            }
			//寫入每個時間點下的數據
			for(int i = 1; i <= _data.Length; i++)
			{
                datawriter.WriteStartElement("timepoint");
                datawriter.WriteAttributeString("index", i.ToString());
				StringBuilder data = new StringBuilder();
				for(int j = 0; j < _data[0].GetLength(0); j++)
				{
					//寫入每道的道址及其計數
					data.Append(_data[i - 1][j]);
					data.Append(',');
				}
				datawriter.WriteElementString("data", data.ToString());
                datawriter.WriteEndElement();//timepoint
			}
			datawriter.WriteEndElement();//ddata
			datawriter.WriteEndDocument();
			datawriter.Flush();
			datawriter.Close();
        }

        /// <summary>
        /// 保存譜數據
        /// </summary>
        /// <param name="fileName">要保存的文件名</param>
        public void SaveData(string fileName)
        {
            StreamWriter datawriter = new StreamWriter(fileName);
            foreach (int n in _data[_data.Length - 1])
            {
                datawriter.WriteLine(n);
            }
            datawriter.Close();
        }
        #endregion

        #region "返回指定時間點指定道的數據"
        /// <summary>
		/// 返回指定時間點指定道的數據
		/// </summary>
		/// <param name="time">時間點</param>
		/// <param name="channel">道址</param>
		/// <returns>計數</returns>
		public int GetValue(int timePoint, int channel)
		{
			if(timePoint < 1 || timePoint > TimePoints)
			{
                throw new Exception("timepoint overflow!"); 
			}
            if (channel < 0 || channel > _data[0].Length)
            {
                throw new Exception("channel overflow!"); 
            }
			return _data[timePoint - 1][channel - 1];
        }
        #endregion

        #region "返回最后使用的時間點指定道的數據"
        /// <summary>
		/// 返回最后時間點指定道的數據
		/// </summary>
		/// <param name="channel">道址</param>
		/// <returns>計數</returns>
		public int GetValue(int channel)
		{
            if (channel < 0 || channel > _data[0].Length)
            {
                throw new Exception("channel overflow!");
            }
            return _data[_dataindex][channel - 1];
        }
        #endregion

        #endregion

        #endregion

        #region "事件"
       
        /// <summary>
        /// 計數溢出事件
        /// </summary>
        private event CountOverFlowEventHandler _overflow;
        
        /// <summary>
        /// 數據到達事件
        /// </summary>
        private event EventHandler _datareceived;

        /// <summary>
        /// 增加或刪除計數溢出事件
        /// </summary>
        public event CountOverFlowEventHandler OverFlow
        {
            add
            {
                _overflow += value;
            }
            remove
            {
                _overflow -= value;
            }
        }

        /// <summary>
        /// 增加或刪除數據到達事件
        /// </summary>
        public event EventHandler DataReceived
        {
            add
            {
                _datareceived += value;
            }
            remove
            {
                _datareceived -= value;
            }
        }

        #endregion
    }
    #endregion

    #region "計數溢出事件的委托"
    /// <summary>
    /// 計數溢出事件的委托
    /// </summary>
    public delegate void CountOverFlowEventHandler(object sender, CountOverFlowEventArgs e);
    #endregion

    #region "計數溢出事件類"
    /// <summary>
	/// 計數溢出事件類
	/// </summary>
	public class CountOverFlowEventArgs : EventArgs
	{
		/// <summary>
		/// 計數溢出類型
		/// </summary>
		private OverFlowType _oftype;
		private double _maxcount;
		
		public CountOverFlowEventArgs(OverFlowType oftype, double maxcount)
		{
			_oftype = oftype;
			_maxcount = maxcount;
		}

		/// <summary>
		/// 獲取計數溢出類型
		/// </summary>
		public OverFlowType Oftype
		{
			get
			{
				return _oftype;
			}
		}

        /// <summary>
        /// 獲取最大計數
        /// </summary>
		public double MaxCount
		{
			get
			{
				return _maxcount;
			}
		}
    }
    #endregion

    #region "計數溢出枚舉"
    /// <summary>
	/// 表示是哪個區的計數溢出
	/// </summary>
	public enum OverFlowType
	{
		/// <summary>
		/// Normal表示全譜區,Zoom表示放大曲
		/// </summary>
		Normal, Zoom
    }
    #endregion
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产国产综合| 国产色综合一区| 91国产丝袜在线播放| 成人免费三级在线| 成人免费av在线| aaa欧美日韩| 91精品福利视频| 色屁屁一区二区| 欧美另类z0zxhd电影| 91精品国产91久久久久久一区二区| 欧美日韩一区 二区 三区 久久精品| 91九色最新地址| 欧美一级欧美三级在线观看| 在线不卡一区二区| 久久夜色精品国产欧美乱极品| 欧美xxxxx裸体时装秀| 久久久久久久久久久电影| 国产日韩高清在线| 成人免费在线播放视频| 亚洲一区二区三区三| 蜜臀va亚洲va欧美va天堂| 激情文学综合插| 91亚洲精华国产精华精华液| 欧美色网一区二区| 欧美精品一区二区三区蜜桃 | 国产麻豆精品theporn| 国产成人精品网址| 色婷婷久久99综合精品jk白丝| 91成人在线免费观看| 日韩一区二区电影在线| 欧美激情一区不卡| 婷婷开心激情综合| 国产精品自拍毛片| 欧美亚洲高清一区| 久久久久久久久97黄色工厂| 亚洲一区二区成人在线观看| 精品一二三四区| 色老汉一区二区三区| 精品成人一区二区| 亚洲与欧洲av电影| 国产成人福利片| 制服丝袜成人动漫| 亚洲女爱视频在线| 国产美女在线精品| 欧美一级午夜免费电影| 亚洲猫色日本管| 国产成人一区在线| 9191成人精品久久| ㊣最新国产の精品bt伙计久久| 日韩和的一区二区| 成人高清免费在线播放| 欧美电影免费提供在线观看| 亚洲精品视频自拍| 高清国产一区二区| 精品日韩在线一区| 日韩专区中文字幕一区二区| 97se亚洲国产综合自在线观| www国产成人免费观看视频 深夜成人网| 玉足女爽爽91| 成人精品视频网站| 国产日韩欧美不卡| 国产精品99久久不卡二区| 91精品国产综合久久精品| 亚洲一区二区三区小说| av不卡在线播放| 国产日韩欧美综合在线| 国产一区二区三区香蕉| 欧美电影精品一区二区| 免费在线成人网| 91麻豆精品国产91久久久使用方法| 国产精品一二二区| 精品国产乱码久久久久久图片 | 国产精品久久久久久久久免费桃花| 免费国产亚洲视频| 日韩一二在线观看| 日本不卡免费在线视频| 91麻豆精品91久久久久同性| 午夜欧美在线一二页| 这里只有精品免费| 六月丁香综合在线视频| 欧美tickling挠脚心丨vk| 麻豆精品在线视频| 久久久噜噜噜久噜久久综合| 韩国成人福利片在线播放| 久久综合五月天婷婷伊人| 国产综合色在线| 欧美—级在线免费片| 91天堂素人约啪| 一区二区高清免费观看影视大全| 91丨porny丨蝌蚪视频| 一卡二卡欧美日韩| 91麻豆精品国产91久久久使用方法| 秋霞电影一区二区| 国产午夜三级一区二区三| av在线免费不卡| 亚洲综合自拍偷拍| 欧美tk—视频vk| 波波电影院一区二区三区| 亚洲综合在线视频| 日韩免费成人网| www.欧美色图| 日韩国产一二三区| 日本成人在线电影网| 日韩美女主播在线视频一区二区三区 | 精品国产髙清在线看国产毛片| 精品午夜一区二区三区在线观看| 国产午夜精品一区二区三区视频| av资源网一区| 麻豆精品精品国产自在97香蕉 | 91成人国产精品| 麻豆精品国产91久久久久久| 久久夜色精品国产噜噜av| 色婷婷综合久久久中文一区二区| 首页亚洲欧美制服丝腿| 国产精品网站一区| 在线播放国产精品二区一二区四区| 国产美女精品在线| 天堂精品中文字幕在线| 国产亚洲精久久久久久| 欧美日韩中文精品| 丁香网亚洲国际| 蜜桃视频在线观看一区二区| 中文字幕第一页久久| 5566中文字幕一区二区电影| 成人av影视在线观看| 日本aⅴ精品一区二区三区| 亚洲日本在线a| 久久九九久精品国产免费直播| 欧美网站大全在线观看| 本田岬高潮一区二区三区| 久久99最新地址| 香蕉乱码成人久久天堂爱免费| 中文成人av在线| 26uuu色噜噜精品一区二区| 777午夜精品视频在线播放| 成人免费毛片app| 麻豆免费精品视频| 午夜免费久久看| 99久久伊人久久99| 国产一区二区三区四区在线观看| 图片区小说区区亚洲影院| 亚洲激情中文1区| 亚洲日本青草视频在线怡红院| 国产肉丝袜一区二区| 精品国产免费人成电影在线观看四季 | 欧美亚洲动漫精品| 91国产丝袜在线播放| 91在线你懂得| 色香蕉久久蜜桃| 成人一区二区三区视频在线观看 | 国产精品狼人久久影院观看方式| 日韩三级精品电影久久久| 欧美日韩在线直播| 欧美精品一二三区| 欧美一区二区美女| 欧美大片拔萝卜| 欧美大白屁股肥臀xxxxxx| 日韩欧美高清dvd碟片| 欧美一区2区视频在线观看| 亚洲国产电影在线观看| 中文字幕第一区| 亚洲人一二三区| 亚洲影视在线观看| 香蕉影视欧美成人| 老鸭窝一区二区久久精品| 国产综合久久久久久久久久久久| 韩国女主播一区| 成人动漫一区二区| 色欧美88888久久久久久影院| 一本到不卡免费一区二区| 在线观看日产精品| 日韩一级完整毛片| 久久九九国产精品| 中文字幕av一区 二区| 亚洲毛片av在线| 五月婷婷久久丁香| 国产一区二区三区在线观看精品 | 日韩福利视频网| 国内精品久久久久影院薰衣草 | 蜜桃av一区二区在线观看| 蜜桃av一区二区三区电影| 欧美亚洲动漫精品| 91精品午夜视频| 日韩福利视频导航| 国产乱码一区二区三区| 国产精品亚洲午夜一区二区三区 | 欧美一区二区精品久久911| 精品视频在线免费| 亚洲色欲色欲www在线观看| 日本不卡123| 国产精品久久久久一区二区三区 | 成人av动漫网站| 欧美日韩黄色一区二区| 国产欧美日韩中文久久| 一区二区三区免费| 国产福利视频一区二区三区| 在线观看欧美日本| 久久精品一区八戒影视| 日韩国产在线观看| 日本道在线观看一区二区|