C#实现串口监听(以中盛来电显示盒为例)

这篇博客介绍了如何使用C#实现串口监听,以中盛来电显示盒为例,当有电话打进时,设备会上传号码数据。通过监听DataReceived事件,将接收到的字符追加到全局字符串,当接收到特定结束标识时处理号码数据,从数据库查找记录。示例代码展示了如何设置SerialPort类,使用委托处理串口数据,并在主线程更新UI。
摘要由CSDN通过智能技术生成

C#实现串口监听(以中盛来电显示盒为例)

 

 

中盛来电显示盒(DTMF/FSK双制式)设备可靠,接口简单规范,编程处理非常容易,所以这里以该设备为例介绍一下C#串口监听的编程。该设备深受广大程序员喜爱,订餐、订票订房、企业客服等行业多有使用。

中盛来电显示盒(DTMF/FSK双制式)的原理:当有电话打进时,来电显示盒自动上传号码数据到电脑,接口格式为:/r/nNUM=0108888888/r/n/r/nOK/r/n。所以串口监听事件中,需要将接收的字符追加到一全局字符串变量中,并判断该字符串变量是否包含/r/nOK/r/n,当/r/nOK/r/n来到时,说明串口已经接收完全部数据,此时处理接收到的字符串,从数据库查找该号码记录即可。

 

Visual Stdio 2005,对于串口操作Framework提供了一个很好的类接口-SerialPort,在这当中,串口数据的读取与写入有较大的不同。由于串口不知道数据何时到达,因此有两种方法可以实现串口数据的读取。

1、用线程实时读串口

2、用事件触发方式实现。

   但由于线程实时读串口的效率不是十分高效,因此比较好的方法是事件触发的方式。在SerialPort类中有DataReceived事件,当串口的读缓存有数据到达时则触发DataReceived事件,其中SerialPort.ReceivedBytesThreshold属性决定了当串口读缓存中数据多少个时才触发DataReceived事件,默认为1

   此外,SerialPort.DataReceived事件运行比较特殊,其运行在辅线程,不能与主线程中的显示数据控件直接进行数据传输,必须用间接的方式实现。

一、创建WIndow项目,设计界面:

上图界面中各组件名称:端口号:tbID,波特率:cmRate,监听:btENT,暂停:BtPause,数据:tbData

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值