在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#网络编程 → C#实现上位机通讯

C#实现上位机通讯

C#网络编程

下载此实例
  • 开发语言:C#
  • 实例大小:5.23M
  • 下载次数:251
  • 浏览次数:2036
  • 发布时间:2019-12-30
  • 实例类别:C#网络编程
  • 发 布 人:wston@126.com
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 上位机 C# Socket

实例介绍

【实例简介】

Socket网络通讯主机,物联网通讯,和控制机器设备实现通讯

【实例截图】


from clipboard


from clipboard



【核心代码】


using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO.Ports;
using System.Text;
using System.Windows.Forms;
using UtilityProject;

namespace PortControlDemo
{
    public partial class MainHot : Form
    {
        /// <summary>
        /// 创建串口对象
        /// </summary>
        private SerialPort port = new SerialPort();
        /// <summary>
        /// 接受消息
        /// </summary>
        private StringBuilder MsgStr = new StringBuilder();
        /// <summary>
        /// 构造函数
        /// </summary>
        public MainHot()
        {
            InitializeComponent();

            Control.CheckForIllegalCrossThreadCalls = false;   //防止跨线程访问出错,好多地方会用到 
        }

        private void setopen_Click(object sender, EventArgs e)
        {
           
        }

        private void setclose_Click(object sender, EventArgs e)
        {
            //关
           // pchSend.SendData(tb_send.Text);
        }

        private void setdw_Click(object sender, EventArgs e)
        {
            //档位
            if (seldw.SelectedIndex >= 0)
            {
                string strdw = "0"   (seldw.SelectedIndex   1).ToString();
                //   MessageBox.Show(strdw);
                //pchSend.SendData(tb_send.Text);
            }
            else
            {
                MessageBox.Show("请先选择要设置阀门的档位");
            }

        }


        private void MainHot_Load(object sender, EventArgs e)
        {
            cbtsdz.SelectedIndex = 0;
            //
            setclose.Enabled = false;
            setopen.Enabled = false;
            setdw.Enabled = false;
            seldw.Enabled = false;
            view.Enabled = false;

            btnsetkzid.Enabled = false;
            btngetkzid.Enabled = false;

            btnsetjzqid.Enabled = false;
            btngetjzqid.Enabled = false;

            btnsetid.Enabled = false;
            btnsetip.Enabled = false;
            btnsetdk.Enabled = false;
            btnsetsn.Enabled = false;
            btngetinfo.Enabled = false;
            //
            clsglx.SelectedIndex = 0;
            clfmlx.SelectedIndex = 0;
            //
            ///获取窗口列表
            string[] ports = SerialPort.GetPortNames();
            if (ports.Length > 0)
            {
                ///添加可选通讯口
                com.Items.AddRange(ports);
                ///设置默认选择
                com.SelectedIndex = 0;
                bot.SelectedIndex = 0;
                databit.SelectedIndex = 0;
                stopbit.SelectedIndex = 0;
                jy.SelectedIndex = 0;
            }
            else
            {
                MessageBox.Show("没有可用的串口!");
            }
        }

        private void setclose_Click_1(object sender, EventArgs e)
        {
          
        }

        private void comboBox6_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                ///检测串口是否开着
                if (!port.IsOpen)
                {
                    ///设置串口名称
                    port.PortName = com.SelectedItem.ToString();
                    ///设置波特率
                    port.BaudRate = Convert.ToInt32(bot.Text);
                    ///数据位
                    port.DataBits = Convert.ToInt32(databit.Text);
                    ///设置无协议
                    port.Handshake = Handshake.None;
                    ///设置读取不超时
                    port.ReadTimeout = -1;
                    //port.WriteTimeout = -1;
                    ///设置停止位
                    port.StopBits = GetStopBits(stopbit.SelectedIndex   1);

                    port.DtrEnable = true;
                    ///无校验
                    port.Parity = GetParity(jy.SelectedIndex);
                    ///设置数据接收事件
                    //  port.DataReceived  = ReciveData;
                    port.DataReceived  = Port_DataReceived;
                    ///打开串口
                    port.Open();
                    open.Text = "关闭串口";
                    UpdateStutas();

                    setclose.Enabled = true;
                    setopen.Enabled = true;
                    setdw.Enabled = true;
                    seldw.Enabled = true;
                    view.Enabled = true;

                    btnsetkzid.Enabled = true;
                    btngetkzid.Enabled = true;

                    btnsetjzqid.Enabled = true;
                    btngetjzqid.Enabled = true;

                    btnsetid.Enabled = true;
                    btnsetip.Enabled = true;
                    btnsetdk.Enabled = true;
                    btnsetsn.Enabled = true;
                    btngetinfo.Enabled = true;
                }
                else
                {
                    ///关闭串口
                    port.Close();
                //    port.DataReceived -= ReciveData;
                    port.DataReceived -= Port_DataReceived;
                    open.Text = "打开串口";

                    setclose.Enabled = false;
                    setopen.Enabled = false;
                    setdw.Enabled = false;
                    seldw.Enabled = false;
                    view.Enabled = false;

                    btnsetkzid.Enabled = false;
                    btngetkzid.Enabled = false;

                    btnsetjzqid.Enabled = false;
                    btngetjzqid.Enabled = false;

                    btnsetid.Enabled = false;
                    btnsetip.Enabled = false;
                    btnsetdk.Enabled = false;
                    btnsetsn.Enabled = false;
                    btngetinfo.Enabled = false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("端口设置错误!");
            }
            finally
            {
                UpdateStutas();
            }
        }

        private void Port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            if (rbshowasc.Checked)//判断是否选中了字符选项
            {
                string str = port.ReadExisting();//保存接收到的字符
                txtdata.AppendText(str);//显示出接收到的字符
            }
            else if (rbshowhex.Checked)//数值模式
            {
                byte data;
                data = (byte)port.ReadByte();//读取串口接收的一个字节
                string str = Convert.ToString(data, 16).ToUpper();//将读取到的字节转换成十六进制字符串显示
                txtdata.AppendText("0x"   (str.Length == 1 ? "0"   str : str)   " ");//在文本框中显示出转换后的字符串
            }
        }

        /// <summary>
        /// 数据接收事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void ReciveData(object sender, SerialDataReceivedEventArgs e)
        {
            lbview.Text = "";
            txtdata.Text = "";

            ///是否接受完整
            bool isStop = false;
            ///数据长度
            int count = port.BytesToRead;
            string msg = null;
            //{
            byte[] buff = new byte[count];
            ///接收数据
            port.Read(buff, 0, count);

            ///将比特数据转换为字符串
            foreach (byte buf in buff)
            {
                try
                {
                    if (rbshowasc.Checked)
                    {
                        // msg = System.Text.Encoding.ASCII.GetBytes();
                      //  msg = Convert.ToString(buff);
                        msg = AddData(buff);
                    }
                    else if (rbshowhex.Checked)
                    {
                        msg = Convert.ToString(buf, 16);
                    }
                    if (msg.Length == 1)
                    {
                        msg = "0"   msg;
                    }
                    //if (msg == "16")
                    //{
                        isStop = true;
                    //}
                    MsgStr.Append(msg   " ");
                }
                catch (Exception)
                {
                    MessageBox.Show("设备返回不支持的数据!");
                }
            }
            if (!isStop)
            {
                return;
            }
            ///显示数据
            //data.Text  = "-----------查询返回状态信息:-----------------\n";
            //data.Text  = DateTime.Now.ToString()   ":---->"   MsgStr   '\n';
            //data.Text  = "----------------------------\n";
            txtdata.Text  = MsgStr;
            ///分割接收的消息
            string[] revbuff = MsgStr.ToString().Trim().Split(' ');
            //  MessageBox.Show(revbuff[20] "__" revbuff[19] "__" revbuff[18]);
            //FE FE 68 10 AA AA AA AA AA AA AA 81 08 1F 90 00 01 2D 01 3d 01 1d 16
          //  lbview.Text  = "阀门位置:"  revbuff[17] " " ";当前温度:"  revbuff[19] "."  revbuff[18] "摄氏度";

            MsgStr.Clear();

            //刷新
            
        }
        /// <summary>
        /// 解码过程
        /// </summary>
        /// <param name="data">串口通信的数据编码方式因串口而异,需要查询串口相关信息以获取</param>
        private string AddData(byte[] data)
        {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < data.Length; i  )
            {
                sb.AppendFormat("{0:x2}"   " ", data[i]);
            }
            return sb.ToString();//
        }
        private void send_Click(object sender, EventArgs e)
        {
           if(message.Text.Trim().Length<1)
            {
                MessageBox.Show("请输入发送数据信息!");
                return;
            }
            if (rbasc.Checked)
            {
                SendMsg2(message.Text, 1);
            }
            else if(rbhex.Checked)
            {
                SendMsg2(message.Text, 0);
            }
            else
            {
                MessageBox.Show("请选择发送数据类型!");
            }
        }
        /// <summary>
        /// 获取串口状态
        /// </summary>
        /// <returns></returns>
        private void UpdateStutas()
        {
            if (!port.IsOpen)
                return;
            string stuta = port.PortName   ": "   port.IsOpen.ToString()
                  " DSR:"   port.DsrHolding   " CDH:"   port.CDHolding  
                " CTS:"   port.CtsHolding;
           // stutas.Text = stuta;
        }
        /// <summary>
        /// 发信
        /// </summary>
        /// <param name="newmsg"></param>
        /// <param name="dttype">发送数据格式,0:16进制 1:ASCII码</param>
        private void SendMsg2(string newmsg, int dttype)
        {
            newmsg = newmsg   "\r\n";

            if (!port.IsOpen)
            {
                MessageBox.Show("端口已被关闭!");
                return;
            }
          // UpdateStutas();
            ///清理残余的缓冲区
            port.DiscardInBuffer();
            port.DiscardOutBuffer();
           

           
            //转换列表为数组后发送 
            if (dttype == 0)
            {
                ///分割要发送的消息
                string[] sendbuff = newmsg.Split(' ');
                ///发送数据
                List<byte> buf = new List<byte>();//填充到这个临时列表中
                foreach (string msg in sendbuff)
                {
                    try
                    {
                         buf.Add(byte.Parse(msg, System.Globalization.NumberStyles.HexNumber));
                      //  buf.Add(byte.Parse(msg));
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message   "._"   msg   "不是有效的十六进制数字");
                        return;
                    }
                }
                port.Write(buf.ToArray(), 0, buf.Count);
                
            }
            else if(dttype==1)
            {
                byte[] bytes = System.Text.Encoding.ASCII.GetBytes(newmsg);
                port.Write(bytes, 0, bytes.Length);//发送数据
            }
            //记录发送的字节数  
          //  sendnum.Text = "发送字节数:"   buf.Count;
        }

        private void SendMsg(string newmsg)
        {
            if (!port.IsOpen)
            {
                MessageBox.Show("端口已被关闭!");
                return;
            }
            // UpdateStutas();
            ///清理残余的缓冲区
            port.DiscardInBuffer();
            port.DiscardOutBuffer();



            //转换列表为数组后发送 
  ///分割要发送的消息
                string[] sendbuff = newmsg.Split(' ');
                ///发送数据
                List<byte> buf = new List<byte>();//填充到这个临时列表中
                foreach (string msg in sendbuff)
                {
                    try
                    {
                         buf.Add(byte.Parse(msg, System.Globalization.NumberStyles.HexNumber));
                      //  buf.Add(byte.Parse(msg));
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message   "._"   msg   "不是有效的十六进制数字");
                        return;
                    }
                }
                port.Write(buf.ToArray(), 0, buf.Count);

        
               // byte[] bytes = System.Text.Encoding.ASCII.GetBytes(newmsg);
              //  port.Write(bytes, 0, bytes.Length);//发送数据
         
            //记录发送的字节数  
            //  sendnum.Text = "发送字节数:"   buf.Count;
        }
        /// <summary>
        /// 获取停止位
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        private StopBits GetStopBits(int num)
        {
            foreach (StopBits bit in Enum.GetValues(typeof(StopBits)))
            {
                if ((int)bit == num)
                {
                    return bit;
                }
            }
            return StopBits.None;
        }
        /// <summary>
        /// 获取校验
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        private Parity GetParity(int num)
        {
            foreach (Parity bit in Enum.GetValues(typeof(Parity)))
            {
                if ((int)bit == num)
                {
                    return bit;
                }
            }
            return Parity.None;
        }
        private string[] idsplits(string source,int count)
        {
            List<string> list = new List<string>();
            string temp = string.Empty;
            if (source.Length % count != 0)
                source = source.PadRight(source.Length   (count - source.Length % count));
            for (int i = 0; i < source.Length; i = i   count)
            {
                for (int j = 0; j < count; j  )
                {
                    temp  = source[i   j];
                }
                list.Add(temp);
                temp = string.Empty;
            }
            return list.ToArray();
        }

        private void message_TextChanged(object sender, EventArgs e)
        {

        }

        private void btnsetjzqid_Click(object sender, EventArgs e)
        {
                      
            //得到集中器编号的值
            string str = txtjzqID.Text.Trim();
            if (str.Length == 7)
            {
                string strmsg = "SET CPU ID "   str;
                SendMsg2(strmsg, 1);
            }
            else
            {
                MessageBox.Show("请正确输入设备编号!");
            }
        }
        /// <summary>
        /// 写入控制器地址编号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnsetkzid_Click_1(object sender, EventArgs e)
        {
            txtdata.Text = "";
            string strfmlx = "";
            string strsglx = "";
            try
            {
               
                if (clfmlx.SelectedIndex < 1)
                {
                    MessageBox.Show("请正确选择阀门类型!!");
                    return;
                }
                else if (clfmlx.SelectedIndex == 1)
                {
                    strfmlx = "0";
                }
                else if (clfmlx.SelectedIndex == 2)
                {
                    strfmlx = "5";
                }
                if (clsglx.SelectedIndex < 1)
                {
                    MessageBox.Show("请正确选择水管类型!!");
                    return;
                }

                strsglx = clsglx.SelectedItem.ToString();
                // 获取最新地址值 test by wed 2019-10-28
                // string str = txtkzfid.Text.Trim();
                string connstr = SimpleSqlHelper.GetConnString();
                string sql = "select top 1 * from kzqproducts where scnd =DATEPART(year,getdate()) order by id desc";
                DataSet dsbh = SimpleSqlHelper.ExecuteDataset(connstr, CommandType.Text, sql);
                txtnewcpid.Text = dsbh.Tables[0].Rows[0]["cpbh"].ToString();
                txtnewkzqid.Text = dsbh.Tables[0].Rows[0]["kzqbh"].ToString();

                int bhxh = Convert.ToInt32(txtnewcpid.Text)   1;
                txtcpbh.Text = bhxh.ToString();

                int dzxh = Convert.ToInt32(txtnewkzqid.Text.Substring(7))   1;
                txtkzfid.Text = strfmlx   strsglx   txtcpbh.Text.Substring(0, 2).ToString()   cbtsdz.SelectedItem.ToString()   dzxh.ToString().PadLeft(7, '0');
                //end test

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }

            string str = txtkzfid.Text.Trim();

            if (str.Length == 14)
            {
                str = "6811"   str;
                string idw = string.Empty; // "37 82 00 00 00 00 01 ";
                string jyhw = "00";  //D1
                string[] idstrs = idsplits(str, 2);

                //3组到20组累加取余,结果给21组
                UInt64 sn = 0;

                for (int k = 0; k < idstrs.Length; k  )
                {
                    sn = sn   Convert.ToUInt64(idstrs[k], 16);
                }
                int m = Convert.ToInt32(sn);
                jyhw = Convert.ToString(m, 16);
                if (jyhw.Length > 2)
                {
                    jyhw = jyhw.Substring(1);
                }
                else if (jyhw.Length < 2)
                {
                    jyhw = "0"   jyhw;
                }

                idw = string.Join(" ", idstrs);

                string strmsg = "FE FE FE FE "   idw   " "   jyhw   " 16";
                txtzl.Text = strmsg;
                SendMsg2(strmsg, 0);

                //写入地址成功返回后记录库
                string strpro = "p_addinfo";
                SqlParameter[] ps ={
                                   new SqlParameter("@cpbh",txtcpbh.Text),
                                   new SqlParameter("@kzqbh",txtkzfid.Text),
                                   new SqlParameter("@fmlx",strfmlx),
                                   new SqlParameter("@sglx",strsglx),
                                  new SqlParameter("@cjr","user0")
                                };
                string connstr = SimpleSqlHelper.GetConnString();
                SimpleSqlHelper.ExecuteNonQuery(connstr, CommandType.StoredProcedure, strpro, ps);
            }
            else
            {
                MessageBox.Show("请先生成正确的14位数字控制阀编号!!");
            }
        }

        private void view_Click_1(object sender, EventArgs e)
        {
            if (txtid.Text.Trim().Length > 0)
            {
                ////得到选中行的索引
                //int intRow = dg1.SelectedCells[0].RowIndex;
                ////得到列的索引
                //int intColumn = dg1.SelectedCells[0].ColumnIndex;
                //得到选中行某列的值
                string str = txtid.Text.Trim();
                //  MessageBox.Show(str);
                if (str.Length >= 14)
                {
                    string strmsg = "FE FE FE FE 68 10 "   str   " 01 03 1F 90 00 D1 16";
                    lbview.Text = "";
                    txtdata.Text = "";
                    SendMsg(strmsg);
                }
                else
                {
                    MessageBox.Show("请点击列表选择框正确选择一条设备记录!");
                }
            }
            else
            {
                MessageBox.Show("请点击列表选择框选择一条设备记录!");
            }
        }

        private void btngetkzid_Click_1(object sender, EventArgs e)
        {
            //test by wed 2019-10-28
            string str = txtkzfid.Text.Trim();
            string connstr = SimpleSqlHelper.GetConnString();
          //  string sql = "select * from Hot_Tdqxxs where wkqbh = '"   str   "'";
          //  DataSet dsCamera = SimpleSqlHelper.ExecuteDataset(connstr, CommandType.Text, sql);

            //end test
        }

        private void setopen_Click_1(object sender, EventArgs e)
        {
            //开
            //  pchSend.SendData(tb_send.Text);
            //string strmsg = "FE FE FE 68 10 AA AA AA AA AA AA AA 04 06 17 A0 00 05 65 78 11 16";
            //SendMsg(strmsg);

            if (txtid.Text.Trim().Length > 0)
            {
                ////得到选中行的索引
                //int intRow = dg1.SelectedCells[0].RowIndex;
                ////得到列的索引
                //int intColumn = dg1.SelectedCells[0].ColumnIndex;
                //得到选中行某列的值
                string str = txtid.Text.Trim();
                //  MessageBox.Show(str);
                if (str.Length >= 14)
                {
                    string strmsg = "FE FE FE 68 10 "   str   " 04 06 17 A0 00 05 65 78 11 16";
                    SendMsg(strmsg);
                }
                else
                {
                    MessageBox.Show("请点击列表选择框正确选择一条设备记录!");
                }
            }
            else
            {
                MessageBox.Show("请点击列表选择框选择一条设备记录!");
            }
        }

        private void setdw_Click_2(object sender, EventArgs e)
        {
            //if (seldw.SelectedIndex >= 0)
            //{
            //    string strmsg = "FE FE FE 68 10 AA AA AA AA AA AA AA 04 06 17 A0 00 "   seldw.SelectedItem.ToString()   " 65 78 11 16";
            //    SendMsg(strmsg);
            //}
            //档位
            if (txtid.Text.Trim().Length > 0)
            {
                //得到选中行某列的值
                string str = txtid.Text.Trim();
                //  MessageBox.Show(str);
                if (str.Length >= 14)
                {
                    if (seldw.SelectedIndex >= 0)
                    {
                        string strmsg = "FE FE FE 68 10 "   str   " 04 06 17 A0 00 "   seldw.SelectedItem.ToString()   " 65 78 11 16";
                        SendMsg(strmsg);
                    }
                }
                else
                {
                    MessageBox.Show("请点击列表选择框正确选择一条设备记录!");
                }
            }
            else
            {
                MessageBox.Show("请点击列表选择框选择一条设备记录!");
            }
        }

        private void setclose_Click_2(object sender, EventArgs e)
        {
            // string strmsg = "FE FE FE 68 10 AA AA AA AA AA AA AA 04 06 17 A0 00 00 65 78 11 16";
            // SendMsg(strmsg);

            //关
            if (txtid.Text.Trim().Length > 0)
            {
                ////得到选中行的索引
                //int intRow = dg1.SelectedCells[0].RowIndex;
                ////得到列的索引
                //int intColumn = dg1.SelectedCells[0].ColumnIndex;
                //得到选中行某列的值
                string str = txtid.Text.Trim();
                //  MessageBox.Show(str);
                if (str.Length >= 14)
                {
                    string strmsg = "FE FE FE 68 10 "   str   " 04 06 17 A0 00 00 65 78 11 16";
                    SendMsg(strmsg);
                }
                else
                {
                    MessageBox.Show("请点击列表选择框正确选择一条设备记录!");
                }
            }
            else
            {
                MessageBox.Show("请点击列表选择框选择一条设备记录!");
            }
        }

        private void btngetjzqid_Click(object sender, EventArgs e)
        {
            //获取串口连接集中器的编号
            string strmsg = "GET ID";
            SendMsg2(strmsg, 1);
        }

        private void button2_Click(object sender, EventArgs e)
        {

        }

        //获取到最新的控制器地址编号序号
        private void button3_Click_1(object sender, EventArgs e)
        {
            try
            {
                string strfmlx = "";
                if (clfmlx.SelectedIndex < 1)
                {
                    MessageBox.Show("请正确选择阀门类型!!");
                    return;
                }
                else if (clfmlx.SelectedIndex == 1)
                {
                    strfmlx = "0";
                }
                else if (clfmlx.SelectedIndex == 2)
                {
                    strfmlx = "5";
                }
                if (clsglx.SelectedIndex < 1)
                {
                    MessageBox.Show("请正确选择水管类型!!");
                    return;
                }

                string strsglx = clsglx.SelectedItem.ToString();
                // 获取最新地址值 test by wed 2019-10-28
                // string str = txtkzfid.Text.Trim();
                string connstr = SimpleSqlHelper.GetConnString();
                string sql = "select top 1 * from kzqproducts where scnd =DATEPART(year,getdate()) order by id desc";
                DataSet dsbh = SimpleSqlHelper.ExecuteDataset(connstr, CommandType.Text, sql);
                txtnewcpid.Text = dsbh.Tables[0].Rows[0]["cpbh"].ToString();
                txtnewkzqid.Text = dsbh.Tables[0].Rows[0]["kzqbh"].ToString();

                int bhxh = Convert.ToInt32(txtnewcpid.Text)   1;
                txtcpbh.Text = bhxh.ToString();

                int dzxh = Convert.ToInt32(txtnewkzqid.Text.Substring(7))   1;
                txtkzfid.Text = strfmlx   strsglx   txtcpbh.Text.Substring(0, 2).ToString()   cbtsdz.SelectedItem.ToString()   dzxh.ToString().PadLeft(7, '0');
                //end test
                txtsetid.Text = txtkzfid.Text;  //生成地址显示            
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }

        private void btngetjzq_Click(object sender, EventArgs e)
        {
            //获取到最新的集中器编号序号
            string connstr = SimpleSqlHelper.GetConnString();
            string jzqsql = "SELECT *  FROM [dbo].[kzlinks] where scnd = DATEPART(year,getdate()) and scyf = DATEPART(month,getdate()) order by id desc";
            DataSet dsjzqbh = SimpleSqlHelper.ExecuteDataset(connstr, CommandType.Text, jzqsql);
            lbjzqbh.Text = dsjzqbh.Tables[0].Rows[0]["jzqbh"].ToString();
            int bh = Convert.ToInt32(lbjzqbh.Text)   1;
            txtjzqID.Text = bh.ToString();
            //end test 2019-11-04
        }

        private void btnsetip_Click(object sender, EventArgs e)
        {
            //设置主机连接IP
            string strmsg = "SET SERVER IP ";//047.104.137.177
            strmsg = strmsg   txtip.Text.Trim();
            SendMsg2(strmsg, 1);
        }

        private void btnsetsn_Click(object sender, EventArgs e)
        {
            //设置心跳时间间隔8秒
            string strmsg = "SET BETA TIME GAP ";//300
            strmsg = strmsg   txtsjjg.Text.Trim();
           // strmsg = strmsg   "\r\n";
            SendMsg2(strmsg, 1);
        }

        private void btngetinfo_Click(object sender, EventArgs e)
        {
            txtdata.Text = "";
            //查看现有配置
            string strmsg = "GET INFO";
            SendMsg2(strmsg, 1);
        }

        private void btnsetdk_Click(object sender, EventArgs e)
        {
            //设置连接主机端口
            string strmsg = "SET IP PORT ";//300
            strmsg = strmsg   txtdk.Text.Trim();
            SendMsg2(strmsg, 1);
        }

        private void btnsetid_Click(object sender, EventArgs e)
        {
            txtdata.Text = "";
            //手动设置地址写入
            string str = txtsetid.Text.Trim();

            if (str.Length == 14)
            {
                str = "6811"   str;
                string idw = string.Empty; // "00 20 19 00 00 00 01 ";
                string jyhw = "00";  //D1
                string[] idstrs = idsplits(str, 2);

                //3组到20组累加取余,结果给21组
                UInt64 sn = 0;

                for (int k = 0; k < idstrs.Length; k  )
                {
                    sn = sn   Convert.ToUInt64(idstrs[k], 16);
                }
                int m = Convert.ToInt32(sn);
                jyhw = Convert.ToString(m, 16);
                if (jyhw.Length > 2)
                {
                    jyhw = jyhw.Substring(1);
                }
                else if (jyhw.Length < 2)
                {
                    jyhw = "0"   jyhw;
                }

                idw = string.Join(" ", idstrs);

                string strmsg = "FE FE FE FE "   idw   " "   jyhw   " 16";
                txtzl.Text = strmsg;
                SendMsg2(strmsg, 0);
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            txtdata.Text = "";
        }
    }
}


标签: 上位机 C# Socket

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警