基本信息
源码名称:串口调试助手源代码
源码大小:4.51M
文件格式:.rar
开发语言:C#
更新时间:2016-12-29
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
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.Collections;
using System.IO.Ports;
using System.Diagnostics;
using System.Timers;
namespace port_51
{
public partial class Form1 : Form
{
SerialPort sp1 = new SerialPort();
public Form1()
{
InitializeComponent();
}
int timer_t = 0;
#region 窗体载入
private void Form1_Load(object sender, EventArgs e)
{
//皮肤文件
//skinEngine1.SkinFile = Application.StartupPath @"\DiamondBlue.ssk";
//skinEngine1.SkinFile = Application.StartupPath @"\DiamondBlue.ssk";
//系统时间
timer2.Start();
//所有串口
pictureBox1.Image = Properties.Resources.gray;
for (int i = 1; i <= 16; i )
{
cb_port.Items.Add("COM" i);
cb_port.SelectedIndex = 0;
}
//波特率
int[] baud = { 115200, 57600, 38400, 28800, 19200, 14400, 9600, 4800, 2400, 1200 };
for (int i = 0; i < 10; i )
{
cb_baud.Items.Add(baud[i]);
}
cb_baud.SelectedIndex = 7;
//校验位
cb_check.Items.Add("None");
cb_check.Items.Add("Odd");
cb_check.Items.Add("Even");
cb_check.Items.Add("Mark");
cb_check.Items.Add("Space");
cb_check.SelectedIndex = 0;
//数据位
for (int i = 8; i > 3; i--)
{
cb_data.Items.Add(i);
}
cb_data.SelectedIndex = 0;
//停止位
cb_stop.Items.Add("1");
cb_stop.Items.Add("1.5");
cb_stop.Items.Add("2");
cb_stop.SelectedIndex = 0;
//发送/接收格式默认
rb_hex_r.Checked = true;
rb_hex_s.Checked = true;
timer1.Enabled = false;
}
#endregion
#region 系统时间
private void timer2_Tick(object sender, EventArgs e)
{
DateTime dt = System.DateTime.Now;
label8.Text = dt.ToString();
}
#endregion
#region “文件”操作
private void label7_MouseEnter(object sender, EventArgs e)
{
label7.BackColor = Color.LightGray;
}
private void label7_MouseLeave(object sender, EventArgs e)
{
label7.BackColor = Color.Transparent;
}
#endregion
#region 全部串口和可用串口切换
private void button1_Click(object sender, EventArgs e)
{
switch (button1.Text)
{
case "可用串口":
try
{
button1.Text = "全部串口";
cb_port.Items.Clear();
string[] str = SerialPort.GetPortNames();
for (int i = 0; i < str.Length; i )
{
cb_port.Items.Add(str[i]);
}
cb_port.SelectedIndex = 0;
}
catch (Exception)
{
MessageBox.Show("没有可用端口","提示");
}
break;
case "全部串口":
button1.Text = "可用串口";
cb_port.Items.Clear();
for (int i = 1; i <= 16; i )
{
cb_port.Items.Add("COM" i);
}
cb_port.SelectedIndex = 0;
break;
default:
MessageBox.Show("请选择可用串口");
break;
}
}
#endregion
#region 定时器
//private void button9_Click(object sender, EventArgs e)
//{
// timer2.Start();
//}
//private void timer2_Tick(object sender, EventArgs e)
//{
// int c;
// if (!int.TryParse(tb_miao.Text, out c))
// {
// timer2.Stop();
// MessageBox.Show("定时时间格式错误,请重新输入", "提示");
// return;
// }
// else
// {
// int clock = Convert.ToInt16(tb_miao.Text);
// if (count == clock)
// {
// timer2.Stop();
// MessageBox.Show("定时时间到", "提示");
// return;
// }
// count ;
// }
//}
#endregion
#region 串口开关
private void button2_Click(object sender, EventArgs e)
{
if (button2.Text == "打开串口")
{
try
{
if (!sp1.IsOpen)
{
#region 串口参数设置
//串口号
sp1.PortName = cb_port.SelectedItem.ToString();
//串口设置
sp1.BaudRate = Convert.ToInt32(cb_baud.SelectedItem);//波特率
sp1.DataBits = Convert.ToInt32(cb_data.SelectedItem);//数据位
switch (cb_stop.Text) //停止位
{
case "1": sp1.StopBits = StopBits.One; break;
case "1.5": sp1.StopBits = StopBits.OnePointFive; break;
case "2": sp1.StopBits = StopBits.Two; break;
default: MessageBox.Show("停止位参数有误", "提示"); break;
}
switch (cb_check.Text) //校验位
{
case "None": sp1.Parity = Parity.None; break;
case "Odd": sp1.Parity = Parity.Odd; break;
case "Even": sp1.Parity = Parity.Even; break;
case "Mark": sp1.Parity = Parity.Mark; break;
case "Space": sp1.Parity = Parity.Space; break;
default: MessageBox.Show("校验位参数有误", "提示"); break;
}
#endregion
sp1.Open();
button2.Text = "关闭串口";
//设置必要控件不可用
cb_port.Enabled = false; cb_data.Enabled = false; cb_baud.Enabled = false;
cb_check.Enabled = false; cb_stop.Enabled = false; button1.Enabled = false;
//指示灯亮
pictureBox1.Image = imageList1.Images[1]; //0:灰色,1:绿色,2:红色
}
}
catch (Exception Err)
{
MessageBox.Show(Err.Message);
}
}
else
{
try
{
sp1.Close();
button2.Text = "打开串口";
pictureBox1.Image = imageList1.Images[0];
cb_port.Enabled = true; cb_data.Enabled = true; cb_baud.Enabled = true;
cb_check.Enabled = true; cb_stop.Enabled = true; button1.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
#endregion
#region 单个显示时LED互斥
private void LED1_CheckedChanged(object sender, EventArgs e) //LED1
{
if (LED1.Checked == true)
{
LED2.Enabled = false; LED3.Enabled = false; LED4.Enabled = false; LED5.Enabled = false;
LED6.Enabled = false; LED7.Enabled = false; LED8.Enabled = false;
}
else
{
LED2.Enabled = true; LED3.Enabled = true; LED4.Enabled = true; LED5.Enabled = true;
LED6.Enabled = true; LED7.Enabled = true; LED8.Enabled = true;
}
}
private void LED2_CheckedChanged_1(object sender, EventArgs e) //LED2
{
if (LED2.Checked == true)
{
LED1.Enabled = false; LED3.Enabled = false; LED4.Enabled = false; LED5.Enabled = false;
LED6.Enabled = false; LED7.Enabled = false; LED8.Enabled = false;
}
else
{
LED1.Enabled = true; LED3.Enabled = true; LED4.Enabled = true; LED5.Enabled = true;
LED6.Enabled = true; LED7.Enabled = true; LED8.Enabled = true;
}
}
private void LED3_CheckedChanged(object sender, EventArgs e) //LED3
{
if (LED3.Checked == true)
{
LED1.Enabled = false; LED2.Enabled = false; LED4.Enabled = false; LED5.Enabled = false;
LED6.Enabled = false; LED7.Enabled = false; LED8.Enabled = false;
}
else
{
LED1.Enabled = true; LED2.Enabled = true; LED4.Enabled = true; LED5.Enabled = true;
LED6.Enabled = true; LED7.Enabled = true; LED8.Enabled = true;
}
}
private void LED4_CheckedChanged(object sender, EventArgs e) //LED4
{
if (LED4.Checked == true)
{
LED1.Enabled = false; LED3.Enabled = false; LED2.Enabled = false; LED5.Enabled = false;
LED6.Enabled = false; LED7.Enabled = false; LED8.Enabled = false;
}
else
{
LED1.Enabled = true; LED3.Enabled = true; LED2.Enabled = true; LED5.Enabled = true;
LED6.Enabled = true; LED7.Enabled = true; LED8.Enabled = true;
}
}
private void LED5_CheckedChanged(object sender, EventArgs e) //LED5
{
if (LED5.Checked == true)
{
LED1.Enabled = false; LED3.Enabled = false; LED4.Enabled = false; LED2.Enabled = false;
LED6.Enabled = false; LED7.Enabled = false; LED8.Enabled = false;
}
else
{
LED1.Enabled = true; LED3.Enabled = true; LED4.Enabled = true; LED2.Enabled = true;
LED6.Enabled = true; LED7.Enabled = true; LED8.Enabled = true;
}
}
private void LED6_CheckedChanged(object sender, EventArgs e) //LED6
{
if (LED6.Checked == true)
{
LED1.Enabled = false; LED3.Enabled = false; LED4.Enabled = false; LED5.Enabled = false;
LED2.Enabled = false; LED7.Enabled = false; LED8.Enabled = false;
}
else
{
LED1.Enabled = true; LED3.Enabled = true; LED4.Enabled = true; LED5.Enabled = true;
LED2.Enabled = true; LED7.Enabled = true; LED8.Enabled = true;
}
}
private void LED7_CheckedChanged(object sender, EventArgs e) //LED7
{
if (LED7.Checked == true)
{
LED1.Enabled = false; LED3.Enabled = false; LED4.Enabled = false; LED5.Enabled = false;
LED6.Enabled = false; LED2.Enabled = false; LED8.Enabled = false;
}
else
{
LED1.Enabled = true; LED3.Enabled = true; LED4.Enabled = true; LED5.Enabled = true;
LED6.Enabled = true; LED2.Enabled = true; LED8.Enabled = true;
}
}
private void LED8_CheckedChanged(object sender, EventArgs e) //LED8
{
if (LED8.Checked == true)
{
LED1.Enabled = false; LED3.Enabled = false; LED4.Enabled = false; LED5.Enabled = false;
LED6.Enabled = false; LED7.Enabled = false; LED2.Enabled = false;
}
else
{
LED1.Enabled = true; LED3.Enabled = true; LED4.Enabled = true; LED5.Enabled = true;
LED6.Enabled = true; LED7.Enabled = true; LED2.Enabled = true;
}
}
#endregion
#region LED单个显示
private void button3_Click(object sender, EventArgs e)
{
try
{
StringBuilder sb = new StringBuilder();
foreach (Control c in groupBox4.Controls)
{
if (c is CheckBox)
{
CheckBox ck = c as CheckBox;
if (ck.Checked == true)
{
sb.AppendLine(ck.Text);
}
}
}
MessageBoxButtons bt = MessageBoxButtons.YesNo;
DialogResult dr = MessageBox.Show("确定要选择" "“" sb "”" "吗?", "提示", bt);
if (dr != DialogResult.Yes) return;
else
{
if (sp1.IsOpen)
{
string num = sb.ToString().Substring(3);
sp1.Write(num);
}
else
{
MessageBox.Show("请先打开串口!", "提示");
return;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
#endregion
#region LED多种效果
private void button4_Click(object sender, EventArgs e)
{
for (int i = 0; i < groupBox5.Controls.Count; i )
{
RadioButton rbx = groupBox5.Controls[i] as RadioButton;
if (rbx.Checked==true)
{
MessageBoxButtons bt = MessageBoxButtons.YesNo;
DialogResult dr= MessageBox.Show("确定要选择" "“" rbx.Text "”" "吗?", "提示", bt);
if (dr != DialogResult.Yes) return;
else
{
if (sp1.IsOpen)
{
string num = rbx.Name.Substring(4);
sp1.Write(num);
}
else
{
MessageBox.Show("请先打开串口!", "提示");
return;
}
//serialPort1.WriteLine(rb.Text);
}
}
}
}
#endregion
#region 清空发送/接收区内容
private void button10_Click(object sender, EventArgs e)
{
tb_send.Text = ""; return;
}
private void button6_Click(object sender, EventArgs e)
{
lb_receive.Items.Clear(); return;
}
#endregion
#region 发送数据
private void button5_Click(object sender, EventArgs e)
{
tb_miao.Enabled = false; cb_dingshi.Enabled = false;
tb_miao.Enabled = false; button8.Enabled = false;
try
{
if (!sp1.IsOpen)
{
MessageBox.Show("请先打开串口", "提示"); return;
}
if (rb_hex_s.Checked == true)
{
#region 确定输入字符是否合法
if (!((Convert.ToChar(tb_send.Text) >= '0') && (Convert.ToChar(tb_send.Text) <= '9')))
{
//if (!((Convert.ToChar(tb_send.Text) >= 'a') && (Convert.ToChar(tb_send.Text) <= 'f')))
if (!((Convert.ToChar(tb_send.Text) >= 65) && (Convert.ToChar(tb_send.Text) <= 70)))
{
//if (!((Convert.ToChar(tb_send.Text) >= 'A') && (Convert.ToChar(tb_send.Text) <= 'F')))
if (!((Convert.ToChar(tb_send.Text) >= 97) && (Convert.ToChar(tb_send.Text) <= 102)))
{
MessageBox.Show("输入数据范围应为:0-f/F", "提示"); return;
}
}
}
#endregion
sp1.WriteLine(tb_send.Text);
}
else sp1.WriteLine(tb_send.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message); return;
}
}
#endregion
#region 定时发送数据
#region 判断定时时间
private void timer1_Tick(object sender, EventArgs e)
{
try
{
int Dingshi = Convert.ToInt32(tb_miao.Text);
string str_send = tb_send.Text;
while (timer_t >= Dingshi)
{
byte data = Convert.ToByte(str_send, 16);
if (sp1.IsOpen) sp1.Write(data.ToString());
else
{
MessageBox.Show("请先打开串口!", "提示");
return;
}
} timer_t ;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message); return;
}
}
#endregion
#region 开始/停止定时发送数据
private void button8_Click(object sender, EventArgs e)
{
#region 确定输入字符是否合法
try
{
if (rb_hex_s.Checked == true)
{
if (!((Convert.ToChar(tb_send.Text) >= '0') && (Convert.ToChar(tb_send.Text) <= '9')))
{
//if (!((Convert.ToChar(tb_send.Text) >= 'a') && (Convert.ToChar(tb_send.Text) <= 'f')))
if (!((Convert.ToChar(tb_send.Text) >= 65) && (Convert.ToChar(tb_send.Text) <= 70)))
{
//if (!((Convert.ToChar(tb_send.Text) >= 'A') && (Convert.ToChar(tb_send.Text) <= 'F')))
if (!((Convert.ToChar(tb_send.Text) >= 97) && (Convert.ToChar(tb_send.Text) <= 102)))
{
MessageBox.Show("输入数据范围应为:0-f/F", "提示"); return;
}
}
}
string str_send = tb_send.Text;
}
else if (rb_char_s.Checked == true)
{
string str_send = tb_send.Text;
}
else
{
MessageBox.Show("请选择要发送数据的格式", "错误提示"); return;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message); return;
}
#endregion
#region 确定定时时间输入是否合法
int c;
if (!int.TryParse(tb_miao.Text, out c))
{
MessageBox.Show("定时时间输入不合法\n请重新输入", "错误提示"); return;
}
#endregion
timer1.Enabled = true;
try
{
if (button8.Text == "开始")
{
if (cb_dingshi.Checked==false)
{
MessageBox.Show("请选中定时发送按钮","提示");
}
timer1.Start();
button8.Text = "停止";
}
else
{
timer1.Stop();
button8.Text = "开始";
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
#endregion
#endregion
#region 接收数据
private void button9_Click(object sender, EventArgs e)
{
try
{
DateTime dt = DateTime.Now;
string time = dt.ToString();
lb_receive.Items.Add(time);
lb_receive.Items.Add(sp1.ReadLine());
lb_receive.ForeColor = Color.Blue;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "提示"); return;
}
}
#endregion
#region 使必要控件不可用
private void cb_dingshi_CheckedChanged(object sender, EventArgs e)
{
if (cb_dingshi.Checked == true)
{
cb_port.Enabled = false; cb_data.Enabled = false; cb_baud.Enabled = false;
cb_check.Enabled = false; cb_stop.Enabled = false; button1.Enabled = false;
button2.Enabled = false; button3.Enabled = false; button4.Enabled = false;
button5.Enabled = false; tb_miao.Enabled = false;
}
else
{
cb_port.Enabled = true; cb_data.Enabled = true; cb_baud.Enabled = true;
cb_check.Enabled = true; cb_stop.Enabled = true; button1.Enabled = true;
button2.Enabled = true; button3.Enabled = true; button4.Enabled = true;
button5.Enabled = true; tb_miao.Enabled = true;
}
}
#endregion
#region 停止所有效果
private void button11_Click(object sender, EventArgs e)
{
try
{
if (sp1.IsOpen) sp1.Write("d");
LED2.Enabled = true; LED3.Enabled = true; LED4.Enabled = true; LED5.Enabled = true;
LED6.Enabled = true; LED7.Enabled = true; LED8.Enabled = true; LED1.Enabled = true;
LED1.Checked = false; LED2.Checked = false; LED3.Checked = false; LED4.Checked = false;
LED5.Checked = false; LED6.Checked = false; LED7.Checked = false; LED8.Checked = false;
lsd_9.Checked = false; pmd_a.Checked = false; hyd_b.Checked = false; jfd_c.Checked = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message); return;
}
}
#endregion
#region 退出程序
private void button7_Click(object sender, EventArgs e)
{
MessageBoxButtons mess = MessageBoxButtons.OKCancel;
DialogResult dr = MessageBox.Show("确定要退出系统吗?", "提示", mess);
if (dr == DialogResult.OK)
{
Application.Exit();
sp1.Close();
}
}
#endregion
private void label3_Click(object sender, EventArgs e)
{
}
}
}