• C# 测试 modbusTCP 经验积累


    代码
     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    using System.Windows.Forms;

    namespace WindowsApplication3
    {
        
    public partial class Form1 : Form
        {
            
    public Form1()
            {
                InitializeComponent();
            }

            
    private void button1_Click(object sender, EventArgs e)
            {
                
    try
                {
                    
    int port = Convert.ToInt32(portm.Text);
                    
    string host = ipAddress.Text;
                    IPAddress ip 
    = IPAddress.Parse(host);
                    IPEndPoint ipe 
    = new IPEndPoint(ip, port);
                    Socket c 
    = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    c.Connect(ipe);
                    
    byte[] obuf = strToToHexByte("00 00 00 00 00 06 01 03 00 00 00 0A");
                    c.Send(obuf, obuf.Length, 
    0);
                    
    byte[] recvBytes = new byte[256];
                    c.Receive(recvBytes, recvBytes.Length, 
    0);
                    recent.Text 
    = byteToHexStr(recvBytes);
                    c.Close();
                }
                
    catch (ArgumentNullException ex)
                {
                    recent.Text 
    = ex.ToString();
                }
                
    catch (SocketException ex)
                {
                    recent.Text 
    = ex.ToString();
                }

            }

            
    //16进制转换
            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;
            }

            
    //字符串转byte
            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 * 22), 16);
                
    return returnBytes;
            }

            
    private void timer1_Tick(object sender, EventArgs e)
            {
                button1_Click(sender,e);
            }

            
    private void button2_Click(object sender, EventArgs e)
            {
                timer1.Enabled 
    = true;
            }

            
    private void button3_Click(object sender, EventArgs e)
            {
                timer1.Enabled 
    = false;
            }

        }
    }

     
  • 相关阅读:
    [转]线程同步
    [转]C#线程同步(1)- 临界区&Lock
    获取系统空闲时间
    [转]一分钟明白 VS manifest 原理
    泛型总结
    wpf listbox touch 整个窗口移动
    git问题 next fetch will store in remotes/origin
    创建maven项目出现的问题
    JPA
    JDK JRE JVM
  • 原文地址:https://www.cnblogs.com/hyruur/p/1957740.html
Copyright © 2020-2023  润新知