乐于分享
好东西不私藏

【技术分享】十分钟,AI帮你写一个串口助手调试软件

【技术分享】十分钟,AI帮你写一个串口助手调试软件
目前,AI已经向许多领域进行渗透,软件开发也不例外,软件开发工程师如何利用AI增效?我今天做了一个尝试,如下:
一、题目:《用Trae AI生成一个基于WinForm架构的串口助手调试工具》
二、所用工具
TraeCode、VS2022
三、步骤
第一步:下载TraeWork。链接分享如下:
我在用 TraeWork AI 办公平台,搞定各类任务,通过我的分享链接登录桌面端,新注册用户一次性获得 5000 积分! https://www.trae.cn/work-fission/DY58TU63HEEY?utm_source=copy_link&utm_medium=friends_invite
TRAE Work是字节跳动推出的AI原生工作台,由TRAE SOLO升级而来。
第二步,安装TraeWork,此处需要注册。具体安装方法我就不细说了。
第三步,打开TraeWork。其界面如下:
第四步,在右下角的智能体对话框里面输入你的项目要求,比如我输入的是“用WinForm生成一个串口助手工具”,此时你需要选择一个目标文件夹。
第五步,等待10分钟左右(有的朋友网速快,可能时间更短),便会生成一套源码程序,在目标文件夹里面打开源程序,编译即可得到所要的串口助手。如下:
四、AI生成的部分源代码展示
public partial class MainForm : Form{    private readonly SerialPort _port = new SerialPort();    private long _rxCount;    private long _txCount;    // 用于在 HEX显示 关闭时累积可打印字符    private readonly StringBuilder _asciiBuf = new StringBuilder();    publicMainForm()    {        InitializeComponent();        WireEvents();        PopulateBaudRates();        PopulateDataBits();        PopulateParity();        PopulateStopBits();        RefreshPorts();        UpdateConnectionState();    }    // ===== 事件绑定 =====    privatevoidWireEvents()    {        btnRefresh.Click += (s, e) => RefreshPorts();        btnOpenClose.Click += (s, e) => ToggleConnection();        btnSend.Click += (s, e) => DoSend();        btnClearTx.Click += (s, e) => txtSend.Clear();        btnClearRx.Click += (s, e) =>        {            txtReceive.Clear();            _asciiBuf.Clear();        };        btnSaveRx.Click += (s, e) => SaveReceived();        btnResetCount.Click += (s, e) =>        {            _rxCount = 0;            _txCount = 0;            UpdateCounters();        };        chkRxHex.CheckedChanged += (s, e) =>        {            _asciiBuf.Clear();        };        chkAutoWrap.CheckedChanged += (s, e) =>        {            txtReceive.WordWrap = chkAutoWrap.Checked;        };        chkAutoSend.CheckedChanged += (s, e) =>        {            if (chkAutoSend.Checked)            {                if (!_port.IsOpen)                {                    chkAutoSend.Checked = false;                    MessageBox.Show("请先打开串口再启用自动发送。""提示",                        MessageBoxButtons.OK, MessageBoxIcon.Information);                    return;                }                tmrAutoSend.Interval = (int)numInterval.Value;                tmrAutoSend.Start();            }            else            {                tmrAutoSend.Stop();            }        };        numInterval.ValueChanged += (s, e) =>        {            if (tmrAutoSend.Enabled)            {                tmrAutoSend.Interval = (int)numInterval.Value;            }        };        tmrAutoSend.Tick += (s, e) => DoSend();        txtSend.KeyDown += (s, e) =>        {            if (e.Control && e.KeyCode == Keys.Enter)            {                DoSend();                e.SuppressKeyPress = true;            }        };        _port.DataReceived += OnDataReceived;        this.FormClosing += (s, e) =>        {            if (_port.IsOpen)            {                try { _port.Close(); } catch { }            }        };    }    // ===== 下拉框填充 =====    privatevoidPopulateBaudRates()    {        cmbBaud.Items.Clear();        int[] rates = { 1200240048009600192003840057600115200230400460800921600 };        foreach (var r in rates) cmbBaud.Items.Add(r);        cmbBaud.SelectedItem = 115200;    }    privatevoidPopulateDataBits()    {        cmbDataBits.Items.Clear();        foreach (var d in new[] { 5678 }) cmbDataBits.Items.Add(d);        cmbDataBits.SelectedItem = 8;    }    privatevoidPopulateParity()    {        cmbParity.Items.Clear();        cmbParity.Items.Add("None");        cmbParity.Items.Add("Odd");        cmbParity.Items.Add("Even");        cmbParity.Items.Add("Mark");        cmbParity.Items.Add("Space");        cmbParity.SelectedIndex = 0;    }    privatevoidPopulateStopBits()    {        cmbStopBits.Items.Clear();        cmbStopBits.Items.Add("1");        cmbStopBits.Items.Add("1.5");        cmbStopBits.Items.Add("2");        cmbStopBits.SelectedIndex = 0;    }    privatevoidRefreshPorts()    {        string prev = cmbPort.SelectedItem?.ToString() ?? "";        cmbPort.Items.Clear();        try        {            var names = SerialPort.GetPortNames();            Array.Sort(names, StringComparer.OrdinalIgnoreCase);            foreach (var n in names) cmbPort.Items.Add(n);            if (cmbPort.Items.Count == 0)            {                cmbPort.Items.Add("COM1");            }            if (cmbPort.Items.Contains(prev))                cmbPort.SelectedItem = prev;            else if (cmbPort.Items.Count > 0)                cmbPort.SelectedIndex = 0;        }        catch (Exception ex)        {            AppendStatusLine("[刷新端口失败] " + ex.Message);        }    }    // ===== 打开/关闭串口 =====    privatevoidToggleConnection()    {        if (_port.IsOpen)        {            ClosePort();        }        else        {            OpenPort();        }    }    privatevoidOpenPort()    {        if (cmbPort.SelectedItem == null)        {            MessageBox.Show("请选择串口号。""提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);            return;        }        try        {            // 关闭自动发送            if (chkAutoSend.Checked)            {                chkAutoSend.Checked = false;            }            _port.PortName = cmbPort.SelectedItem.ToString()!;            _port.BaudRate = Convert.ToInt32(cmbBaud.SelectedItem);            _port.DataBits = Convert.ToInt32(cmbDataBits.SelectedItem);            _port.Parity = ParseParity(cmbParity.SelectedItem.ToString()!);            _port.StopBits = ParseStopBits(cmbStopBits.SelectedItem.ToString()!);            _port.ReadTimeout = 500;            _port.WriteTimeout = 500;            _port.ReceivedBytesThreshold = 1;            _port.Open();            UpdateConnectionState();            AppendStatusLine($"[已打开 {_port.PortName} @ {_port.BaudRate}]");        }        catch (Exception ex)        {            MessageBox.Show("打开串口失败:\r\n" + ex.Message, "错误",                MessageBoxButtons.OK, MessageBoxIcon.Error);        }    }    privatevoidClosePort()    {        try        {            if (chkAutoSend.Checked) chkAutoSend.Checked = false;            _port.Close();            UpdateConnectionState();            AppendStatusLine("[串口已关闭]");        }        catch (Exception ex)        {            MessageBox.Show("关闭串口失败:\r\n" + ex.Message, "错误",                MessageBoxButtons.OK, MessageBoxIcon.Error);        }    }    privatevoidUpdateConnectionState()    {        if (_port.IsOpen)        {            btnOpenClose.Text = "关闭串口";            btnOpenClose.BackColor = Color.FromArgb(2205369);            tslStatus.Text = " ● 已连接 ";            tslStatus.ForeColor = Color.FromArgb(015080);            SetConfigEnabled(false);        }        else        {            btnOpenClose.Text = "打开串口";            btnOpenClose.BackColor = Color.FromArgb(0120215);            tslStatus.Text = " ● 未连接 ";            tslStatus.ForeColor = Color.Gray;            SetConfigEnabled(true);        }    }    privatevoidSetConfigEnabled(bool enabled)    {        cmbPort.Enabled = enabled;        cmbBaud.Enabled = enabled;        cmbDataBits.Enabled = enabled;        cmbParity.Enabled = enabled;        cmbStopBits.Enabled = enabled;        btnRefresh.Enabled = enabled;    }    // ===== 发送 =====    privatevoidDoSend()    {        if (!_port.IsOpen)        {            if (chkAutoSend.Checked) chkAutoSend.Checked = false;            return;        }        string text = txtSend.Text;        if (string.IsNullOrEmpty(text)) return;        byte[] data = chkTxHex.Checked            ? HexStringToBytes(text)            : Encoding.ASCII.GetBytes(text);        if (data.Length == 0return;        try        {            if (chkSendNewLine.Checked && !chkTxHex.Checked)            {                byte[] withNl = new byte[data.Length + 2];                Array.Copy(data, 0, withNl, 0, data.Length);                withNl[data.Length] = (byte)'\r';                withNl[data.Length + 1] = (byte)'\n';                data = withNl;            }            _port.Write(data, 0, data.Length);            _txCount += data.Length;            UpdateCounters();        }        catch (Exception ex)        {            AppendStatusLine("[发送失败] " + ex.Message);            if (chkAutoSend.Checked) chkAutoSend.Checked = false;        }    }    // ===== 接收 (串口线程 -> UI 线程) =====    privatevoidOnDataReceived(object sender, SerialDataReceivedEventArgs e)    {        if (_port == null || !_port.IsOpen) return;        try        {            int n = _port.BytesToRead;            if (n <= 0return;            byte[] buf = new byte[n];            _port.Read(buf, 0, n);            _rxCount += n;            this.BeginInvoke((Action)(() => DisplayReceived(buf)));        }        catch (Exception ex)        {            this.BeginInvoke((Action)(() =>                AppendStatusLine("[接收失败] " + ex.Message)));        }    }    privatevoidDisplayReceived(byte[] buf)    {        UpdateCounters();        string chunk;        if (chkRxHex.Checked)        {            chunk = BytesToHexString(buf) + " ";            _asciiBuf.Clear();            AppendReceiveText(chunk, Color.FromArgb(01000));        }        else        {            // ASCII / GBK 解码尝试            string s;            try { s = Encoding.GetEncoding("GBK").GetString(buf); }            catch { s = Encoding.ASCII.GetString(buf); }            if (chkShowTime.Checked)            {                AppendReceiveText($"[{DateTime.Now:HH:mm:ss.fff}] ", Color.FromArgb(120120120));            }            AppendReceiveText(s, Color.Black);        }        // 限制接收区长度, 避免内存膨胀        if (txtReceive.TextLength > 1_000_000)        {            txtReceive.Select(0, txtReceive.TextLength - 500_000);            txtReceive.SelectedText = "";        }    }    privatevoidAppendReceiveText(string text, Color color)    {        txtReceive.SelectionStart = txtReceive.TextLength;        txtReceive.SelectionLength = 0;        txtReceive.SelectionColor = color;        txtReceive.AppendText(text);        txtReceive.SelectionColor = txtReceive.ForeColor;        txtReceive.ScrollToCaret();    }    privatevoidAppendStatusLine(string text)    {        AppendReceiveText(text + "\r\n", Color.FromArgb(180800));    }    // ===== 计数器 =====    privatevoidUpdateCounters()    {        tslRxCount.Text = $" RX: {_rxCount:N0} ";        tslTxCount.Text = $" TX: {_txCount:N0} ";    }    // ===== 保存接收数据 =====    privatevoidSaveReceived()    {        if (txtReceive.TextLength == 0)        {            MessageBox.Show("接收区无数据可保存。""提示", MessageBoxButtons.OK, MessageBoxIcon.Information);            return;        }        using (var sfd = new SaveFileDialog())        {            sfd.Filter = "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*";            sfd.FileName = $"serial_rx_{DateTime.Now:yyyyMMdd_HHmmss}.txt";            if (sfd.ShowDialog(this) == DialogResult.OK)            {                try                {                    File.WriteAllText(sfd.FileName, txtReceive.Text, Encoding.UTF8);                    AppendStatusLine("[已保存到 " + sfd.FileName + "]");                }                catch (Exception ex)                {                    MessageBox.Show("保存失败:\r\n" + ex.Message, "错误",                        MessageBoxButtons.OK, MessageBoxIcon.Error);                }            }        }    }    // ===== 工具方法 =====    privatestatic Parity ParseParity(string s)    {        return s switch        {            "Odd" => Parity.Odd,            "Even" => Parity.Even,            "Mark" => Parity.Mark,            "Space" => Parity.Space,            _ => Parity.None,        };    }    privatestatic StopBits ParseStopBits(string s)    {        return s switch        {            "1.5" => StopBits.OnePointFive,            "2" => StopBits.Two,            _ => StopBits.One,        };    }    privatestaticstringBytesToHexString(byte[] buf)    {        var sb = new StringBuilder(buf.Length * 3);        for (int i = 0; i < buf.Length; i++)        {            if (i > 0) sb.Append(' ');            sb.Append(buf[i].ToString("X2"));        }        return sb.ToString();    }    privatestaticbyte[] HexStringToBytes(string text)    {        // 移除空白、换行、0x 前缀等        string cleaned = text            .Replace("0x""")            .Replace("0X""")            .Replace(" """)            .Replace("\r""")            .Replace("\n""")            .Replace("\t""")            .Replace(",""");        if ((cleaned.Length % 2) != 0)        {            cleaned = "0" + cleaned;        }        var bytes = new byte[cleaned.Length / 2];        for (int i = 0; i < bytes.Length; i++)        {            bytes[i] = Convert.ToByte(cleaned.Substring(i * 22), 16);        }        return bytes;    }
看了AI生成的源代码,感觉还可以,AI写的已经很像人写的了。
五、缺点
1、没有发送按钮,后面需要人为调整;
六、总结
1、本次实验只做了C#上位机程序的实验,由于没有实验环境,没有进行代码正确性的验证,但是看代码内容,应该是没有什么问题的。
2、对于Qt的测试没有进行,本打算用Qt进行实验的,但是机器上没有装。
3、对于Agent的使用还没有完全熟悉,不知道对于大型软件工程和嵌入式编程来说是否能够一样的提高产出。待后续研究。。。
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-10 20:57:53 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/921475.html
  2. 运行时间 : 0.192270s [ 吞吐率:5.20req/s ] 内存消耗:4,867.66kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=d3873a249bdb4dff9e973f329533c878
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 4.22 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.11 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000837s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001322s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.004967s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000550s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001197s ]
  6. SELECT * FROM `set` [ RunTime:0.000698s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001350s ]
  8. SELECT * FROM `article` WHERE `id` = 921475 LIMIT 1 [ RunTime:0.008269s ]
  9. UPDATE `article` SET `lasttime` = 1786366673 WHERE `id` = 921475 [ RunTime:0.006939s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000681s ]
  11. SELECT * FROM `article` WHERE `id` < 921475 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000950s ]
  12. SELECT * FROM `article` WHERE `id` > 921475 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000903s ]
  13. SELECT * FROM `article` WHERE `id` < 921475 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.008724s ]
  14. SELECT * FROM `article` WHERE `id` < 921475 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.006963s ]
  15. SELECT * FROM `article` WHERE `id` < 921475 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004385s ]
0.195089s