⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ts调试者.cs

📁 串口调试工具
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using Lz.串口;
namespace 调试者
{
    public partial class TS调试者 : Form
    {
        COM com = new COM();

        #region 重要的函数
        private void comdk打开()
        {
            try
            {
                com.PortName = commz名字.Text;
                com.BaudRate = Convert.ToInt16(combt波特率.Text);
                com.Parity = COM.StringToParity(comjy校验位.Text);
                com.DataBits = Convert.ToInt16(comsj数据位.Text);
                com.StopBits = COM.StingToStopBits(comtz停止位.Text);
                com.Open();
                if (com.IsOpen)
                {
                    but打开.Text = "关闭";
                    labzt状态.BackColor = Color.Red;
                    js接收();
                    labckx串口信息();
                    throw new Exception("串口打开成功!");
                }
                else
                {
                    throw new Exception("串口打开失败!");
                }
            }
            catch (Exception ex)
            {
                fill状态条2(ex.Message);
            }
        }
        private void comgb关闭()
        {
            try
            {
                if (com.IsOpen)
                {
                    if (readThread != null)
                    {
                        readThread.Abort();
                    }
                    com.Close();
                    if (!com.IsOpen)
                    {
                        but打开.Text = "打开";
                        labzt状态.BackColor = Color.Blue;
                        throw new Exception("串口关闭成功!");
                    }
                    else
                    {
                        throw new Exception("串口关闭失败!");
                    }
                }
                else
                {
                    throw new Exception("不会出现这种情况。");
                }
            }
            catch (Exception ex)
            {
                fill状态条2(ex.Message);
            }
        }
        private void comcx重新打开()
        {
            comgb关闭();
            comdk打开();
        }
        private void fs发送(string _fs)
        {
            if (_fs.Length > 0)
            {
                try
                {
                    byte[] bt =TiaoShiQi.StringToBytes(_fs, checkfs16进制发送.Checked);
                    com.Write(bt, 0, bt.Length);
                    TiaoShiQi.sjcl数据处理(this, richfsq发送区, bt, checkfs16xs发送区16进制显示.Checked, checkfszfxs发送区字符显示.Checked, checkfsxhxs发送区新行显示.Checked);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message.ToString());
                }
            }
            else
            {
                throw new Exception("发送失败,你没有填写任何数据。");
            }
        }
        private void js接收()
        {
            readThread = new Thread(new ThreadStart(threadStart));
            readThread.Start();
        }
        #endregion

        #region 线程
        private Thread readThread;
        private void threadStart()
        {
            while (com.IsOpen)//此线程不停止
            {
                try
                {
                    while (com.BytesToRead == 0)//如果没有任何数据,就延时100毫秒。
                    {
                        Thread.Sleep(100);
                    }
                    byte[] bt = new byte[com.BytesToRead];
                    com.Read(bt, 0, com.BytesToRead);
                    if (bt.Length > 0)
                    {
                        TiaoShiQi.sjcl数据处理(this, richjsq接收区, bt, checkjs16xs接收区16进制显示.Checked, checkjszfxs接收区字符显示.Checked, checkjsxhxs接收区新行显示.Checked);
                    }
                }
                catch (Exception ex)
                {
                    readThread.Abort();
                    fill状态条2(ex.Message.ToString());
                }
            }
        }
        #endregion

