当前位置: 首页 > news >正文

C# 设计倒计时器、串口助手开发

文章目录

    • 1. 实现一个简单的倒计时器开始、暂停
    • 2. 串口助手开发

1. 实现一个简单的倒计时器开始、暂停

namespace Timer
{public partial class Form1 : Form{int count;//用于定时器计数int time;//存储设定的定时值bool parse = false;//控制暂停计时public Form1(){InitializeComponent();}//窗口创建初始化函数private void Form1_Load(object sender, EventArgs e){//双击窗体后在这里给下拉框添加或者在属性items里添加都可以for(int i = 1; i < 100; i++){comboBox1.Items.Add(i.ToString() + "秒");}comboBox1.Text = "1秒";}private void timer1_Tick(object sender, EventArgs e){count++;//记录、当前秒label3.Text = (time - count).ToString() + "秒";//显示剩余时间progressBar1.Value = count;//设置进度条进度if(count == time){timer1.Stop();//时间到,停止计时System.Media.SystemSounds.Asterisk.Play();//提示音MessageBox.Show("时间到,停止计时","提示");//弹出提示框count = 0;progressBar1.Value = 0;comboBox1.Text = null;}}//开始计时按钮事件private void button1_Click(object sender, EventArgs e){if (parse == true){parse = false;timer1.Stop();return;}string str = comboBox1.Text; //将下拉框内容添加到一个变量中time = Convert.ToInt16(str.Substring(0,str.Length - 1)); //得到设定的定时值progressBar1.Maximum = time;//进度条最大数值parse = true;timer1.Start();//开始计时}}
}

在这里插入图片描述

2. 串口助手开发

创建项目的时候要选带(.NET Framework)的窗体应用

using System;
using System.IO.Ports;
using System.Text;
using System.Windows.Forms;namespace SerialCommunicate
{public partial class Form1 : Form{public Form1(){InitializeComponent();//串口数据接收事件serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);//串口接收编码serialPort1.Encoding = Encoding.GetEncoding("UTF-8");System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;}private void Form1_Load(object sender, EventArgs e){for(int i = 1; i < 20; i++){comboBox1.Items.Add("COM" + i.ToString());}comboBox1.Text = "COM1";comboBox2.Text = "4800";//必须手动添加事件处理器serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);}//串口数据接收事件private void port_DataReceived(object sender, SerialDataReceivedEventArgs e){if (!radioButton3.Checked)//如果为字符模式接收{string str = serialPort1.ReadExisting();//字符串方式读textBox1.AppendText(str);}else//数值接收{//定义缓冲区,因为串口事件触发时不是实时的byte[] data = new byte[serialPort1.BytesToRead];serialPort1.Read(data, 0, data.Length);foreach(byte Member in data){string str = Convert.ToString(Member, 16).ToUpper();//空位补0textBox1.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " ");}}}private void button1_Click(object sender, EventArgs e){try{serialPort1.PortName = comboBox1.Text;serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);//十进制数据转换serialPort1.Open();button1.Enabled = false;//打开串口按钮不可用button2.Enabled = true;//关闭串口}catch{MessageBox.Show("端口错误,请检查串口", "错误");}}private void button2_Click(object sender, EventArgs e){try{serialPort1.Close();button1.Enabled = true;button2.Enabled = false;}catch(Exception err)//一般情况下关闭串口不会出错,所以不需要加处理程序{}}private void button3_Click(object sender, EventArgs e){byte[] Data = new byte[1];//判断串口是否打开if (serialPort1.IsOpen){if(textBox2.Text != ""){if (!radioButton1.Checked){try{serialPort1.WriteLine(textBox2.Text);}catch (Exception err){MessageBox.Show("串口数据写入错误", "错误");serialPort1.Close();button1.Enabled = true;button2.Enabled = false;}}else{//取余运算防止用户输入的字符为奇数个for(int i = 0; i < (textBox2.Text.Length - textBox2.Text.Length % 2) / 2; i++){Data[0] = Convert.ToByte(textBox2.Text.Substring(i * 2, 2), 16);serialPort1.Write(Data, 0, 1);}if(textBox2.Text.Length % 2 != 0){Data[0] = Convert.ToByte(textBox2.Text.Substring(textBox2.Text.Length - 1, 1), 16);serialPort1.Write(Data, 0, 1);}}}}}}
}

在这里插入图片描述

http://www.lryc.cn/news/414198.html

相关文章:

  • 图论① dfs | Java | LeetCode 797,Kama 98 邻接表实现(未完成)
  • Mac安装nvm以及配置环境变量
  • AUTOSAR实战教程-使用DET来发现开发错误
  • ZeroMQ(二):请求-响应模式,C和C++。
  • 【虚拟仿真】Unity3D中实现2DUI显示在3D物体旁边
  • 代码随想录 day 29 贪心
  • 开源:LLMCompiler高性能工具调用框架
  • 【学习方法】高效学习因素 ① ( 开始学习 | 高效学习因素五大因素 | 高效学习公式 - 学习效果 = 时间 x 注意力 x 精力 x 目标 x 策略 )
  • LeetCode Medium|【146. LRU 缓存】
  • (南京观海微电子)——LCD OTP(烧录)介绍
  • [E二叉树] lc572. 另一棵树的子树(dfs+前中序判断+树哈希+树上KMP+好题)
  • C# 设计模式之简单工厂模式
  • mac中dyld[5999]: Library not loaded: libssl.3.dylib解决方法
  • python 容器
  • 微信小程序中Component中如何监听属性变化
  • 【Python 逆向滑块】(实战五)逆向滑块,并实现用Python+Node.js 生成滑块、识别滑块、验证滑块、发送短信
  • 微服务架构设计的最佳实践
  • 样式与特效(3)——实现一个测算页面
  • 芯片制造过程4光刻机
  • Nexus3 Repository代理pypi设置与应用
  • PMP–知识卡片--燃起图
  • 63 epoll服务器 (ET模式)
  • AI Agent
  • select
  • 按照指定格式打印pprint()
  • Study--Oracle-07-ASM常用维护操作(五)
  • [Git][分支管理][上]详细讲解
  • C语言指针(1)
  • C语言中的指针与数组
  • CentOS7.9升级OpenSSL1.1.1w