栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

工作模式


通过串口服务器,采集到天平的称量值发送到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和端口号

这里需要引用 SuperSocket.ClientEngine.dll 和 SuperSocket.Protobase.dll

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 指示灯亮起,表示连接成功



参考资料

ME,ML,MS天平和电脑通讯指导文件
USR-TCP232-306 产品使用手册

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/747153.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号