C# 串口通信(通过serialPort控件发送及接收数据)

news2024/11/15 17:00:59

连接串口

  • 界面设计
  • 打开串口
  • 发送数据
    • 通过文件发送
    • 发送数据
  • 接收数据

首先可以在 工具箱中搜索serialport,将控件拖到你的Winfrom窗口。

界面设计

在这里插入图片描述

打开串口

 private void Connect_Click(object sender, EventArgs e)
 {
     serialPort1.PortName = comboBox2.Text;//端口名
     serialPort1.BaudRate = int.Parse(comboBox3.Text);//比特率
     serialPort1.StopBits = StopBits.One;//停止位
     switch (comboBox4.Text)//校验位
     {
         case "None":
             serialPort1.Parity = Parity.None;
             break;
         case "Odd":
             serialPort1.Parity = Parity.Odd;
             break;
         case "Even":
             serialPort1.Parity = Parity.Even;
             break;
         case "Mark":
             serialPort1.Parity = Parity.Mark;
             break;
     }
     serialPort1.DataBits = int.Parse(comboBox5.Text);//数据位
     try
     {
         serialPort1.Open();//打开串口
         bool b = serialPort1.CtsHolding;//CTS状态
		 label8.Text = b ? "1" : "0";
         if (checkBox2.CheckState == CheckState.Checked)//判断是否勾选RTS
         {
             serialPort1.RtsEnable = true;
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
    button3.Text=serialPort1.IsOpen ? "关闭串口" : "打开串口";
 }

发送数据

liens为全局变量,可以直接在richTextBox里输入,然后再点发送。

通过文件发送

 private void OpenFile_Click(object sender, EventArgs e)
 {
     OpenFileDialog openFileDialog = new OpenFileDialog();
     openFileDialog.InitialDirectory = "d:\\";//设置默认打开路径

     // 设置文件过滤选项
     openFileDialog.Filter = "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*";

     // 设置标题
     openFileDialog.Title = "选择文件";

     // 显示对话框
     DialogResult result = openFileDialog.ShowDialog();

     // 确认用户没有取消操作
     if (result == DialogResult.OK)
     {
         // 获取选中的文件路径
         string filePath = openFileDialog.FileName;
         comboBox1.Items.Add(filePath);
         liens = File.ReadAllText(filePath);//读取文件
         comboBox1.Text = filePath;
         richTextBox1.Text=liens;
     }
 }

发送数据

private void Send_Click(object sender, EventArgs e)
{
	serialPort1.WriteLine(liens);
}

接收数据

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    int len = serialPort1.BytesToRead;//获取可以读取的字节数

    byte[] buff = new byte[len];//创建缓存数据数组

    serialPort1.Read(buff, 0, len);//把数据读取到buff数组

    if (checkBox1.Checked)//是否勾选十六进制显示
    {
        richTextBox1.AppendText(BitConverter.ToString(buff).Replace('-', ' ') + '\n');//转成十六进制显示
    }
    else
    {
        richTextBox1.AppendText(Encoding.ASCII.GetString(data));//转成ASCII码显示
        richTextBox1.AppendText("\n");
    }
}

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

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

相关文章

颜色传感器 - 从零开始认识各种传感器【二十三期】

颜色传感器|从零开始认识各种传感器 1、什么是颜色传感器 颜色传感器(Color Sensor)是一种能够检测和识别颜色的传感器,它广泛应用于工业自动化、机器人技术、智能家居、消费电子等领域。颜色传感器通过测量物体表面反射的光来确定其颜色&a…

类和对象(上) - c++

1.类的定义 1.1 类定义格式 class 是定义类的关键字 ,后跟类的名字,{}部分为类的主体,(注意:最后类定义结束时不要忘了 ; )。 类体中内容称为类的成员:类中的变量称为成员变量; 类中的函数称为成员函数。在c中,struct也可以定义类(c兼容c语言),同时struct升级成类…

武汉流星汇聚:跨境电商桥梁连接中国与世界,中国产品畅销全球

在全球经济一体化的大背景下,零售电商行业以其独特的魅力和无限潜力,正引领着全球商业模式的深刻变革。特别是中国卖家,通过跨境电商平台这一桥梁,轻松触达全球消费者,实现了商品的快速流通和市场的广泛覆盖&#xff0…

Spark 基础 与 安装

Spark 基础 一、MapReduce编程模型的局限性 1、繁杂:只有Map和Reduce两个操作,复杂的逻辑需要大量的样板代码 2、处理效率低: Map中间结果写磁盘,Reduce写HDFS,多个Map通过HDFS交换数据 任务调度与启动开销大 3、…

十城联动共建生态登陆山东 纷享销客从原厂型向生态型CRM进化

7月30日,纷享销客渠道生态伙伴发展共建会之山东专场盛大举行,百余家优秀伙伴到场共享CRM领域高质量增长新机遇。2024年,纷享销客将坚定不移地从原厂型向生态型CRM厂商进化,把伙伴们扶上马,送一程,共发展&am…

Java--异常

目录 异常的概念异常的体系结构异常抛出异常处理异常throws声明try-catch捕获 异常处理流程自定义异常类 异常的概念 Java中,程序执行过程中发生的不正常的行为称为异常。 我们之前学数组的时候可能会遇到的数组越界异常:ArrayIndexOutOfBoundsException…

Reeder + RSS+ - 订阅RSS信息

文章目录 引言ReederRSS 源微博Bilibilirsshub自己发现 feed RSS 使用 引言 信息越来越多,也层次不齐,难以花时间筛选,但也不能闭目塞听。 使用爬虫 每日定时 去爬取不同网站需要的信息,还是有些繁琐,又让人想到 RSS …

odoo 去掉新手简介

很多模块有这样的提示,这种是可以动态关闭的 菜单 设置-技术-入职 可以动态切换,是否再次展示

不同类型的生物反应器在支架成熟过程中具有哪些特点和应用?

3D Bioprinting of Human Tissues: Biofabrication, Bioinks, and Bioreactors是发表于《International Journal of Molecular Sciences》的一篇综述,详细介绍了3D生物打印人体组织的相关技术进展,包括数据处理、生物打印技术、生物墨水配方、生物反应器…

设计理念中——抽象与接口和用(C#)

前言 在程序设计中,使用抽象类还是用接口应该是一个需要考虑的场景,有时我们感觉这两者并没有太大的区别,有时又有很大区别。这里是一些说明和示例。 一、抽象类和接口 1、相同点: 1)都可以被继承 2)都不能被实例化…

