文档章节

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

深圳大道
 深圳大道
发布于 2016/12/29 15:37
字数 438
阅读 6
收藏 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
13.4K
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

没有更多内容

加载失败,请刷新页面

加载更多

500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
8
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部