C#串口通信Seriaport和页面传值

串口通信

串口COM:是一种用于连接计算机和外设设备的接口,也叫串行接口,简称com,常见的串口有一半电脑应用的RS-232(使用25针或9针的

连接器)通俗来讲串口就是usb接口、鼠标串口。键盘串口

串口通讯:是指外设和计算机 通过数据信号线、地线等按照一定协议进行双向通信的方式。

c# 通过SerialPort类获取串口相关的数据 并且提供发送和接收数据的方法,需要引入using System.IO.Ports;命名空间

桌面

namespace 串口通信例子SeriaPort
{public partial class Form1 : Form{//创建一个全局的串口对象readonly SerialPort port = new SerialPort();public Form1(){InitializeComponent();//对串口添加以下配置,// 1 BaudRate 波特率:用于描述通信枚每秒传递数据的速度//单位是bit/s, 常见的波特率1s是9600bit,1Byte是8bit  9600bit/8 = 1200字节,也就是1s发送1200个字节// 注意波特率不能太大 也不能太小, 如果太大了传输的数据不稳定,如果俩端的波特率不一致会导致数据不一致,如果太小了//反应太慢port.BaudRate = 9600; //设置波特率//2 StopBits 停止位 :标志着传输一个字符的结束// StopBits是一个枚举类型,可选择有1位 1.5位 2位,默认值是1位port.StopBits = StopBits.One;//3 DataBits 数据位:通信中真正的有效信息,数据位可以双方通过约定进行控制 一般可以5 、6 、7、8//默认值是8位port.DataBits = 8;//4 Parity 奇偶校检位 只占1位,指的是逻辑高位是奇数或者偶数个,高位就是1,低位是0//可取值有 Parity.None不采用校检//Parity.Odd  奇数校检,保证传输过程中高位个数是奇数个//Parity.Even 偶数校检, 保证传输过程中高位个数是偶数个port.Parity = Parity.None;//5 PortName设置连接串口名port.PortName = "COM1";//6 Encoding 编码格式,设置显示以什么格式显示//默认16进制格式port.Encoding = Encoding.Default;//必须配置的 波特率和设置串口//11 接收数据的事件 有数据触发这个函数port.DataReceived += Port_DataReceived;}bool isDefault = false;//代表编码方式 true代表默认默认编码private void Port_DataReceived(object sender, SerialDataReceivedEventArgs e){//接收数据并且显示,//13BytesToRead 从缓存区读取数据的长度byte[] bs = new byte[port.BytesToRead];//14.Read从缓存区读取数据port.Read(bs, 0, bs.Length);//从缓存区读取数据//string value = null;//以哪种编码方式展示数据this.Invoke((EventHandler)delegate{if (isDefault){//16进制显示 item就是其中一个16进制foreach (var item in bs){value += " " + item.ToString("X"); //x代表16进制}}else{//GetEncoding("gb2312") 国标2312编码格式value = Encoding.GetEncoding("gb2312").GetString(bs);}richTextBox1.Text += value + "\r\n";richTextBox1.SelectionStart = richTextBox1.Text.Length;richTextBox1.ScrollToCaret();//15 DiscardInBuffer清空缓存区port.DiscardInBuffer(); //清空缓存区});}//打开串口private void button1_Click(object sender, EventArgs e){//7IsOpen 当前串口是否是打开状态,// true 为打开状态//false 关闭状态if (!port.IsOpen) //没打开{//8 open 打开串口port.Open();//9 打开之后 要设置以下俩个属性为true//DtrEnable 为true,启用数据终端就绪,发送一个dtr信号。port.DtrEnable = true;//RtsEnable 为true 证明请求可以发送了,发送一个rts信号port.RtsEnable = true;button1.Text = "关闭串口";}else{button1.Text = "打开串口";//10 关闭串口port.Close();}}private void button3_Click(object sender, EventArgs e){byte[] bs = Encoding.UTF8.GetBytes(this.textBox1.Text);//12Write 发送数据port.Write(bs, 0, bs.Length);}}
}

页面传值

①页面

namespace 页面传值
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){//由Form1跳转Form2界面 把form1输入框内容传递form2的label,再把form2的输入框内容传递给form1//1从父级传递子级 可以通构造函数传参传递数据Form2 f2 = new Form2(this.textBox1.Text);f2.ShowDialog();//2 从子级传递父级界面 可以把子级的控件的modifiers属性修改成public ,在外=部进行访问//缺点 必须写在ShowDialog();后面this.textBox1.Text = f2.textBox1.Text;}private void button2_Click(object sender, EventArgs e){Form3 f3 = new Form3();f3.h1 += F3_h1;f3.ShowDialog();}private void F3_h1(string obj){textBox2.Text = obj;}// 第二种父传子 子传父 //使用委托 ,可以在子级界面创建一个委托函数,在本界面给委托函数赋值,再子级界面调用}
}



