private void txtBtn_Click(object sender, EventArgs e)
 {
     try
     {
         if (openFileDialog.ShowDialog() == DialogResult.OK)
         {
             txtInfo.Text = (DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始导入文件...") + Environment.NewLine;
             string[] fileFullNames = openFileDialog.FileNames;
             if (fileFullNames.Length > 0)
             {
                 DataWrite dataWrite = new DataWrite();        //实例化一个写入数据的类
                 dataWrite.UpdateUIDelegate += UpdataUIStatus; //绑定更新任务状态的委托
                 dataWrite.TaskCallBack     += Accomplish;     //绑定完成任务要调用的委托
                 //线程池
                 ThreadPool.QueueUserWorkItem(new WaitCallback(dataWrite.Write), fileFullNames);
                 //Thread thread = new Thread(new ParameterizedThreadStart(dataWrite.Write));
                 //thread.IsBackground = true;
                 //thread.Start(fileFullNames);
             }
         }
     }
     catch (Exception ex)
     {
         log_info.Error(ex.Message);
     }
 }
Beispiel #2
0
        public RawlerBase CreateRawler(HtmlNode node)
        {
            var        baseUrl = BaseUrl;
            RawlerBase rawler  = null;

            bool flag次のノードを調べる = true;

            if (targetTag.Contains(node.Name))
            {
                Tags tags = new Tags()
                {
                    Tag = node.Name
                };
                if (node.Attributes.Where(n => n.Name == "class").Any())
                {
                    tags.ClassName = node.Attributes.Where(n => n.Name == "class").First().Value;
                }
                if (node.Attributes.Where(n => n.Name == "id").Any())
                {
                    tags.IdName = node.Attributes.Where(n => n.Name == "id").First().Value;
                }
                if (node.ChildNodes.Count() == 1 && node.ChildNodes.Where(n => n.Name == "#text").Any())
                {
                    tags.AddChildren(new DataWrite()
                    {
                        Attribute = tags.ClassName
                    });
                    flag次のノードを調べる = false;
                }
                if (node.Attributes.Where(n => n.Name == "style" && n.Value.Contains("background")).Any())
                {
                    tags.TagVisbleType = TagVisbleType.Outer;
                    rawler             = tags.Add(new ImageLinks()
                    {
                        ImageType = ImageType.BackgroundImage
                    }).DataWrite(node.GetClassName() + "_Image", DataAttributeType.Image).GetRoot();
                }

                rawler = tags;
            }
            else if (node.Name == "a")
            {
                var resultUrlTFIDF = urlTfidf.GetResult(node.OuterHtml.ToHtml(baseUrl).GetLink().Select(n => n.Url));
                var url            = node.OuterHtml.ToHtml(baseUrl).GetLink().FirstDefault <RawlerLib.Web.Link, string>(n => n.Url, null);
                if (url != null)
                {
                    //IDF が0以下の時、すべてのドキュメントで存在する。
                    if (urlTfidf.IDFDic.GetValueOrDefault(url) != null && urlTfidf.IDFDic.GetValueOrDefault(url).Value <= 0)
                    {
                        rawler        = null;
                        flag次のノードを調べる = false;
                    }
                    else
                    {
                        if (resultUrlTFIDF.GetTakeTopValue(n => n.TFIDF).Where(n => n.Word == url).Any())
                        {
                            rawler = new Links()
                            {
                                VisbleType = LinkVisbleType.Tag
                            }.AddRange(
                                new Links()
                            {
                                VisbleType = LinkVisbleType.Url
                            }.DataWrite(node.GetClassName() + "_MainLink", DataAttributeType.Url).GetRoot());
                            if (node.ChildNodes.Count == 1 && node.ChildNodes.First().Name == "#text")
                            {
                                rawler.Add(new Links()
                                {
                                    VisbleType = LinkVisbleType.Label
                                }.DataWrite(node.GetClassName() + "_MainLabel").GetRoot());
                            }
                        }
                        else
                        {
                            rawler = new Links()
                            {
                                VisbleType = LinkVisbleType.Tag
                            }.AddRange(
                                new Links()
                            {
                                VisbleType = LinkVisbleType.Url, Enable = enableGetSubUrlLink
                            }.DataWrite(node.GetClassName() + "_SubLink").GetRoot(),
                                new Links()
                            {
                                VisbleType = LinkVisbleType.Label
                            }.DataWrite(node.GetClassName() + "_SubLabel").GetRoot()
                                );
                        }
                    }
                }
                else
                {
                    //URLがないAタグの場合。
                    Tags tags = new Tags()
                    {
                        Tag = node.Name
                    };
                    if (node.Attributes.Where(n => n.Name == "class").Any())
                    {
                        tags.ClassName = node.Attributes.Where(n => n.Name == "class").First().Value;
                    }
                    if (node.Attributes.Where(n => n.Name == "id").Any())
                    {
                        tags.IdName = node.Attributes.Where(n => n.Name == "id").First().Value;
                    }
                    rawler = tags;
                }
                if (node.ChildNodes.Count == 1 && node.ChildNodes.Where(n => n.Name == "#text").Any())
                {
                    flag次のノードを調べる = false;
                }
            }
            else if (node.Name == "img")
            {
                var resultImgeTFIDF = imageTfidf.GetResult(node.OuterHtml.ToHtml(baseUrl).GetImageLink().Select(n => n.Url));

                var url = node.OuterHtml.ToHtml(baseUrl).GetImageLink().FirstDefault(n => n.Url, null);
                if (url != null)
                {
                    if (imageTfidf.IDFDic.Count > 0 && imageTfidf.IDFDic.GetValueOrDefault(url).Value <= 0)
                    {
                        rawler        = null;
                        flag次のノードを調べる = false;
                    }
                    else
                    {
                        if (resultImgeTFIDF.GetTakeTopValue(n => n.TFIDF).Where(n => n.Word == url).Any())
                        {
                            rawler = new ImageLinks().DataWrite(node.GetClassName() + "_Image", DataAttributeType.Image).GetRoot();
                        }
                        else
                        {
                            if (iconImageColumn)
                            {
                                rawler = new DataWrite()
                                {
                                    AttributeTree = new ImageLinks()
                                    {
                                        VisbleType = LinkVisbleType.Label
                                    }, Value = "1"
                                };
                            }
                            else
                            {
                                rawler = new ImageLinks().DataWrite(node.GetClassName() + "_Icon", DataAttributeType.Image).GetRoot();
                            }
                        }
                    }
                }
            }
            ///背景画像に反応させる。
            else if (node.Attributes.Where(n => n.Name == "style" && n.Value.Contains("background")).Any())
            {
                rawler = new ImageLinks()
                {
                    ImageType = ImageType.BackgroundImage
                }.DataWrite(node.GetClassName() + "_Image", DataAttributeType.Image).GetRoot();
            }
            else if (node.Name == "span")
            {
                Tags tags = new Tags()
                {
                    Tag = node.Name
                };
                if (node.Attributes.Where(n => n.Name == "class").Any())
                {
                    tags.ClassName = node.Attributes.Where(n => n.Name == "class").First().Value;
                }
                if (node.ChildNodes.Count() == 1 && node.ChildNodes.Where(n => n.Name == "#text").Any())
                {
                    tags.AddChildren(new DataWrite()
                    {
                        Attribute = tags.ClassName
                    });
                    flag次のノードを調べる = false;
                }

                rawler = tags;
            }
            else if (node.Name == "#comment")
            {
                flag次のノードを調べる = false;
            }
            else
            {
                var t = node.OuterHtml.Replace("\n", "").Trim();
                if (t.Length > 0)
                {
                    rawler = new TagClear().Trim().Add(new DataWrite()
                    {
                        Attribute = node.GetClassName() + "_" + node.Name
                    }).GetRoot();
                    if (node.ChildNodes.Count == 1 && node.ChildNodes.Where(n => n.Name == "#text").Any())
                    {
                        flag次のノードを調べる = false;
                    }
                }
            }
            if (rawler != null && node.ChildNodes.Count == 1 && node.ChildNodes.Where(n => n.Name == "span").Any())
            {
                rawler.AddChildren(new DataWrite()
                {
                    Attribute = node.GetClassName()
                });
            }

            foreach (var item in node.ChildNodes)
            {
                if (flag次のノードを調べる)
                {
                    var r = CreateRawler(item);

                    if (r != null && rawler != null)
                    {
                        rawler.AddChildren(r);
                    }
                    else
                    {
                        if (r != null && rawler == null)
                        {
                            rawler = r;
                        }
                    }
                }
            }
            return(rawler);
        }
Beispiel #3
0
 protected virtual void OnDataWrite(byte[] buffer, int offset, int count)
 {
     DataWrite?.Invoke(this, new DataEventArgs(buffer, offset, count));
 }
Beispiel #4
0
        /// <summary>
        /// 开始接收GPS数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_StartRecv_Click(object sender, EventArgs e)
        {
            try
            {
                this.tsReceiveOrNot.ForeColor = Color.Red;
                int flag = GarminUSB.Classes.DLL.GarminUSB.setGarminUSBReady();
                if (flag == 0)
                {
                    this.tsReceiveOrNot.Text = "状态:GarminUSB接收机未插入!";//状态栏信息
                    MessageBox.Show("请插入GarminUSB接收机!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }


                this.btn_SartRecv.Enabled = false;

                string strRcv = null;

                this.tsReceiveOrNot.Text = "状态:GPS数据接收中。。。。。。";//状态栏信息

                // rtxt_DataRecv.SelectAll();
                // rtxt_DataRecv.SelectionColor = Color.Blue;         //改变字体的颜色

                #region 注释掉

                /*
                 * //!!!静态类里面的静态方法,要通过类调用,竟然忘记了!!!太笨
                 * GarminUSB.Classes.DLL.GarminUSB.setGarminUSBReady();
                 *
                 * for (; ; )
                 * {
                 *
                 *  this.tsReceiveOrNot.Text = "状态:GPS数据中。。。。。。";
                 *  //在控件上用程序加了东西要refresh才看的到  2017.7.21 xnn
                 *  this.Refresh();
                 *
                 *  //输出当前时间
                 *  DateTime dt = DateTime.Now;
                 *
                 *  // rtxt_DataRecv.Text += dt.GetDateTimeFormats('f')[0].ToString() + "\r\n";
                 *  rtxt_DataRecv.Text += dt.ToLocalTime().ToString() + "\r\n";
                 *  rtxt_DataRecv.SelectAll();
                 *  rtxt_DataRecv.SelectionColor = Color.Blue;         //改变字体的颜色
                 *
                 *
                 *  IntPtr ptrRet = GarminUSB.Classes.DLL.GarminUSB.getGPSData();//获得返回数据所在地址
                 *  strRcv = Marshal.PtrToStringAnsi(ptrRet);//通过地址查找接收到的GPS数据
                 *
                 *  //一下两种方式都可以,但是方法二可能会出现乱码,偶现  2017.7.21 xnn
                 *  /*方法一  按字符判断
                 *  char[] temp = strRcv.ToCharArray();
                 *  strRcv=null;
                 *  for (int i = 0; i < temp.Length; i++)
                 *  {
                 *      if (!temp[i].Equals('\r')  && !temp[i].Equals('\n') )
                 *      {
                 *          strRcv += temp[i];
                 *      }
                 *      else
                 *      {
                 *          break;
                 *      }
                 *  }
                 */
                /*
                 *    //方法二   截取字符串处理方式
                 *    int index = strRcv.LastIndexOf('\r');
                 *    strRcv = strRcv.Substring(0, index);
                 *
                 *   // rtxt_DataRecv.Text += strRcv + "\r\n";             //第一种,直接显示信息在文本框
                 *
                 *    this.Invoke(showGPS, strRcv);  //第二种,通过委托,将GPS数据显示在文本框中 2017.7.21 xnn
                 *
                 *    //保存GPS数据
                 *    saveData(strRcv + "\r\n");
                 *    //打印时间+GPS数据
                 *   // saveData(dt.ToLocalTime().ToString() + "\r\n" + strRcv );
                 * }
                 */

                #endregion

                DataWrite writeGPSData = new DataWrite();
                writeGPSData.UpdateUIDelegate += UpdataUIStatus;//绑定更新任务状态的委托


                Thread thread = new Thread(new ThreadStart(writeGPSData.writeData));
                thread.IsBackground = true;//后台
                thread.Start();
            }
            catch (Exception ex)
            {
                Log.WriteLog.Write("GPSReader_USB", "btn_StartRecv_Click", ex.Message);
                // MessageBox.Show(ex.Message, "出错提示btn_Switch_Click");
                return;
            }
        }
Beispiel #5
0
	void Start () {
		HSVConverter = GetComponent<HSVtoRGB> ();
		dw = GetComponent<DataWrite> ();
		musics = ShuffleACList (musics);
		Setup ();
	}