基于多串口ETH005设备的Socket网络编程

简介: 利用多串口设备进行Socket网络编程1、安装多串口服务器ETH005软件。软件下载地址:http://download.

利用多串口设备进行Socket网络编程

1、安装多串口服务器ETH005软件。软件下载地址:http://download.csdn.net/detail/taomanman/6762173

2、打开ETH005软件,点击“扫描”,如下图:

3、会搜索到设备的IP地址,修改串口COM1的串口波特率为9600,通讯方式修改为485通信,远程IP修改成192.168.0.2,然后点击“连接”,如下图:

4、连接完成后,点击“配置”,如下图:

5、点击“读取配置信息”,如下图:

 

6、打开串口调试助手,配置远程主机和远程端口号信息,然后连接网络,然后输入十六进制数,然后发送,接收区会将结果输出,如下图:

 

 

开始编程:使用Socket进行网络编程,发送指令,获取数据

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1、             建立Socket连接

Socket newclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ie = new IPEndPoint(IPAddress.Parse("192.168.0.18"), 50001);
try
{
     newclient.Connect(ie);
}
 catch (SocketException e)
{

     MessageBox.Show("连接服务器失败:" + e.Message);
     return;
}
ThreadStart myThreaddelegate = new ThreadStart(ReceiveMsg);
myThread = new Thread(myThreaddelegate);
myThread.Start();

 

2、             发送指令

///<summary>
///发送温湿度数据
///</summary>
public void SendWSD()
{
    string wsd = "01 03 00 00 00 03 05 cb";
    int m_length = wsd.Length;
    byte[] data = new byte[m_length];
    //十六进制字符串转换成字符数组(01 03 00 00 00 03 05 cb)
    data = ConvertHelper.strToToHexByte(wsd);
    int i = newclient.Send(data, data.Length, 0);
    //showMsg("温湿度发送消息为:" + wsd + "\r\n");
}

 
public static class ConvertHelper
{

    ///<summary>   
    /// 16进制字符串转字节数组   
    ///</summary>   
   ///<param name="hexString"></param>   
   ///<returns></returns>   
    public static byte[] strToToHexByte(string hexString)
    {

        hexString = hexString.Replace(" ", "");
        if ((hexString.Length % 2) != 0)
           hexString += " ";
        byte[] returnBytes = new byte[hexString.Length / 2];
        for (int i = 0; i < returnBytes.Length; i++)
            returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2).Trim(), 16);
        return returnBytes;
   }

 
    ///<summary>   
    ///字节数组转16进制字符串   
     ///</summary>   
    ///<param name="bytes"></param>   
    ///<returns></returns>   
     public static string byteToHexStr(byte[] bytes)
     {

        string returnStr = "";
        if (bytes != null)
        {
             for (int i = 0; i < bytes.Length; i++)
             {
                 returnStr += bytes[i].ToString("X2");
             }
        }
        return returnStr;
    }

 

    ///<summary>
    ///十六进制转十进制
    ///</summary>
   ///<param name="hex"></param>
   ///<returns></returns>
    public static string Hex2Ten(string hex)
    {
        int ten = 0;
        for (int i = 0, j = hex.Length - 1; i < hex.Length; i++)
        {
            ten += HexChar2Value(hex.Substring(i, 1)) * ((int)Math.Pow(16, j));
            j--;
        }
        return ten.ToString();
    }
}

3、             接收数据

  ///<summary>
  ///接收消息
  ///</summary>
  public void ReceiveMsg()
  {
    while (true)
    {
        byte[] data = new byte[1024];
        int recv = newclient.Receive(data);
        string stringdata = Encoding.UTF8.GetString(data, 0, recv);
        //将所读取的字符串转换为字节数组
        byte[] content = Encoding.ASCII.GetBytes(stringdata);
        if (recv <= 0)
               break;
        string hexString = ConvertHelper.byteToHexStr(content);
        string sd = hexString.Substring(6, 4);
        string wd = hexString.Substring(10, 4);
       //showMsg("温湿度接收到的返回值串为:" + hexString + "\r\n");
        //处理后的温湿度数值
        double csd = double.Parse(ConvertHelper.Hex2Ten(sd)) / 100;
        double cwd = (double.Parse(ConvertHelper.Hex2Ten(wd)) - 27315) / 100;
        showMsg("湿度值为:" + csd + "% 采集时间:[" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "]\r\n");
        showMsg("温度值为:" + cwd + "℃ 采集时间:[" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "]\r\n");
     }
  }

 

    ///<summary>
    ///显示消息
    ///</summary>
   ///<param name="msg"></param>
   public void showMsg(string msg)
   {
      {
          //在线程里以安全方式调用控件
           if (receiveMsg.InvokeRequired)
           {
                MyInvoke _myinvoke = new MyInvoke(showMsg);
                receiveMsg.Invoke(_myinvoke, new object[] { msg });
            }
            else
            {
                receiveMsg.AppendText(msg);
            }
       }
  }
 


 

相关文章
|
2月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
100 20
|
3月前
|
安全 Linux 网络安全
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
111 14
|
2月前
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
48 0
|
3月前
|
存储 监控 安全
网络设备日志记录
网络设备日志记录是追踪设备事件(如错误、警告、信息活动)的过程,帮助IT管理员进行故障排除和违规后分析。日志详细记录用户活动,涵盖登录、帐户创建及数据访问等。为优化日志记录,需启用日志功能、管理记录内容、区分常规与异常活动,并使用专用工具进行事件关联和分析。集中式日志记录解决方案可收集并统一管理来自多种设备和应用的日志,提供简化搜索、安全存储、主动监控和更好的事件可见性,增强网络安全。常用工具如EventLog Analyzer能灵活收集、存储和分析日志,确保高效管理。
183 5
|
4月前
|
5G 数据安全/隐私保护
如果已经链接了5Gwifi网络设备是否还能搜索到其他5Gwifi网络
当设备已经连接到一个5G Wi-Fi网络时,它仍然有能力搜索和发现其他可用的5G Wi-Fi网络。这里所说的“5G Wi-Fi”通常指的是运行在5GHz频段的Wi-Fi网络,而不是与移动通信中的5G网络(即第五代移动通信技术)混淆。
|
5月前
|
网络协议 安全 文件存储
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问,即使IP地址变化,也能通过DDNS服务保持连接。适用于家庭网络远程访问设备及企业临时或移动设备管理,提供便捷性和灵活性。示例代码展示了如何使用Python实现基本的DDNS更新。尽管存在服务可靠性和安全性挑战,DDNS仍极大提升了网络资源的利用效率。
426 6
|
5月前
|
存储 网络性能优化 网络虚拟化
局域网络设备
网卡、中继器、集线器、网桥和交换机是网络通信中的关键设备。网卡实现计算机与网络的连接,中继器用于延长网络传输距离,集线器将多台设备连接至共享网络,网桥通过MAC地址转发数据,而交换机提供高性能的数据转发和过滤服务,支持VLAN、QoS等功能,适用于不同规模的网络环境。
155 3
|
5月前
|
网络协议 安全 网络安全
|
6月前
|
存储 网络安全 数据安全/隐私保护
|
5月前
|
网络虚拟化 数据安全/隐私保护 数据中心
对比了思科和华为网络设备的基本配置、接口配置、VLAN配置、路由配置、访问控制列表配置及其他重要命令
本文对比了思科和华为网络设备的基本配置、接口配置、VLAN配置、路由配置、访问控制列表配置及其他重要命令,帮助网络工程师更好地理解和使用这两个品牌的产品。通过详细对比,展示了两者的相似之处和差异,强调了持续学习的重要性。
203 2

热门文章

最新文章