⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 GPRS数据传输的软件界面程序C#2005,vb6,delphi,cb6
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_AddCOM(Int32 comindex, Int32 baud, Int32 databits, Int32 checkbits, Int32 stopbits);

        //用于远程配置
        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_AddNetServer([MarshalAs(UnmanagedType.LPStr)] string szip,
                                Int32 localport, [MarshalAs(UnmanagedType.LPStr)] string szpwd);
        
        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_GetNewConnectedClient(Int32 hServerDTU);

        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_GetClientInfo(Int32 hServerDTU, ref byte pszdesip, ref Int32 pdesport, 
                                    ref byte sztype, ref byte szname, ref byte szid, ref byte szphone);
        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_IsClientAvailable(Int32 hServerDTU);

        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_SendData(Int32 hServerDTU, ref byte pdata, Int32 len);

        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_ReceiveData(Int32 hServerDTU, ref byte pdata, Int32 len);

        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_GetReceiveDataCount(Int32 hServerDTU);

        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_GetAllConfig(Int32 hServerDTU);//用于一次性获取所有配置信息,和DTU_GetConfig一起配合使用
        
        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_GetConfig(Int32 hServerDTU, [MarshalAs(UnmanagedType.LPStr)] string szcmd,
             ref byte szdata);

        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_Init(Int32 hServerDTU);//必须在主线程中调用

        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_EnterConfig(Int32 hServerDTU);
        
        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_ConfigRead(Int32 hServerDTU, [MarshalAs(UnmanagedType.LPStr)] string szcmd,
                                            ref byte szdata);
        
        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_ConfigWrite(Int32 hServerDTU, [MarshalAs(UnmanagedType.LPStr)] string szcmd,
                                            [MarshalAs(UnmanagedType.LPStr)] string szdata);
        
        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_ExitConfig(Int32 hServerDTU, Int32 wait);

        [DllImport("DTUSet.dll")]
        static extern Int32 DTU_Uninit(Int32 hServerDTU);//必须在主线程中调用

        [DllImport("DTUSet.dll")]
        static extern void DTU_Delete(Int32 hServerDTU);

        public Form1()
        {
            InitializeComponent();
        }

        private Int32 m_hServer = 0;
        private Int32 m_hDTU = 0;

        private void BtnServer_Click(object sender, EventArgs e)
        {
            string s = textPort.Text;
            if(m_hServer == 0) // local port has not started
            {
                m_hServer = DTU_AddNetServer("", System.Convert.ToInt32(s), "");
                if (DTU_Init(m_hServer) == 0)
                {
                    DTU_Uninit(m_hServer);
                    DTU_Delete(m_hServer);
                    m_hServer = 0;
                    MessageBox.Show("无法启动" + s + "服务端口", "错误",
                                    MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                BtnServer.Text = "停止服务";
                timer100.Enabled = true;
            }
            else // local port has started
            {
                if(m_hDTU != 0)
                {
                    DTU_Uninit(m_hDTU);
                    DTU_Delete(m_hDTU);
                    m_hDTU = 0;
                }
                DTU_Uninit(m_hServer);
                DTU_Delete(m_hServer);
                m_hServer = 0;

                timer100.Enabled = false;
                listClient.Items.Clear();
                BtnServer.Text = "启动服务";
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            textPort.Text = "51236";

            listClient.View = View.Details;
            listClient.Columns.Add("IP", 115, HorizontalAlignment.Center);
            listClient.Columns.Add("端口", 45, HorizontalAlignment.Center);
            listClient.Columns.Add("句柄", 55, HorizontalAlignment.Center);

            //ListViewItem lv = new ListViewItem();
            //lv = listClient.Items.Insert(listClient.Items.Count, "192.168.0.1");
            //lv.SubItems.Add("2356");
            //lv.SubItems.Add("4567");
        }

        private void timer100_Tick(object sender, EventArgs e)
        {
            Int32 m_hClient /*= new Int32()*/;
            if(m_hServer != 0)
            {
                m_hClient = DTU_GetNewConnectedClient(m_hServer);
                if (m_hClient != 0)
                {
                    byte[] szdesIP = new byte[20];
                    Int32 desPort = new Int32();
                    byte[] sztype = new byte[20];
                    byte[] szName = new byte[30];
                    byte[] szID = new byte[20];
                    byte[] szPhone = new byte[20];

                    DTU_GetClientInfo(m_hClient, ref szdesIP[0], ref desPort, ref sztype[0], 
                                        ref szName[0], ref szID[0], ref szPhone[0]);

                    ListViewItem lv = new ListViewItem();
                    lv = listClient.Items.Insert(listClient.Items.Count, System.Text.Encoding.ASCII.GetString(szdesIP));
                    lv.SubItems.Add(System.Convert.ToString(desPort));
                    lv.SubItems.Add(System.Convert.ToString(m_hClient));
                }

                Int32 count = listClient.Items.Count;
                for (Int32 i = 0; i < count; i++)
                {
                    m_hDTU = System.Convert.ToInt32(listClient.Items[i].SubItems[2].Text);

                    if (DTU_IsClientAvailable(m_hDTU) == 1)
                    {
                        Int32 length = new Int32();
                        length = DTU_GetReceiveDataCount(m_hDTU);
                        if (length != 0)
                        {
                            byte[] data = new byte[length];
                            DTU_ReceiveData(m_hDTU, ref data[0], length);
                            string temp = System.Text.Encoding.ASCII.GetString(data);
                            textBoxRec.Text += temp;
                        }
                    }
                    else
                    {
                        DTU_Uninit(m_hDTU);
                        DTU_Delete(m_hDTU);
                        listClient.Items.RemoveAt(i);
                    }
                }
            }
        }

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

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

        private string StrHexToDec(string s)
        {
            System.Diagnostics.Debug.Assert(s.CompareTo("") != 0, "数据为空");
            string ret = "";
            byte tmp = 0;
            for (int i = 0; i < s.Length; i++)
            {
                string temp = System.Convert.ToString(s[i]) + System.Convert.ToString(s[++i]);
                tmp = System.Convert.ToByte(temp, 16);
                ret += System.Convert.ToChar (tmp);
                i++;
            }
            return ret;
        }

        private void BtnSent_Click(object sender, EventArgs e)
        {
            ListViewItem lv = new ListViewItem();
            lv = listClient.FocusedItem;
            if (lv == null)
            {
                MessageBox.Show("没有客户端连接");
                return;
            }
            String s = lv.SubItems[2].Text;
            if(DTU_IsClientAvailable(System.Convert.ToInt32(s)) == 1)
            {
                string data = textBoxSent.Text;
                if (data.Length == 0)
                {
                    return;
                }
                byte[] byteData = new byte[data.Length];
                if (radioHex.Checked == true)
                {
                    data = StrHexToDec(data);
                }
                for (int i = 0; i < data.Length; i++)
                {
                    byteData[i] = System.Convert.ToByte(data[i]);
                }
                
                DTU_SendData(m_hDTU, ref byteData[0], data.Length);
            }
        }

        private void Form1_Unload(object sender, FormClosingEventArgs e)
        {
            if (m_hServer != 0)
            {
                if (m_hDTU != 0)
                {
                    DTU_Uninit(m_hDTU);
                    DTU_Delete(m_hDTU);
                    m_hDTU = 0;
                }
                DTU_Uninit(m_hServer);
                DTU_Delete(m_hServer);
                m_hServer = 0;
            }
            listClient.Items.Clear();
            timer100.Enabled = false;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -