文档章节

SerialPort如何读取串口数据并显示在TextBox上,多线程委托

深圳大道
 深圳大道
发布于 2016/12/29 15:32
字数 438
阅读 2
收藏 0
namespace SerialPort
{
    public partial class Form3 : Form
    {
        delegate void UpdateTextEventHandler(string text);  //委托,此为重点  
        public static readonly string connStr = AppHelper.GetConfigValue("SqliteStr");
        public Form3()
        {
            InitializeComponent();
        }

        #region 窗体加载
        private void Form3_Load(object sender, EventArgs e)
        {
            serialPort1.PortName = "COM1";
            serialPort1.BaudRate = 9600;
            serialPort1.Open();
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
            //txtReceive.Text = "1.25";
        }
        #endregion

        #region 关闭窗体
        private void btnClose_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen) { serialPort1.Close(); }
            this.Close();
        }
        #endregion

        #region 委托侦测
        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            string SDateTemp = this.serialPort1.ReadExisting();
            if (!string.IsNullOrEmpty(SDateTemp))
            {
                SDateTemp = GetValue(SDateTemp, "GS", "kg").Trim(); //多少kg
            }
            this.Invoke(new UpdateTextEventHandler(UpdateTextBox), new string[] { SDateTemp });
        }

        private void UpdateTextBox(string text)
        {
            if (!string.IsNullOrEmpty(text))
            {
                txtReceive.Text = text;
            }
        }

        #endregion

        #region 获得字符串中开始和结束字符串之间的值
        /// <summary>
        /// 获得字符串中开始和结束字符串之间的值
        /// </summary>
        /// <param name="str">字符串</param>
        /// <param name="s">开始</param>
        /// <param name="e">结束</param>
        /// <returns></returns> 
        public static string GetValue(string str, string s, string e)
        {
            Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
            return rg.Match(str).Value;
        }
        #endregion

    }
}
有form1与form2两个窗体,启动form1 form1的button.click打开form2,在form2的textbox中输入文本在form1的textbox中同步显示
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Demo0003
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 fr2 = new Form2();
            //即便你不用实时监控但你也要知道你委托给谁去办事了吧  
            //他会带来你需要的信息 然后你该干吗就干吗  
            fr2.fangfa += fuzhi;
            fr2.Show();
        }

        public void fuzhi(string str)
        {
            this.textBox1.Text = str;
        }

    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Demo0003
{
    public delegate void delegateclass(string str);
    public partial class Form2 : Form
    {
        //哦明白了  
        public event delegateclass fangfa;

        public Form2()
        {
            InitializeComponent();
        }

        private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            string str = this.textBox1.Text;
            Form1 f1 = new Form1();
            //我变化啦  
            fangfa(str);
            //多窗体间为多线程传递只能使用委托亲  
        }
    }
}


本文转载自:http://blog.csdn.net/smartsmile2012/article/details/27207061

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
霍尼韦尔1450g二维码扫码枪中文识别。

USB接口模拟COM串口驱动程序 HSM USB Serial Driver 链接: https://pan.baidu.com/s/1aOV-Fz0OYdQGc5dMmkHzgg 提取码: fwgt 霍尼韦尔EZConfig 用来设置扫码枪的程序,需要把扫码枪设置到串口...

冥月辰风
2018/11/20
0
0
C#利用SerialPort控件进行串口编程小记(1)

一、关于DataReceive事件。 主程序必须有 outserialPort.DataReceived +=new SerialDataReceivedEventHandler(outserialPort_DataReceived);//注册received事件 创建 SerialDataReceivedEven......

Okimbin
2013/03/03
0
0
Mogoson/MGS-SerialPort

MGS-SerialPort English Manual 概述 Unity串口通信。 需求 串口数据同步读取,持续写入;串口参数通过本地文件配置(便于安装调试和后续维护)。 环境 Unity 5.0 或更高版本。 .Net Framewo...

Mogoson
2017/04/09
0
0
Android串口操作库:EZ-SerialPort

EZ-SerialPort EZ-SerialPort是基于Google android-serialport-api 修改与扩展的Android串口操作库。 EZ-SerialPort简化了串口的配置与读写操作,支持了多串口通道的操作,支持了多页面串口数...

Shorr_肖尔
2018/01/10
0
0
工具推荐:串口助手-SerialPort 物联网开发利器

刚做IoT业务时,在mac下没有找到一款适用的串口工具,开虚拟机用windows下串口调试很不方便,同事推荐我使用这款SerialPort工具,发现的确非常好用,使用5个月了,可以免费升级,功能强大,界...

ahlfors
2018/05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spark之RDD

一、RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有...

不羁之后
5分钟前
0
0
Kubernetes云供应商架构的未来

首先,我想分享SIG的使命,因为我们用它来指导我们现在和将来的工作。从我们的章程中直接来看,SIG的使命是简化,开发和维护云供应商集成,作为Kubernetes集群的扩展或附加组件。这背后的动机...

Linux就该这么学
10分钟前
0
0
线程池没你想的那么简单

前言 原以为线程池还挺简单的(平时常用,也分析过原理),这次是想自己动手写一个线程池来更加深入的了解它;但在动手写的过程中落地到细节时发现并没想的那么容易。结合源码对比后确实不得...

crossoverJie
18分钟前
5
0
Scientific Linux开发停止 相关设备将迁移至CentOS上

在经历了将近14年的版本更迭之后,这个专注于科学领域的GNU/Linux发行版本不会发布下个重大版本更新--Scientific Linux 8了。 目前维护该发行版本的成员最终决定是时候休息了,今后将不再发布...

linuxCool
23分钟前
0
0
Redux

Redux概念 Redux = Reducer + Flux,数据层框架,将所有数据都存储到store中 Redux的工作流程 Antd的使用 安装npm install antd --save import 'antd/dist/antd.css'import { Input, Butto......

星闪海洋
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部