当前位置: 首页 > 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.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace SerialCommunicate
{public partial class Form1 : Form{public Form1(){InitializeComponent();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 (!radioButton4.Checked)//如果为字符模式接收{string str = serialPort1.ReadExisting();//字符串方式读textBox1.AppendText(str);}else//数值接收{byte data;data = (byte)serialPort1.ReadByte();string str = Convert.ToString(data, 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);}}}}}}
}

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Geoscene Pro的数据管理
  • 面试场景题系列--(2)短 URL 生成器设计:百亿短 URL 怎样做到无冲突?--xunznux
  • [Spring] Spring配置文件
  • 秋招突击——7/29——操作系统——网络IO
  • 系统移植(八)u-boot源码解析(未整理)
  • 聊聊基于Alink库的主成分分析(PCA)
  • K210视觉识别模块学习笔记8:Mx_yolo3本地模型训练环境搭建_部署模型到亚博canmv(失败)
  • 2-48 基于matlab的EM算法聚类可视化程序
  • 【面试题】喔影网络科技面试题复盘
  • Unity Android接入SDK 遇到的问题
  • springcloud RocketMQ 客户端是怎么走到消费业务逻辑的 - debug step by step
  • 19.延迟队列优化
  • 高性能响应式UI部件DevExtreme v24.1.4全新发布
  • TCP程序设计
  • Linux基础操作(下)
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • [译] 怎样写一个基础的编译器
  • 0x05 Python数据分析,Anaconda八斩刀
  • Android开源项目规范总结
  • Fundebug计费标准解释:事件数是如何定义的?
  • github从入门到放弃(1)
  • IOS评论框不贴底(ios12新bug)
  • iOS小技巧之UIImagePickerController实现头像选择
  • IP路由与转发
  • javascript 哈希表
  • JS专题之继承
  • Promise初体验
  • React-Native - 收藏集 - 掘金
  • Swift 中的尾递归和蹦床
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 简单实现一个textarea自适应高度
  • 浅谈Golang中select的用法
  • 人脸识别最新开发经验demo
  • 设计模式 开闭原则
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 树莓派 - 使用须知
  • 微信小程序填坑清单
  • 系统认识JavaScript正则表达式
  • 怎样选择前端框架
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ######## golang各章节终篇索引 ########
  • #70结构体案例1(导师,学生,成绩)
  • #define、const、typedef的差别
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (c语言)strcpy函数用法
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (四)进入MySQL 【事务】
  • (五)Python 垃圾回收机制
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .gitignore文件设置了忽略但不生效
  • .Net MVC + EF搭建学生管理系统
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