Example #1
0
 public void DisplayRecv(string strRecv)
 {
     if (textAsyncRecv.InvokeRequired)
     {
         RecvText _myInvoke = new RecvText(DisplayRecv);
         this.Invoke(_myInvoke, new object[] { strRecv });
     }
     else
     {
         this.textAsyncRecv.AppendText(strRecv + "\n");
     }
 }
Example #2
0
        private void Form1_Load(object sender, EventArgs e)
        {
            initSendBox();
            //StringBuilder r = new StringBuilder();
            //for (int i = ' '; i < 128; i++)
            //    r.Append((char)i);
            //FileData.Text = r.ToString();
            ips           = getIPAddress();
            GetIPID       = Encoding.Default.GetBytes("print(\"ID:\"..node.chipid())");
            OutPoint      = new IPEndPoint(IPAddress.Any, 0);
            BroadcastFlag = true;
            new Task(() => {
                while (!this.IsDisposed)
                {
                    try
                    {
                        byte[] buff      = Search.Receive(ref OutPoint);
                        lasttarget       = OutPoint.Address;
                        OutPoint.Address = IPAddress.Any;
                        OutPoint.Port    = 0;
                        string value     = Encoding.Default.GetString(buff);
                        if (value.IndexOf("[") == 0)
                        {
                            value = value.Substring(1);
                            value = value.Substring(0, value.Length - 1);
                        }
                        if (value.IndexOf("ID:") == 0)
                        {
                            IPAddress ip = OutPoint.Address;
                            int id       = int.Parse(value.Substring(3));
                            bool isfind  = false;
                            foreach (CarData car in DevSelect.Items)
                            {
                                if (car.ID == id)
                                {
                                    if (car.ip.Address != lasttarget.Address)
                                    {
                                        car.ip = lasttarget;
                                    }
                                    isfind = true;
                                    break;
                                }
                            }
                            if (!isfind)
                            {
                                CarData cd = new CarData(lasttarget, id);

                                Invoke(new MethodInvoker(() =>
                                {
                                    DevSelect.Items.Add(cd);
                                    if (DevSelect.SelectedIndex == -1)
                                    {
                                        DevSelect.SelectedIndex = 0;
                                    }
                                }));
                            }
                            Invoke(new MethodInvoker(() =>
                            {
                                DevSelect.Update();
                            }));
                            continue;
                        }
                        else
                        {
                            Invoke(new MethodInvoker(() =>
                            {
                                RecvText.AppendText(value + "\r\n");
                            }));
                        }
                        if (DownloadFlag)
                        {
                            if (value.IndexOf("W:") == 0)
                            {
                                int pos = int.Parse(value.Substring(2));
                                if (pos == WriteID)
                                {
                                    WriteID++;
                                    if (WriteID < 0)
                                    {
                                        SendTargetData("file.open(\"" + TargetFile.name + "\",\"w+\") print(\"W:" + WriteID + "\")");
                                    }
                                    else
                                    if (WriteID < TargetFile.lines.Count)
                                    {
                                        SendTargetData("file.writeline('" + TargetFile.lines[WriteID].Replace("\\", "\\\\").Replace("\"", "\\\"").Replace("'", "\\'") + "') print('W:" + WriteID + "')");
                                        Invoke(new MethodInvoker(() =>
                                        {
                                            Downprogress.Value = WriteID * 100 / TargetFile.lines.Count;
                                        }));
                                    }
                                    else
                                    {
                                        SendTargetData("file.close()");
                                        Invoke(new MethodInvoker(() =>
                                        {
                                            Downprogress.Value   = 100;
                                            Downprogress.Visible = false;
                                            DownloadFlag         = false;
                                        }));
                                    }
                                }
                            }
                            else if (value.IndexOf("D:") == 0)
                            {
                                int pos = int.Parse(value.Substring(2));
                                if (pos == WriteID)
                                {
                                    WriteID++;
                                    if (WriteID < 0)
                                    {
                                        SendTargetData("file.open(\"" + TargetFile.name + "\",\"w+\") function t2s(t) for i=1,#t do t[i]=string.char(t[i]) end return table.concat(t) end rp=" + WriteID + " print(\"D:\"..rp)");
                                    }
                                    else
                                    if ((TargetFile.stream.Length - TargetFile.stream.Position) != 0)
                                    {
                                        StringBuilder sb = new StringBuilder();
                                        int i            = (TargetFile.stream.Length - TargetFile.stream.Position) >= 32 ? 32 : (int)(TargetFile.stream.Length - TargetFile.stream.Position);
                                        while (i-- != 0)
                                        {
                                            sb.Append(TargetFile.stream.ReadByte());
                                            sb.Append(',');
                                        }
                                        TargetFile.writeInfo = sb.ToString();
                                        SendTargetData("file.write(t2s({" + TargetFile.writeInfo + "})) rp=" + WriteID + " print(\"D:\"..rp)");
                                        Invoke(new MethodInvoker(() =>
                                        {
                                            Downprogress.Value = WriteID * 100 / (int)(TargetFile.stream.Length / 32);
                                        }));
                                    }
                                    else
                                    {
                                        SendTargetData("file.close()");
                                        Invoke(new MethodInvoker(() =>
                                        {
                                            Downprogress.Value = 100;
                                            //Downprogress.Visible = false;
                                        }));
                                    }
                                }
                            }
                        }
                    }
                    catch { }
                }
            }).Start();
            int SearchCount = 15;

            new Task(() => {
                while (!this.IsDisposed)
                {
                    try
                    {
                        if (++SearchCount >= 15)
                        {
                            if (BroadcastFlag)
                            {
                                BroadcastData(GetIPID);
                            }
                            SearchCount = 0;
                        }
                    }
                    catch { }
                    Thread.Sleep(100);
                }
            }).Start();
        }