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

第四节:基于Winform框架的串口助手小项目---开关串口《C#编程》

在漫漫人生征途上,学习宛如一座明亮的灯塔,为我们指引前行的方向。然而,学习之路并非总是一帆风顺,我们常常会遭遇各种挫折与困难,陷入迷茫与疲惫之中。此时,学习激励就如同那温暖的火种,能够重新点燃我们内心对知识的渴望,赋予我们继续前行的力量。—————WHAPPY

介绍一下:解决方案里有的内容

  • Form1.cs [设计] :表明 Form1.cs 这个文件当前处于设计视图状态,在 C# 开发 Windows Forms 应用程序时,可通过可视化界面设计窗口及控件等元素。

  • Form1.Designer.cs :是由开发工具自动生成的文件,用于存放窗体及控件的初始化代码等内容,一般不需要手动大量修改。

  • Form1.cs :是主要的代码文件,用于编写与该窗体相关的业务逻辑代码,比如按钮点击事件处理、数据交互等功能的实现。

1.任务目标:

2.Button控件的使用

1. 配置 Button 的文字和图片

方法 1:在设计器(Designer)中设置

  1. 选中 Button 控件
  2. 属性(Properties)窗口中找到:
    • Text:设置按钮的文字。
    • Image:选择按钮的图片(Image 类型)。
    • TextImageRelation:设置文字和图片的相对位置(如 ImageAboveText)。
    • ImageAlign:调整图片在按钮内的对齐方式(如 MiddleCenter)。
    • TextAlign:调整文本在按钮内的对齐方式(如 MiddleCenter)。

方法 2:在代码中动态设置

如果你想在代码中配置 按钮的文字和图片,可以这样做:

// 设置按钮文字 myButton.Text = "打开串口"; // 设置按钮图片(确保 "icon.png" 存在于项目的资源文件夹中) myButton.Image = Image.FromFile("icon.png"); // 调整图片与文字的相对位置 myButton.TextImageRelation = TextImageRelation.ImageAboveText; // 图片在文字上方 // myButton.TextImageRelation = TextImageRelation.ImageBeforeText; // 图片在文字左侧 // 调整图片在按钮内的对齐方式 myButton.ImageAlign = ContentAlignment.MiddleCenter; // 调整文字在按钮内的对齐方式 myButton.TextAlign = ContentAlignment.MiddleCenter;


2. 处理 Button 的 Click 事件

按钮的 Click 事件可以用来执行打开/关闭串口弹窗提示等操作。

方法 1:在设计器中绑定 Click 事件

  1. 选中 Button 控件
  2. 属性窗口找到 Click 事件。
  3. 双击 Click 事件,自动生成 button1_Click 方法:
 

private void button1_Click(object sender, EventArgs e) { MessageBox.Show("你点击了按钮!"); }


方法 2:在代码中动态绑定 Click 事件

如果按钮是 运行时动态创建的,需要用 += 绑定事件:

3.虚拟端口的使用

下载连接:

虚拟串口驱动(VirtualSerialPortDriver,简称VSPD)6.9版本的汉化软件界面VSPD是用于创建虚拟串口的工具资源-CSDN文库

4.代码实现

源码:

private void OpenSerial_btn_Click(object sender, EventArgs e)
{
    try
    {
        if (!serialPort1.IsOpen)  // 如果串口未打开,则执行打开逻辑
        {
            serialPort1.PortName = Port_cbb.Text;
            serialPort1.BaudRate = Convert.ToInt32(Baud_cbb.Text);
            serialPort1.DataBits = Convert.ToInt32(Databit_cbb.Text);

            // 设置校验位
            switch (Checkbit_cbb.SelectedIndex)
            {
                case 0:
                    serialPort1.Parity = Parity.None;
                    break;
                case 1:
                    serialPort1.Parity = Parity.Even;
                    break;
                case 2:
                    serialPort1.Parity = Parity.Odd;
                    break;
                default:
                    serialPort1.Parity = Parity.None;
                    break;
            }

            // **修正错误:用 Stopbit_cbb 控制 StopBits**
            switch (Stopbit_cbb.SelectedIndex)
            {
                case 0:
                    serialPort1.StopBits = StopBits.One;
                    break;
                case 1:
                    serialPort1.StopBits = StopBits.OnePointFive;
                    break;
                case 2:
                    serialPort1.StopBits = StopBits.Two;
                    break;
                default:
                    serialPort1.StopBits = StopBits.One;
                    break;
            }

            serialPort1.Open();
            isOpen = true;
            OpenSerial_btn.Text = "关闭串口";  // **更新按钮文本**
        }
        else  // **如果串口已打开,则执行关闭逻辑**
        {
            serialPort1.Close();
            isOpen = false;
            OpenSerial_btn.Text = "打开串口";  // **恢复按钮文本**
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("操作串口失败:" + ex.Message);
    }
}

5.实现效果

本节主要实现了,加载窗体时默认显示初始值(如:波特率默认加载为9600),并对打开按钮进行了事件处理,(双击打开按键并对其进行编辑操作,主要是完成打开空间的业务逻辑)。

未完待续》》》》》》》》》

 


http://www.kler.cn/a/571602.html

相关文章:

  • IntelliJ IDEA 构建项目时内存溢出问题
  • 直播流程管理 AI 应用的开发思路和功能实现
  • JavaScript+vue 实现复制文字功能
  • P10904 [蓝桥杯 2024 省 C] 挖矿
  • 【0001】初识Java
  • ArcGIS操作:13 生成最小外接矩阵
  • 可狱可囚的爬虫系列课程 16:爬虫重试机制
  • 力扣HOT100之哈希:1. 两数之和
  • MySQL执行更新SQL流程
  • 【存储中间件】MyCat2应用与实战(二):安装与启动
  • 城市管理综合执法系统源码,B/S模式与手机等移动终端架构,java语言开发,可扩展性强
  • 在Spring Boot项目中导出复杂对象到Excel文件
  • Spring 源码硬核解析系列专题(六):Spring MVC 的请求处理源码解析
  • 简单的SQL语句以及使用Node.js连接MySQL
  • PYTHON常用指令
  • 【区块链 + 智慧政务】上海市城乡建设和交通发展研究院:基于联盟链的城市停车收费应用示范 | FISCO BCOS 应用案例
  • 服务降级
  • Ollama进行DeepSeek本地部署存在安全风险解决方案,nginx反向代理配置
  • 关于opencv中solvepnp中UPNP与DLS与EPNP的参数
  • BambuStudio学习笔记:Extruder 类