        #region 系统生成
        private void TS调试者_Load(object sender, EventArgs e)
        {
            commz名字.Items.AddRange(COM.AllCom());
            commz名字.SelectedIndex = 0;
            foreach (int i in COM.AllBaudRate())
            {
                combt波特率.Items.Add(i);
            }
            combt波特率.SelectedIndex = 6;
            foreach (string s in COM.AllParity())
            {
                comjy校验位.Items.Add(s);
            }
            comjy校验位.SelectedIndex = 0;
            foreach (int i in COM.AllDataBits())
            {
                comsj数据位.Items.Add(i);
            }
            comsj数据位.SelectedIndex = 2;
            foreach (string s in COM.AllStopBits())
            {
                comtz停止位.Items.Add(s);
            }
            comtz停止位.SelectedIndex = 0;
        }
        private void but打开_Click(object sender, EventArgs e)//打开按钮
        {
            try
            {
                if (but打开.Text == "打开")
                {
                    comdk打开();
                }
                else
                {
                    comgb关闭();
                }
            }
            catch (Exception ex)
            {
                fill状态条2(ex.Message.ToString());
            }
        }
        private void butfs发送_Click(object sender, EventArgs e)//发送按钮
        {
            try
            {
                if (com.IsOpen)
                {
                    try
                    {
                        fs发送(richfs发送.Text.ToString());
                        throw new Exception("发送成功。");
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message.ToString());
                    }
                }
                else
                {
                    throw new Exception("串口没有打开。");
                }
            }
            catch (Exception ex)
            {
                toolStripStatusLabel2.Text = ex.Message.ToString();
            }
        }
        private void butjs接收区清空_Click(object sender, EventArgs e)//发送区清空
        {
            richjsq接收区.Text = "";
        }
        private void butfs发送区清空_Click(object sender, EventArgs e)//发送区清空
        {
            richfsq发送区.Text = "";
        }
        private void butfsq发送清空_Click(object sender, EventArgs e)//发送清空
        {
            richfs发送.Text = "";
        }
        private void timer1_Tick(object sender, EventArgs e)//自动发送时间控制
        {
            try
            {
                if (com.IsOpen)
                {
                    fs发送(richfs发送.Text.ToString());
                    throw new Exception("发送成功。");
                }
                else
                {
                    throw new Exception("串口没有打开。");
                }
            }
            catch (Exception ex)
            {
                toolStripStatusLabel2.Text = ex.Message.ToString();
            }
        }
        private void checkzd自动发送_CheckedChanged(object sender, EventArgs e)//自动发送选项
        {
            if (checkzd自动发送.Checked)
            {
                timer1.Interval = Convert.ToInt16(textZq周期.Text.ToString());
                timer1.Enabled = true;
            }
            else
            {
                timer1.Enabled = false;
            }
        }
        private void commz名字_SelectedIndexChanged(object sender, EventArgs e)//重新设置串口
        {
            comcx重新打开();
        }
        #endregion

        #region 无用
        public TS调试者()
        {
            InitializeComponent();
        }
        private void TS调试者_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (readThread != null)
            {
                try
                {
                    if (com.IsOpen)
                    {
                        com.Close();
                    }
                    readThread.Abort();
                }
                catch (Exception ex)
                {
                    fill状态条2(ex.Message);
                    readThread.Abort();
                }
            }
        }
        private void fill状态条2(string s)
        {
            toolStripStatusLabel2.Text = s.ToString();
        }
        private void labckx串口信息()
        {
            textBox1.Text = com.PortName.ToString() + "," + com.BaudRate.ToString() + "," + COM.ParityToString(com.Parity) + "," + com.DataBits.ToString() + "," +COM.StopBitsToSting(com.StopBits);
        }
        Icon i1 = Resource1.I1;
        Icon i2 = Resource1.I2;
        private void timer2_Tick(object sender, EventArgs e)
        {
            if (Icon==i1)
            {
                Icon =i2;
            }
            else
            {
                Icon = i1;
            }
        }
        private void 复制_Click(object sender, EventArgs e)
        {
            this.contextMenuStrip1.SourceControl.Select();//先获取焦点,防止点两下才运行
            RichTextBox rtb = (RichTextBox)this.contextMenuStrip1.SourceControl;
            rtb.Copy();
        }
        private void 粘贴_Click(object sender, EventArgs e)
        {
            this.contextMenuStrip1.SourceControl.Select();
            RichTextBox rtb = (RichTextBox)this.contextMenuStrip1.SourceControl;
            rtb.Paste();
        }
        private void 剪切_Click(object sender, EventArgs e)
        {
            this.contextMenuStrip1.SourceControl.Select();
            RichTextBox rtb = (RichTextBox)this.contextMenuStrip1.SourceControl;
            rtb.Cut();
        }
        private void 删除_Click(object sender, EventArgs e)
        {
            this.contextMenuStrip1.SourceControl.Select();
            RichTextBox rtb = (RichTextBox)this.contextMenuStrip1.SourceControl;
            rtb.SelectedText = "";
        }
        private void 全选_Click(object sender, EventArgs e)
        {
            this.contextMenuStrip1.SourceControl.Select();
            RichTextBox rtb = (RichTextBox)this.contextMenuStrip1.SourceControl;
            rtb.SelectAll();
        }
        private void 撤销_Click(object sender, EventArgs e)
        {
            this.contextMenuStrip1.SourceControl.Select();
            RichTextBox rtb = (RichTextBox)this.contextMenuStrip1.SourceControl;
            rtb.Undo();
        }
        #endregion
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -