当前位置: 首页 > 资源下载  > 恒远工具

SDK_Demo(DTU-RTU通用版)

开发平台:VS2012及以上版本 .Net 4.0using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Configuration;namespace Test…

开发平台:VS2012及以上版本 .Net 4.0

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Configuration;


namespace TestModel

{

    public partial class Form1 : Form

    {

        /// <summary>

        /// 服务

        /// </summary>

        AsySocket.Server sever = null;

        /// <summary>

        /// 服务端口

        /// </summary>

        int Port;

        /// <summary>

        /// 服务类型

        /// </summary>

        AsySocket.Service_Type severType;

        /// <summary>

        /// 消息缓存

        /// </summary>

        AsySocket.MemQueue<string> msgQueue = new AsySocket.MemQueue<string>();

     


        public Form1()

        {

            Control.CheckForIllegalCrossThreadCalls = false;

            InitializeComponent();

        }


        private void btn_StartSever_Click(object sender, EventArgs e)

        {

            if (!int.TryParse(tbox_SeverPort.Text.Trim(), out Port))

            {

                Port = 10001;

                tbox_SeverPort.Text = Port.ToString();                

            }

            if (rbtn_SeverType.Checked)

            {

                severType = AsySocket.Service_Type.TCP;

            }else{

                severType = AsySocket.Service_Type.UDP;

            }


            sever = new AsySocket.Server();

            sever.onClose += new AsySocket.onClose(sever_onClose);

            sever.OnRegist += new AsySocket.onRegist(sever_OnRegist);

            sever.onCmdRecv += new AsySocket.onCmdRecv(sever_onCmdRecv);

            sever.onError += new AsySocket.onError(sever_onError);

            sever.Start(severType, Port);


            btn_StartSever.Enabled = false;

            btn_StopSever.Enabled = true;

        }

        #region 事件处理

        private void sever_onClose(AsySocket.CmdTag cmd)

        {

           msgQueue.Add("设备" + cmd.DeviceID + "断开。");

           lbox_deviceList.Items.Remove(cmd.DeviceID.ToString());

        }


        private void sever_OnRegist(AsySocket.CmdTag cmd)

        {

            msgQueue.Add("收到设备" + cmd.DeviceID + "注册登录信息。");

          

            sever.SetOnLine(cmd.DeviceID, 1);  //响应设备注册;1允许,0不允许

            if (!lbox_deviceList.Items.Contains(cmd.DeviceID.ToString()))

            {

                lbox_deviceList.Items.Add(cmd.DeviceID.ToString());

            }

        }


        private void sever_onCmdRecv(AsySocket.CmdTag cmd)

        {

            Exectue(cmd);

        }


        private void sever_onError(string msg)

        {

            msgQueue.Add(msg);

        }


        #endregion

        private void btn_StopSever_Click(object sender, EventArgs e)

        {

            if (sever == null)

            {

                return;

            }

            try

            {

                sever.Stop();

                sever = null;

                btn_StartSever.Enabled = true;

                btn_StopSever.Enabled = false;

            }

            catch { }

        }


        /// <summary>

        /// 解析收到的数据

        /// </summary>

        /// <param name="cmd"></param>

        private void Exectue(AsySocket.CmdTag cmd)

        {

            try

            {

                switch (cmd.CmdType)

                {

                    

                    default:

                        {

                            msgQueue.Add(string.Format("收到设备{0}数据——{1}。", cmd.DeviceID, AsySocket.FormatHelper.ByteArrayToHexString(cmd.Param)));

                           

                            break;

                        }

                }

            }

            catch (Exception ex){

                msgQueue.Add(string.Format("解析数据错误{0},{1}\r\n{2}", cmd.DeviceID, AsySocket.FormatHelper.ByteArrayToHexString(cmd.Param), ex.Message));

            }

        }



        private void Form1_Load(object sender, EventArgs e)

        {

        }

        

       

        private void timer1_Tick(object sender, EventArgs e)

        {

            while (msgQueue.Count > 0)

            {

                if (tbox_Msg.TextLength > 32768)

                {

                    tbox_Msg.Clear();

                }

                tbox_Msg.AppendText(string.Format("{0}:{1}\r\n", DateTime.Now.ToLongTimeString(), msgQueue.Get()));

            }

            lb_DeviceCount.Text = lbox_deviceList.Items.Count.ToString();

        }


        private void Form1_Closing(object sender, FormClosingEventArgs e)

        {

            timer1.Enabled = false;

            try

            {

                sever.Stop();

            }

            catch { }

        }


        private void btn_ClearMsg_Click(object sender, EventArgs e)

        {

            tbox_Msg.Clear();

           

        }


       


       

    }

}


附件下载

  • 下载

    开发SDK_Demo(通用版).rar

    文件类型:rar 大小: 96KB

相关资源

  • 恒远物联通用配置工具-V2019

    恒远物联通用配置工具,支持DTU/RTU/MBUS集中器等系列产品在使用过程中有何疑问,请随时与我们联系:028-87657875

  • SDK_Demo(MBUS集中器版)

    开发平台:VS2012及以上版本,.Net 4.0using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Configuration;namespace Te…

  • 恒远协议开发SDK

    DLL通信库文件说明 C# DLL库使用说明 1、DLL库名 AsySocket2、服务类名Server使用定义AsySocket.Server sever = null; 3、指令状态CommandStateCMD_STATE_OK ——0CMD_STATE_FAIL ——1CMD_STATE_SEND ——2 4、基本命令结构类CmdTagCmdTag结构类是事件和发送数据最小…

DTU(11) RTU(11) 物联网(11) MBUS(10) HERY(6) 4G全网通(5) 智慧工地(3) PLC(2) RS485(2) RS232(1) DI(1) DO(1) AI(1) AO(1) 集中器(1) 采集器(1) 抄表(1) GPRS(1) GPRS2G(1) 智慧水务(1) 5G(1) MQTT(1) HTTP(1) IOT(1) SCADA(1) NBIOT(1) WiFi(0) BLE(0) PWM(0) 污水处理(0)
咨询反馈
扫码关注

恒远物联 微信公众号

返回顶部
网站客服