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;包括检查服务器…

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.…

k-NN 剪辑近邻法

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

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

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

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;使用国家…

设置日历程序

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 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;做页面展示&…

Coldrage Dagger

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

台式机通过网线直连笔记本,台式机通过笔记本上网【解决台式机没有网络的问题】

一、总览 将笔记本电脑和台式机使用网线连接起来。在笔记本电脑上打开网络和共享中心&#xff0c;进入“更改适配器设置”选项&#xff0c;找到当前连接的网卡&#xff0c;右键点击选择“属性”。在网卡属性中&#xff0c;找到“共享”选项卡&#xff0c;勾选“允许其他网络用…

湖北大学2024年成人高考函授报名专升本法学专业介绍

湖北大学&#xff0c;这所承载着深厚文化底蕴和学术积淀的高等学府&#xff0c;始终致力于为广大有志之士提供多元化的学习机会。在时代的浪潮中&#xff0c;为了满足社会对于高层次法律人才的需求&#xff0c;湖北大学特别推出了成人高等继续教育项目&#xff0c;为广大在职人…

黄历工具网/万年历/财神方位/日历/佛历/道历/24节气/PHP网站源码

黄历工具网/万年历/财神方位/日历/佛历/道历/24节气/PHP网站源码 演示地址&#xff1a; https://hl.caohongji.com/ 手机端地址&#xff1a; https://mhl.caohongji.com/ 客服&#xff1a; kkmp326 源码说明&#xff1a; 1、系统内的黄历宜忌、农历、日历、佛历、道…

前端基础--Vue2

前端技术发展史(了解) 1.前端历史 1.1.静态网页 1990 html 1.2.异步刷新-操作dom 1995 javascript 1.3.动态网站 Asp/jsp&#xff08;java&#xff09;,php等&#xff0c;后台臃肿 1.4.Ajax成为主流 异步请求 1.5.Html5 被认为是互联网的核心技术之一。HTML产生于19…

Docker之jekins的安装

jekins官网地址&#xff1a;Jenkins Plugins &#xff08;https://plugins.jenkins.io/&#xff09; jekins 的docker 官方地址&#xff1a;https://hub.docker.com/r/jenkins/jenkins jekins 的docker 允许命令文档地址&#xff1a; docker/README.md at master jenkinsci…

学分制系统 WebService_PantoSchool SQL注入致RCE漏洞复现

0x01 产品简介 学分制系统由上海鹏达计算机系统开发有限公司研发,是基于对职业教育特点和需求的深入理解,结合教育部相关文件精神,并广泛吸纳专家、学者意见而开发的一款综合性管理系统。系统采用模块化的设计方法,方便学校根据自身教学改革特点、信息化建设进程情况选择、…

Kubernetes之Scheduler详解

本文尝试从Kubernetes Scheduler的功能介绍、交互逻辑、伪代码实现、最佳实践、自定义Scheduler举例及其历史演进6个方面进行详细阐述。希望对您有所帮助&#xff01; 一、Kubernetes Scheduler 功能 Kubernetes Scheduler 是 Kubernetes 集群的核心组件之一&#xff0c;负责…