C#串口通信的实现

news/2024/9/19 18:36:55/ 标签: c#, 串口

1、实现代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Security.Cryptography;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace SerialPortDemo
{public partial class MainForm : Form{private readonly SerialPort serialPort=new SerialPort();public MainForm(){InitializeComponent();GetSerialPortName();}private void GetSerialPortName(){string[] names=SerialPort.GetPortNames();cbbName.DataSource = names;int[] bauds = new int[] { 4800, 9600, 11520 };cbbBaud.DataSource = bauds;cbbBaud.SelectedIndex = 1;int[] datas = new int[] { 6, 7, 8 };cbbData.DataSource = datas;cbbData.SelectedIndex = 2;Parity[] parities = new Parity[] {Parity.None, Parity.Odd, Parity.Even, Parity.Mark, Parity.Space};cbbParity.DataSource = parities;StopBits[] stopBits = new StopBits[] {StopBits.One, StopBits.Two, StopBits.OnePointFive };cbbStop.DataSource = stopBits;}private void btnOpen_Click(object sender, EventArgs e){if (btnOpen.Text.Equals("打开")){btnOpen.Text = "关闭";serialPort.PortName = Convert.ToString(cbbName.SelectedItem);serialPort.BaudRate = Convert.ToInt32(cbbBaud.SelectedItem);serialPort.DataBits = Convert.ToInt32(cbbData.SelectedItem);serialPort.Parity = (Parity)Enum.Parse(typeof(Parity), cbbParity.SelectedItem.ToString());serialPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), cbbStop.SelectedItem.ToString());//StopBits sb = (StopBits)cbbStop.SelectedIndex;//serialPort.StopBits= StopBits.One;serialPort.Handshake = Handshake.None;serialPort.DataReceived += SerialPort_DataReceived;serialPort.Open();}else{btnOpen.Text = "打开";serialPort.DataReceived -= SerialPort_DataReceived;serialPort.Close();}}private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e){SerialPort sp = (SerialPort)sender;string indata = sp.ReadExisting();this.Invoke(new Action(() =>{lbxReceive.Items.Add(indata);}));}private void btnSend_Click(object sender, EventArgs e){if(serialPort.IsOpen){serialPort.Write(tbSend.Text.Trim());}}}
}

2、运行结果
在这里插入图片描述


http://www.ppmy.cn/news/1505240.html

相关文章

C语言程序设计-[5] 输入输出语句

C语言提供了一些输入输出的库函数,使用库函数,必须将相应的头文件“stdio.h”包含进来。 输入输出库函数可分为三类:字符输入输出函数、字符串输入输出函数和格式化输入输出函数。前两类功能单一,使用起来相对简单,以…

Python应用—简单邮件发送功能

import smtplib from email.mime.text import MIMEText from email.header import Header# 使用正确的SMTP服务器地址和端口号 # 以163邮箱为例 server smtplib.SMTP_SSL(smtp.163.com, 465) # 使用SSL连接# 登录邮箱 server.login(自己账户, 自己密码) # 替换为您的邮箱及密…

代码集:如何编写返回值受限的函数

前言 整理代码思路,举一反三.. 引入 前面写了一篇帖子代码集:当遇到传值受限的函数,应该如何编写-CSDN博客,讲了传入值被限制的时候如何编写函数,再深入一点分析函数的过程及补充返回值受限函数的编写. 概要 函数的原理分析以及实现,重点在某些受限函数的编写 函数原理 函数…

Laravel Eloquent资源更新全解析:优雅地处理数据更新

Laravel Eloquent资源更新全解析:优雅地处理数据更新 Laravel的Eloquent ORM不仅是一个对象关系映射工具,它还提供了一种优雅的方式来更新数据库资源。Eloquent的资源更新机制,以其简洁的API和强大的功能,让数据库操作变得简单而…

初识增强现实(AR)

初识增强现实(AR) 笔记来源: 1.2023年中国增强现实(AR)行业研究报告 2.wiki/Augmented reality 3.In-Depth Review of Augmented Reality: Tracking Technologies, Development Tools, AR Displays, Collaborative AR…

Python爬虫技术 第22节 反爬虫机制及对策

反爬虫机制是网站为了防止自动化工具抓取其内容而采取的各种技术和策略。了解这些机制可以帮助你设计更有效的爬虫程序。下面我将详细讲解常见的反爬虫机制及其应对策略。 常见的反爬虫机制 IP 封禁 描述:服务器检测到某个 IP 地址在短时间内发送了大量的请求&…

酷家乐--应用频繁报出cause java.net.SocketTimeoutException: Read timed out怎么办

涉及到网络层面的问题一般都比较复杂,场景多,定位难,成为了大多数开发的噩梦,应该是最复杂的了。下面通过一个实际的例子来阐述遇到了要怎么办。 现象 部署在矩阵机房的较多应用频繁报出toad异常,Encounter unknown …

列举出一些TS的优点

TypeScript(TS)作为JavaScript的一个超集,它增加了许多有用的特性,使得在开发大型应用时更加高效、安全和可维护。以下是TypeScript的一些主要优点: 静态类型检查: TypeScript提供了静态类型检查&#xff…

付费进群系统源码原版最新修复全开源版

付费进群,和平时所见到的别人拉你进群是不一样的,付费进群需要先缴费以后,才会看到群的二维码,扫码进群或者是长按二维码图片识别进群,付费进群这个功能广泛应用于拼多多的砍价群,活动的助力群,…

视频编辑SDK,底层架构合理,前端自定义程度高

如何高效、专业地制作出符合品牌形象、吸引目标受众的视频内容,成为了众多企业面临的共同挑战。美摄科技,作为视频编辑技术的先行者,以其卓越的视频编辑SDK(Software Development Kit),为企业用户量身打造了…

解决svn because no checksum is recorded for this file问题

如果文件有同步到虚拟机,可在虚拟机 执行指令 进入sqlite命令操作中 1、sqlite3 项目路径/.svn/wc.db 注:加单引号是解决路径中有空格的问题,且必须是绝对路径,否则会出错 执行后 进入sqlite命令操作 2、查询svn运行的队列(sql最后加分号&am…

【Langchain大语言模型开发教程】基于Langchain的私人助手

终于学习完了Langchain框架的核心内容,最后基于langchain技术实现一个个人知识库助手的小项目,将这些内容串联起来,在实际中进行应用。 工具清单: 1、langchain框架 2、chroma向量数据库 3、embedding模型(bge-larg…

学习笔记-优化问题

目录 一、目前的问题 1、axios 2、跨域问题 3. 路由安全 二、解决问题 1. 跨域问题 2. 优化URL devServer 1. 配置 devServer 2. 修改请求路径 3. 重启 vue 4. 测试 5. pathRewrite 6. 重启 7. 测试 3. 优化 res.data 4. 判断状态码 5. 引入axios 1. 创建自…

vue+element 根据父容器动态设置table高度出滚动条

可以通过CSS样式来控制表格的高度&#xff0c;并使用JavaScript动态地设置这个高度。 HTML: <template><el-table:data"tableData":height"tableHeight"style"width: 100%"><!-- 列配置 --></el-table> </template&…

7 postgresql 10版本 分区表使用场景、创建删除、注意事项

pg10版本支持的内置分区&#xff1a;范围分区&#xff08;range&#xff09;&#xff0c;列表分区(list)&#xff0c;另外传统分区为触发器方式实现 为什么引入分区表 可以理解为分表&#xff0c;有这几种优势&#xff1a; 1、分区上顺序扫描提升性能&#xff0c;因为不会整…

Day15--Servlet后端之Jsp了解学习(数据展示分页的实现)

JSP&#xff08;Java Server Pages&#xff09;是一种基于Java的动态网页开发技术&#xff0c;主要用于创建能够动态生成内容的Web应用程序。他可以前后端语言混合编写&#xff0c;用在编译后会变成一个类&#xff0c;你也可以理解为jsp文件就是一个servlet类&#xff0c;只是j…

【Linux】TCP全解析:构建可靠的网络通信桥梁

文章目录 前言1. TCP 协议概述2. TCP报头结构3. 如何理解封装和解包呢&#xff1f;4. TCP的可靠性机制4.1 TCP的确认应答机制4.2 超时重传机制 5. TCP链接管理机制5.1 经典面试题&#xff1a;为什么建立连接是三次握手&#xff1f;5.2 经典面试题&#xff1a;为什么要进行四次挥…

工业人工智能真的能落地吗?

文章目录 前言Part1 聊聊技术1 人工智能、机器学习和深度学习的关系2 优化思想的一个案例 part2 聊聊业务3 工业人工智能与消费互联网人工智能的区别3.1 消费互联网中人工智能的应用3.2 为什么如此成熟的消费互联网人工智能扩展到工业场景那么难 4 工业互联网人工智能的发展方向…

yolov8 剪枝

yolov8n 初始&#xff1a; YOLOv8n summary (fused): 185 layers, 3151904 parameters, 31936 gradients, 8.7 GFLOPs

C# Unity 面向对象补全计划 七大原则 之 接口隔离原则 (ISP) 难度:☆ 总结:大接口分成小的,然后该干啥干啥

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识&#xff0c;看不懂没关系 请看专栏&#xff1a;http://t.csdnimg.cn/mIitr&#xff0c;查漏补缺 1.接口隔离原则 (ISP) 这…