C#采集设备数据的几种常见方式

以下是C#采集设备数据的几种常见方式及实现方案,综合工业自动化领域的最佳实践:
一、串口通信采集(RS-232/RS-485)
using System.IO.Ports;
var port = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
port.DataReceived += (s, e) => {
    string data = port.ReadExisting();
    Console.WriteLine($"收到数据: {data}");
};
port.Open();
特点:适用于PLC、传感器等传统设备,需配置波特率/校验位等参数。
二、Modbus协议通信
‌TCP模式‌(工业以太网):
using Modbus.Device;
var master = ModbusIpMaster.CreateIp(new TcpClient("192.168.1.100", 502));
ushort[] registers = master.ReadHoldingRegisters(0, 10); // 读取10个寄存器
‌RTU模式‌(串口):
var master = ModbusSerialMaster.CreateRtu(serialPort);
bool[] coils = master.ReadCoils(1, 0, 5); // 从站地址1,读取5个线圈
优势:标准化协议,支持寄存器/线圈读写,NModbus4库提供完整实现。
三、OPC UA采集
using Opc.Ua.Client;
var endpoint = new EndpointDescription("opc.tcp://localhost:48010");
var session = Session.Create(config, endpoint).GetAwaiter().GetResult();
DataValue value = session.ReadValue("ns=2;s=Device1/Temperature");
适用场景:跨平台工业数据交换,支持复杂数据类型和安全认证。
四、TCP/IP原生套接字
using (var client = new TcpClient("10.0.0.5", 2000)) 
{
    NetworkStream stream = client.GetStream();
    byte[] buffer = new byte[1024];
    int bytesRead = stream.Read(buffer, 0, buffer.Length);
}
用途:自定义协议设备通信,需处理字节级数据解析。
五、数据库中间件采集
// 从数据库读取设备缓存数据
using (var conn = new SqlConnection(connectionString)) 
{
    var cmd = new SqlCommand("SELECT * FROM DeviceLog", conn);
    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read()) {
        // 处理数据
    }
}
典型架构:设备→数据库→C#应用,适合已有数据中台场景。
六、WebAPI/物联网平台接入
using HttpClient client = new HttpClient();
string json = await client.GetStringAsync("http://iot-platform/api/v1/sensors");
var data = JsonSerializer.Deserialize<SensorData>(json);
现代方案:通过RESTful API对接云平台数据。
选型建议对比表
方式        延迟    适用设备                   开发复杂度     典型库/协议
串口通信        低    PLC/传感器    ★★☆☆☆        SerialPort类
Modbus        中    工业控制器    ★★★☆☆        NModbus4
OPC UA        中高    智能工厂设备    ★★★★☆        OPCFoundation库
TCP套接字         极低    自定义协议设备    ★★★★☆        System.Net.Sockets
数据库中间件    高    已有数据系统    ★★☆☆☆        Entity Framework

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HDHCMS(建网站+客户管理)系统

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值