实例介绍
【实例简介】
【实例截图】
【核心代码】
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)
{
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论