C#串口通讯(变参、委托、线程安全队列)

本文详细介绍了如何使用C#进行串口通讯,包括实现变参函数,利用委托处理串口数据的收发和解析,以及确保数据广播到前台UI更新过程中的线程安全性。
摘要由CSDN通过智能技术生成
这两天由于项目需要,调试了一下C#的串口通讯,参考了以前做的Android项目所用的设计模式:

这里写图片描述

父类DataTransport设计成单例模式,程序始终保持只有一种通讯链路,DataTransport中的方法都由子类实现。
由于对C#不是很熟练,调试过程中遇到了较多问题,最终通过努力找到了解决方法,稍微总结一下。

变参函数

 串口、蓝牙和Wifi的设置参数不同,它们各自的setConfig函数的形参也不同,如果设计不同的方法,父类就不能统一继承了。使用C#的__arglist来解决这个问题。

DataTransport.cs

public virtual void setConfig(__arglist) { }

Usart.cs

public override void setConfig(__arglist)
{
    ArgIterator args = new ArgIterator(__arglist);
    if (args.GetRemainingCount() > 0)
    {                
        port.PortName = TypedReference.ToObject(args.GetNextArg()).ToString();
        port.BaudRate = Convert.ToInt32(TypedReference.ToObject(args.GetNextArg()));
        port.DataBits = Convert.ToInt32(TypedReference.ToObject(args.GetNextArg()));
        port.StopBits = (StopBits)TypedReference.ToObject(args.GetNextArg())
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值