0
点赞
收藏
分享

微信扫一扫

基于TCP/IP实现串口到网络的通讯转换

田妞的读书笔记 2022-02-28 阅读 198

工作模式

图片来源:https://www.usr.cn/Product/142.html
通过串口服务器,采集到天平的称量值发送到PC端


操作步骤

1.软件测试

测试工具: USR-M0_V2.2.5.8

基础设置:模块静态IP 设置成服务器IP,HTTP服务端口 设置成4001,网关 设置成当前连接的网关IP,勾选 Reset、Link、RFC2217。如下图所示:

在这里插入图片描述

端口设置:校验/数据/停止 设置成NONE/8/1,串口波特率 设置成9600,模块工作方式 设置成TCP Server,本地端口 设置成21018,远程端口 设置成8234。如下图所示:
在这里插入图片描述

2.数据接收测试

测试工具: SerialPortUtility

串口设置:串口选择TCP/UDP,波特率选择9600,Mode选择TCP Client,Dest IP 输入192.168.5.19,Dest Port 输入21018。如下图所示:
在这里插入图片描述

3.代码实现

首先需要声明一个InitializeTcpClient方法,用来接收服务器IP和端口号

private AsyncTcpSession InitializeTcpClient(string serverIP, int port)
{
    client = new AsyncTcpSession();
    // 连接断开事件
    client.Closed += client_Closed;
    // 收到服务器数据事件
    client.DataReceived += client_DataReceived;
    // 连接到服务器事件
    client.Connected += client_Connected;
    // 发生错误的处理
    client.Error += client_Error;
    IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(serverIP), port);
    client.Connect(endPoint);

    return client;
}
private void client_Closed(object sender, EventArgs e)
{
    Console.WriteLine("连接断开");
}

private void client_DataReceived(object sender, DataEventArgs e)
{
    string deviceData = Encoding.Default.GetString(e.Data);
    ReadWeight(deviceData);
}

private void client_Connected(object sender, EventArgs e)
{
    Console.WriteLine("连接成功");
}

private void client_Error(object sender, SuperSocket.ClientEngine.ErrorEventArgs e)
{
    Console.WriteLine(e.Exception.Message);
}

将deviceData字符串转换为字符数组,进行拆分替换后,最终拿到称量值数据

public string weight = "";

private string ReadWeight(string deviceData)
{         
    try
    {        
        string[] deviceStr = deviceData.Split(" ".ToCharArray());
        if (deviceStr.Length > 0)
        {
            string[] weightStr = deviceStr[1].Split("\r".ToCharArray());
            weight = weightStr[0].ToUpper().Trim().Replace("SS", "").Replace("SD", "").Replace("g", "").Replace(Environment.NewLine, "").Substring(0, 6);
        }
        return weight;
    }
    catch (Exception ex)
    {
        return ex.ToString();
    }
}

4.最终效果

当 PWR、WORK、LINK、TX 指示灯亮起,表示连接成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


参考资料

举报

相关推荐

0 条评论