paddleSeg项目实战

问题1:cmake 编译报错 解决办法:添加一条语句 set(DEMO_NAME "test_seg") #这里的test_seg就是src里的文件名问题2: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2038 检测到“RuntimeLibrary”的不匹配项: 值“MT_Stat…

汽车EDI中的常见术语以及流程详解

汽车EDI常见术语 EDI —— 电子数据交换3PL(第三方物流) —— 外包仓库/运输供应商。 一般用于售后市场,但偶尔也用于原始设备制造商。也可由原始设备制造商和售后市场公司用来分销产品。Aftermarket(后市场) —— 经…

详细阐述大模型微调过程、方法、案例

大模型微调 大模型微调(Fine-tuning)的定义是:在已经预训练好的大型深度学习模型基础上,使用新的、特定任务相关的数据集对模型进行进一步训练的过程。这种微调技术的主要目的是使模型能够适应新的、具体的任务或领域&#xff0c…

透明屏幕方案介绍

透明屏幕方案主要涉及透明显示屏的技术原理、应用场景、优势以及未来发展趋势等方面。以下是对透明屏幕方案的详细介绍: 一、技术原理 透明屏幕,特别是透明LED显示屏和透明OLED显示屏,采用了先进的技术原理来实现其独特的显示效果。 透明LED显…

牛客 KY11.二叉树遍历

牛客 KY11.二叉树遍历 思路: 我们接收字符串以后,创建一个二叉树结构体,然后就可以开始建立树,如果是字符就malloc新的结点去存储,是**#就返回空**,最后用递归以根左右的顺序创建结点。树建立完成后&#x…

Linux中防火墙实战之Web服务器和ssh远程服务配置指南

🏡作者主页:点击! 🐧Linux基础知识(初学):点击! 🐧Linux高级管理防护和群集专栏:点击! 🔐Linux中firewalld防火墙:点击! ⏰️创作…

螺钉柱的设计

如果螺钉柱参数设置不合理,可能导致螺钉柱滑牙、爆裂、断裂、螺丝断裂、螺钉头磨损、螺钉攻入费力等问题 具体参数可以参照下表 螺丝柱设计尺寸: 螺丝柱设计要点: 频繁拆卸的注意事项: 自攻牙螺丝柱不宜频繁拆卸,因…

AI大模型应用(2)ChatGLM3本地部署及其在alpaca_zh数据集上的低精度微调

AI大模型应用(2)ChatGLM3部署及其在alpaca_zh数据集上的低精度微调 我们之前已经了解了HuggingFace中peft库的几种高效微调方法。 参数高效微调PEFT(一)快速入门BitFit、Prompt Tuning、Prefix Tuning 参数高效微调PEFT(二)快速入门P-Tuning、P-Tuning V2 参数高效微调PEFT…

C++第三十弹---C++继承机制深度剖析(中)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、派生类的默认成员函数 1.1、派生类的构造函数 1.2、派生类的拷贝构造函数 1.3、派生类的赋值重载 1.4、派生类的析构函数 2、继承与友元 …

TL3568编译Kernel内核 make tl3568-evm.img -j16报错 ‘arch/arm64/boot/Image.lz4‘ failed

在编译Kernel时,遇到报错内容: /bin/sh: lz4c: command not found arch/arm64/boot/Makefile:31: recipe for target arch/arm64/boot/Image.lz4 failed make[1]: *** [arch/arm64/boot/Image.lz4] Error 1 arch/arm64/Makefile:139: recipe for target …