c# winform读取及发送串口信号

请参考C#的API文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.ports.serialport?redirectedfrom=MSDN&view=netframework-4.5

 

通过串口读写数据,非常简单,只需要将控制拉到窗口位置即可,就可以在窗口的下方查看到串口控件的图标,点击图标,按下F4即可查看该串品的详细属性

也可以通过在代码中创建一个串口类,并在代码中直接操作串口收发数据

其中包括比较基础的端口名称、波特率、数据位、停止位、检验位等五个参数

也有只需要指定端口名称即可,其他参数保持默认

 

知识点:向串口发送数据并获取数据
只需要将serialPort加入至窗口中,并且指定其中的端口名及波特率,指定串口数据回应事件即可(DataReceived事件) 

然后在窗口加载事件中,将serialPort打开即可

1,直接使用serialPort.writeLine方法即可将数据发送至端口

2,已为serialPort指定了数据回应事件,当有数据从串口中返回,事件即会响应

 

 


 

示例项目

系统启动三个后台线程,

一个线程对应到更新当前时间

一个线程定时发送AA1086至串口7,并从串口7获得返回的数据

一个线程定时获取串口1的数据(修改为不需要后台线程)

 

示例代码

两个基础类,线程及定时,存放在Common文件夹中

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Threading;

namespace MES_MonitoringClient.Common
{
    /// <summary>
    /// 多线程任务
    /// </summary>
    public class ThreadHandler
    {
        //
        Thread _TThread = null;

        //默认后台运行
        private const bool default_isBackground = true;

        //默认不自动运行
        private const bool default_autoRun = false;




        public ThreadHandler(System.Threading.ThreadStart startFunction) : this(startFunction, default_isBackground, default_autoRun)
        { }

        public ThreadHandler(System.Threading.ThreadStart startFunction, bool isBackground) : this(startFunction, isBackground, default_autoRun)
        { }        

        /// <summary>
        /// 创建线程
        /// </summary>
        /// <param name="startFunction">运行方法</param>
        /// <param name="isBackground">是否后台运行</param>
        /// <param name="autoRun">是否自动运行</param>
        public ThreadHandler(System.Threading.ThreadStart startFunction, bool isBackground, bool autoRun)
        {
            _TThread = new Thread(startFunction);

            //是否后台运行
            _TThread.IsBackground = isBackground;

            //自动运行线程
            if (autoRun)
            {
                _TThread.Start();
            }
        }




        /// <summary>
        /// 开始线程
        /// </summary>
        public void ThreadStart()
        {
            _TThread.Start();
        }

        /// <summary>
        /// 查看线程执行状态
        /// </summary>
        /// <returns></returns>
        public bool ThreadIsAlive()
        {
            return _TThread.IsAlive;
        }

        /// <summary>
        /// 查看线程
        /// 前后台执行
        /// </summary>
        /// <returns></returns>
        public string ThreadState()
        {
            return _TThread.ThreadState.ToString();
        }

        /// <summary>
        /// 当前线程唯一托管标识符
        /// </summary>
        /// <returns></returns>
        public int ThreadManagedThreadId()
        {
            return _TThread.ManagedThreadId;
        }

        /// <summary>
        /// 等待线程结束
        /// </summary>
        public void ThreadJoin()
        {
            _TThread.Join();
        }
    }
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值