②页面

public Form2(string s)
{
    InitializeComponent();
    this.label1.Text = s;
}

③页面

桌面只用放一个textbox

namespace 页面传值
{public partial class Form3 : Form{//定义事件public event Action<string> h1;public Form3(){InitializeComponent();}private void textBox2_TextChanged(object sender, EventArgs e){h1?.Invoke(textBox2.Text);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/36477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字水产养殖中的鱼类追踪、计数和行为分析技术

随着全球人口增长和生态环境退化&#xff0c;传统捕捞已无法满足人类对水产品的需求&#xff0c;水产养殖成为主要的鱼类来源。数字水产养殖利用先进技术和数据驱动方法&#xff0c;对提高生产效率、改善鱼类福利和资源管理具有显著优势。 1 数字水产养殖的重要性 1.1 提高生…

Python (Ansbile)脚本高效批量管理服务器和安全

1、简介 在现代 IT 基础设施中&#xff0c;管理大量服务器是一项复杂而繁琐的任务。特别是在检查服务器的存活状态以及 SSH 登录等任务上&#xff0c;手动操作非常耗时且容易出错。本文将介绍如何使用 Python 脚本实现对多台服务器的批量检查和管理&#xff0c;包括检查服务器…

计算机网络-自顶向下方法复习纲要

计算机网络-自顶向下方法复习纲要 第一章&#xff1a;计算机网络和因特网 协议&#xff1a;p6网络边缘&#xff1a;p6网络核心&#xff1a;p15存储转发传输机制&#xff1a;p16电路转发中的复用&#xff1a;p19-p20分组交换和电路交换的区别/对比&#xff1a;p18/p20分组交换…

World of Warcraft [CLASSIC] plugin lua

World of Warcraft [CLASSIC] plugin lua 魔兽世界lua脚本插件 World of Warcraft API - Wowpedia - Your wiki guide to the World of Warcraft D:\World of Warcraft\_classic_\Interface\AddOns zwf.lua function CountdownFunc()CountdownFrame CreateFrame("Fram…

仓库管理系统14--仓库设置

1、添加窗体 <UserControl x:Class"West.StoreMgr.View.StoreView"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc"http://schemas.openxmlformats.…

redis服务介绍

redis 基础概念安装使用基础操作命令数据类型操作命令 管理和维护命令 基础概念 Remote Dictionary Server&#xff08;Redis&#xff09;远程字典服务器是完全开源免费的&#xff0c;用C语言编写的&#xff0c;遵守BSD开源协议&#xff0c;是一个高性能的&#xff08;key/val…

k-NN 剪辑近邻法

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在AI学习笔记&#…

计算机缺失OpenCL.dll怎么办,OpenCL.dll丢失的多种解决方法

在使用电脑的过程中&#xff0c;我们经常会遇到一些开机弹窗问题。其中&#xff0c;开机弹窗找不到OpenCL.dll是一种常见的情况。本文将详细介绍开机弹窗找不到OpenCL.dll的原因分析、解决方法以及预防措辞&#xff0c;帮助大家更好地解决这一问题。 一&#xff0c;了解OpenCL.…

ASR 语音识别相关

ASR 语音识别 ASR&#xff08;Automatic Speech Recognition&#xff0c;自动语音识别&#xff09;是一种能够将语音转换为文本的技术。这种技术使得计算机能够“听懂”我们说的话&#xff0c;并将它们记录下来。这项技术被广泛应用于日常生活中的各种场景&#xff0c;比如语音…

Swift开发——简单App设计

App的界面设计需要具有大量的图像并花费大量的时间,这样的应用不方便学习和交流,这里重点介绍SwiftUI界面元素的用法,通过简单App设计过程的讲解,展示图形用户界面应用程序的设计方法。 01、简单App设计 按照9.1节工程MyCh0901的创建方法,创建一个新的工程MyCh0902,此时工…

Yolov8可视化界面使用说明,含代码

⭐⭐ YOLOv8改进专栏|包含主干、模块、注意力机制、检测头等前沿创新 ​ ⭐⭐ YOLOv8可视化界面如下 使用需要安装opencv-python、torch、numpy及PySide6(python版本>3.9) pip install PySide6 pip install numpy pip install opencv-python 使用说明 运行下方代码&#xf…

上市公司银行专利申请数据集(2003-2022年)

数据简介&#xff1a;上市商业银行的专利申请数据是可作为金融科技创新水平的关键指标&#xff0c;这些数据反映了银行在金融技术领域的创新能力。发明专利因其创新性、技术深度和行业代表性&#xff0c;被赋予了特别的重视。遵循郭晔等人(2022)的研究方法&#xff0c;使用国家…

【绝对有用】C++ 实现 计算机视觉任务-yolo目标检测 NMS

为了在C中实现非极大值抑制&#xff08;NMS&#xff09;&#xff0c;我们需要以下步骤&#xff1a; 定义边界框和置信度的结构。实现计算IoU的函数。实现NMS的函数。 下面是一个完整的C代码示例&#xff1a; 完整的C代码实现NMS #include <algorithm> // std::max, s…

设置日历程序

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 namespace 设置日历 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void dateTimePicker1_ValueChanged(object sender, EventArgs e){richTextBox1.Text dateTimePicker1.T…

【教程】安装DGL/PyG图神经网络编程环境

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 关于cuda的安装&#xff0c;可以看这个&#xff1a; 【教程】保姆级安装NVIDIA CUDA、CUDNN环境全纪录解决SSH一段时间自动断开报Destination Host Un…

大数据------JavaWeb------MyBatis(完整知识点汇总)

MyBatis MyBatis简介 定义 它是一款优秀的持久层框架&#xff0c;用于简化JDBC开发它原来是Apache的一个开源项目iBatis&#xff0c;后来改名为MyBatis中文官网&#xff1a;https://mybatis.org/mybatis-3/zh_CN/index.html JaveEE三层架构 表现层&#xff08;做页面展示&…

Elasticsearch:大数据时代的实时搜索与分析利器

引言 随着大数据时代的到来&#xff0c;数据量的爆炸式增长对数据存储、检索和分析提出了前所未有的挑战。Elasticsearch&#xff08;ES&#xff09;作为一个分布式搜索和分析引擎&#xff0c;凭借其强大的全文搜索能力、实时数据处理和高可扩展性&#xff0c;迅速成为大数据处…

Coldrage Dagger

剃刀高地【寒怒匕首 Coldrage Dagger】 2020.11.26.剃刀高地刷【寒怒匕首】-1_网络游戏热门视频 2020.11.26.剃刀高地刷【寒怒匕首】-2_网络游戏热门视频

HarmonyOS NEXT Developer Beta1最新术语表

A abc文件 方舟字节码&#xff08;ArkCompiler Bytecode&#xff09;文件&#xff0c;是ArkCompiler的编译工具链以源代码作为输入编译生成的产物&#xff0c;其文件后缀名为.abc。在发布态&#xff0c;abc文件会被打包到HAP中。 ANS Advanced Notification Service&#xf…

C++11中std::thread的使用

C11 引入了 std::thread&#xff0c;它是用于创建和管理线程的标准库类。以下是详细的讲解&#xff0c;包括如何使用 std::thread 进行线程创建、管理和参数传递等操作。 1. 包含必要的头文件 在使用 std::thread 前&#xff0c;需要包含 <thread> 头文件&#xff1a; …