.NET 如何实现与串行设备的通信

小夏 科技 更新 2024-02-07

串口是串行接口的缩写,是电子设备之间通信常用的全双工扩展接口。 RS-232 标准通常用于计算机和外部设备(带有 25 针或 9 针连接器)之间的数据传输。 如今,我们基本上已经看不到电脑中的串口了,我们可以使用USB适配器将COM口转换为USB接口进行连接。 今天我们就来一探究竟。.NET 如何用 C 编写实现与这些设备的通信。 串行通信包括通信时序、通信速率和数据传输。 常用的通信速率有2400bps、4800bps、9600bps、19200bps、38400bps和115200bps。 我们通过下图对串口的通信时序有一个简单的了解,它由起始位、数据位、校验位和停止位组成。

下表描述了计时组件。 NET Framework 库提供了 SerialPort 类,该类可用于配置和管理串口的属性,串口可用于发送和接收数据。 SerialPort 类的常见属性包括端口名、波特率、奇偶校验、数据位、停止位、握手、readtimeout 和 writetimeout。 这些属性用于指定串口名称、波特率、校验位、数据位、停止位、握手协议以及读写数据时的超时时间。 属性。

红色是类的公共属性,当我们使用该类时,该属性是根据所连接设备的情况进行配置的。

方法。 我们先配置一下类的属性,然后用 open() 方法打开串口,用 write() 方法发送数据,用 read() 方法读取数据,用 close() 方法关闭串口。

事件。 在发送和接收数据时,我们还可以使用事件来处理数据的到达和完成。

我们首先定义两种枚举类型:波特率和数据位

波特率。 

serializable]

public enum baudrates

数据位。

serializable]

public enum databits

我正在将串行端口上的操作包装在一个类中。
using system;

using system.collections;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using system.io.ports;

namespace fountain.net.core.com

字符串空操作。

public class operationserialportset

private baudrates _baudrate = baudrates.baud9600;

波特率。

public baudrates baudrateset

private parity _parity = parity.none;

校验位。

public parity parityset

private stopbits _stopbits = stopbits.one;

停止位。

public stopbits stopbitsset

private databits _databits = databits.bit8;

数据位。

public databits databitsset

无参数构造函数。

public operationserialport()

绑定事件。

private void boundevents()

存储接收到的用于分析的字节。

list _storereceivedbytes = new list();

接收数据。

private void serialport_datareceived(object sender, serialdatareceivedeventargs e)

catch 错误处理程序。

private void serialport_errorreceived(object sender, serialerrorreceivedeventargs e)

端口是否已打开。

public bool isopen

打开端口。

public void open()

this._serialport.portname = this._portname;

this._serialport.baudrate = (int)this._baudrate;

this._serialport.parity = this._parity;

this._serialport.databits = (int)this._databits;

this._serialport.stopbits = this._stopbits;

this._serialport.open();

catch (exception ex)

关闭端口。

public void close()

catch (exception ex)

public void discardbuffer()

写入数据。

字节数组。

public void write(byte writebuffer, int offset, int count)

this._serialport.write(writebuffer, offset, count);

catch (exception ex)

写入数据。

字节数组。

public void write(byte writebuffer)

this._serialport.write(writebuffer, 0, writebuffer.length);

catch (exception ex)

串行端口名称。

public static list getportnames()

return portnamelist;

catch(exception ex)

获取波特率。

public static list getbaurates()

return baudrateslist;

catch (exception ex)

获取校验位。

public static list getparitys()

return parityslist;

catch (exception ex)

获取数据位。

public static list getdatabits(ilist obj)

return databitslist;

catch (exception ex)

获取停止位。

public static list getstopbits()

return stopbitlist;

catch (exception ex)

如何称呼:
using fountain.net.core.com;

using system.io.ports;

using system.text;

namespace fountain.net.com.demo

public partial class formserialport : form

private void formserialport_load(object sender, eventargs e)catch

private void initialcombox()

catch (exception ex)

串口接收数据处理。

private void initialport()

this.begininvoke(new action(()=> )

catch (exception ex)

打开。 private void btnopen_click(object sender, eventargs e)

catch (exception ex)

关闭。 private void btnclose_click(object sender, eventargs e)

catch (exception ex)

清除收到的内容。

private void btnclean_click(object sender, eventargs e)

catch (exception exception)

SerialPort 是一个非常方便的库,用于与串口设备通信,从事硬件对接开发和嵌入式开发的人难免会使用这个类。

相似文章

    串口服务器如何实现多主机网关?

    如上一节所述,Modbus协议是工业应用中使用最广泛的协议。在Modbus协议系统中,主机一般是PLC HMI 组态软件等,但在稍微复杂的系统中,通常同时有多台主机。由于通信电缆一般为RS,半双工特性导致多台主机同时采集数据时数据延迟较大。因为只有一个主从可以同时发送数据,否则会造成数据冲突,形成乱...

    如何通过设备维修降低成本,提高效率

    在当今竞争激烈的市场环境中,制造工厂需要不断寻找降低成本和提高效率的方法,以提高生产力并降低运营成本。设备维修是制造工厂的重要成本 因此如何降低设备维修成本,提高维修效率成为许多工厂亟待解决的问题。本文将针对制造厂如何在设备维修中实现成本降低和效率提高的最佳方式,并提出一些切实可行的建议和解决方案。...

    物联网设备管理平台如何工作?它是如何工作的?

    随着科学技术的飞速发展,各种物联网设备已经渗透到我们生活和工作的方方面面。从智能家居到工业自动化,物联网设备正在改变我们的生活和工作方式。然而,如何有效地管理和监控这些设备已成为一个越来越重要的问题。这时,物联网设备管理平台应运而生。IoT 设备管理平台是为管理特定设备而量身定制的工具 流程和选项的...

    如何选择饲料加工设备,实现高效、安全、环保的生产

    饲料加工设备 实现高效 安全 环保的生产。随着水产养殖业的不断发展,饲料加工设备在生产过程中发挥着越来越重要的作用。饲料加工设备市场不断扩大,各种设备品牌和型号层出不穷,用户在选择时难免会感到困惑。本文将介绍饲料加工设备的选购技巧,帮助您选择适合您的设备,实现高效 安全 环保的生产。 了解饲料加工设...

    如何使用NFC实现设备巡检管理系统如何做好巡检管理

    在企业和组织的日常运营中,设备巡检是非常重要的一环。通过定期检查设备的状态和运行情况,及时发现和解决潜在问题,确保设备的安全和正常运行。传统的检查方法需要使用纸质记录 这既繁重又容易出错。如今,使用NFC 近场通信 技术可以大大简化检测过程,提高工作效率。为了实施NFC检查管理系统,我们需要一个NF...