首页 > 编程语言 >C# Modbus Tcp 实现(二)

C# Modbus Tcp 实现(二)

时间:2024-09-29 17:24:21浏览次数:8  
标签:info Substring 00 string C# bytes Tcp Modbus str

        CSocketClient info;
        ModbusMaster master;

        //public static ModbusTcp2 Instance = new ModbusTcp2("192.168.0.8", 8000);
        public static ModbusTcp2 Instance = new ModbusTcp2("127.0.0.1", 8000);

        public ModbusTcp2(string ip,int port)
        {
            info = new CSocketClient();

            info.Ip = ip;
            info.Port = port;
            info.ConnectToServer();

            info.GClientRecMsgClass1.ClientRecMsgEvent1 += GClientRecMsgClass1_ClientRecMsgEvent1;

        }

        private void GClientRecMsgClass1_ClientRecMsgEvent1(object o)
        {
             MessageBox.Show(info.RecMessage);
        }
        private string sendStr;
        /// <summary>
        /// 发送string内容
        /// </summary>m
        public string SendString
        {
            get { return sendStr; }
            set
            { 

                sendStr = value;
            }
        }

        /// <summary>
        /// 16进制字符转为字节流
        /// </summary>
        /// <param name="str"></param>
        /// <param name="fromBase"></param>
        /// <returns></returns>
        public static byte[] HexStringToBytes(string str, int fromBase = 16)
        {
            str = str.Replace(" ", "");
            if ((str.Length % 2) != 0)
                str += "";
            byte[] bytes = new byte[str.Length / 2];
            for (int i = 0; i < bytes.Length; i++)
            {
                bytes[i] = Convert.ToByte(str.Substring(i * 2, 2), fromBase);
            }
            return bytes;
        }
   /// <summary>
        /// 字符串转16进制字节数组
        /// </summary>
        /// <param name="hexString"></param>
        /// <returns></returns>
        private 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), 16);
            return returnBytes;
        }
        public  string FloatToHexStr(int f)
        {
            string fStr = "";
            fStr = ByteToHexStr(BitConverter.GetBytes(f));
            return fStr;

        }
        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;
        }
        string StartToEnd(string str)
        {
            string tmp = str.PadLeft(8,'0');
            string tmp1 = str.Substring(4, 4);
            string tmp2 = str.Substring(0, 4);

            string tmp11 = tmp1.Substring(2, 2);
            string tmp12 = tmp1.Substring(0, 2);

            string tmp21 = tmp2.Substring(2, 2);
            string tmp22 = tmp2.Substring(0, 2);


            return tmp11 + " " + tmp12 + " " + tmp21 + " " + tmp22;
        }
        public void Write(int value,string hexAddress  = "F2 00")
        {
            string tmp1 = FloatToHexStr(value);
            string str = "00 01 00 00 00 0B 01 10 "+ hexAddress + "00 01 04 " /*+ "00 00 0B B8"*/;
            string str2 = FloatToHexStr(value);
            string str3 = StartToEnd(str2);

            //info.SendMsgToServerByte(Combine(HexStringToBytes(str), ModelToBytes(value)));
            info.SendMsgToServerByte(HexStringToBytes(str + str3));
        }

 

标签:info,Substring,00,string,C#,bytes,Tcp,Modbus,str
From: https://www.cnblogs.com/echo-efun/p/18439104

相关文章

  • C# Modbus Tcp实现(一)
     类CSocketClient主要包括以下内容:privateTcpClient_client;publicThread_connectionThread;privateStreamWriter_write;publicClientRecMsgClassGClientRecMsgClass1=newClientRecMsgClass();privatestringhostn......
  • Star 3w+,向更安全、更泛化、更云原生的 Nacos3.0 演进
    作者:席翁Nacos社区刚刚迎来了Star突破30000的里程碑,从此迈上了一个新的阶段。感谢大家的一路支持、信任和帮助!Nacos /nɑ:kəʊs/是Dynamic Namingand Configuration Service的首字母简称,定位于一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。......
  • Capital许可证分配策略
    随着企业对于软件依赖的加深,Capital许可证的分配成为了一个需要细致考虑的重要环节。为了确保软件合规使用、优化资源配置,并提高运营效率,本文将提供关于Capital许可证分配策略的具体建议和实施步骤。一、核心建议1.了解许可条款:在分配之前,务必详细阅读并理解Capital许可证的条款......
  • 视频格式转换 CoolUtils Total Movie Converter v4.1 中文授权版
    CoolUtilsTotalMovieConverter 是一款适用于PC端的视频格式转换软件,支持转换几乎所有常见的视频格式。无论你需要将视频转换为AVI、FLV、MPG、WMV、MPEG等格式,还是想将视频优化用于XBox、iPhone、iPad等设备,这款工具都能帮你实现。新版添加了“VideoToDevice”功能,确......
  • ImageMagick安装
    安装ImageMagick先安装一些依赖yuminstalllibjpegyuminstalllibjpeg-develyuminstalllibpngyuminstalllibpng-develyuminstalllibtiffyuminstalllibtiff-develyuminstalllibungifyuminstalllibungif-develyuminstallfreetypeyuminstallzlib......
  • Excel:常用函数
    一、DAYS(返回两个日期之间的天数)以下演示是在windows操作系统环境,office软件进行操作的1.1单元格设置日期格式1.2设置Days函数公式:=DAYS(C2,B2)全部天数二、SUM(求和)公式:=SUM(B2:C2)三、SUMIFS(多条件求和)3.1统计销售部报销金额公式:=SUMIFS(D:D......
  • 从Anaconda到PyTorch到训练Yolo——Windows系统
    1、Anacondaconda能管理不同的开发编译环境,互补干涉影响。Anaconda和Miniconda是conda的工具,前者带界面(大而全),后者只有命令行窗口(小而精)。作为初学,建议安装Anaconda1.1安装Anaconda下载 DownloadAnacondaDistribution|Anaconda ,安装到D盘,其他默认。 1.2更换源 ......
  • COMM5000 Data Literacy
    COMM5000DataLiteracyCaseStudyProjectMilestone1InformationTerm3,2024CaseStudyInformationBusinesscontext:Inrecentyears,thegrowinginterestinwinehasfuelledtheexpansionofthewineindustry.Asaresult,companiesareinvestinginnew......
  • 9月28日,工信部人才交流中心&CUUG-PGCA/PGCP/PGCM认证考试完成!
    2024年9月28日,由工业和信息化部人才交流中心主办,北京神脑资讯技术有限公司承办的PostgreSQL管理员岗位能力认证考试(PGCP中级/PGCM高级)顺利完成。中级PG认证专家:PGCP(PostgreSQLCertifiedProfessional),是对PostgreSQL数据库技术能力的一种认可,达到了专家级别,可以对PostgreSQL数据......
  • rpyc python rpc 框架
    rpyc属于一个老牌项目了,支持rpc模式的处理,同时支持面向服务的开发模式,包含了一些安全控制,支持服务注册,服务发现包含的特性透明,可以使用类似本地模式的方法访问对称,client以及server都可以支持调用支持同步以及异步操作平台无关低开销安全,支持基于tls,以及ssh的访问模......