📄 ts调试者.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 + -