找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1463|回复: 0
打印 上一主题 下一主题
收起左侧

FX系列以太网(FX5U)

[复制链接]
跳转到指定楼层
楼主
ID:596934 发表于 2019-8-7 15:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

using System.Collections.Generic;
using System;
using System.Linq;
using System.Drawing;
using System.Diagnostics;
using System.Data;
using System.Xml.Linq;
using Microsoft.VisualBasic;
using System.Collections;
using System.Windows.Forms;


using System.Runtime.InteropServices;

namespace TcpClient
{
       
        public partial class Form1
        {
                public Form1()
                {
                        InitializeComponent();
                       
                        if (defaultInstance == null)
                                defaultInstance = this;
                }
               
#region Default Instance
               
                private static Form1 defaultInstance;
               

                public static Form1 Default
                {
                        get
                        {
                                if (defaultInstance == null)
                                {
                                        defaultInstance = new Form1();
                                        defaultInstance.FormClosed += new FormClosedEventHandler(defaultInstance_FormClosed);
                                }
                               
                                return defaultInstance;
                        }
                        set
                        {
                                defaultInstance = value;
                        }
                }
               
                static void defaultInstance_FormClosed(object sender, FormClosedEventArgs e)
                {
                        defaultInstance = null;
                }
               
#endregion
               
                int Handle1;
                bool EntLink;
                long ScanCount;
               
                EntFxPlc.PlcClient PLC = new EntFxPlc.PlcClient();
               
                [DllImport("winmm.dll", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]
                public static extern UInt32 timeGetTime();
               
                public void Form1_Load(System.Object sender, System.EventArgs e)
                {
                        this.CenterToScreen();
                        cmbReadMry.Items.Clear();
                        cmbReadMry.Items.Add("X");
                        cmbReadMry.Items.Add("Y");
                        cmbReadMry.Items.Add("M");
                        cmbReadMry.Items.Add("L");
                        cmbReadMry.Items.Add("F");
                        cmbReadMry.Items.Add("D");
                       
                               
                        cmbWriteMry.Items.Clear();
                        cmbWriteMry.Items.Add("X");
                        cmbWriteMry.Items.Add("Y");
                        cmbWriteMry.Items.Add("M");
                        cmbWriteMry.Items.Add("L");
                        cmbWriteMry.Items.Add("F");
                        cmbWriteMry.Items.Add("D");
                       
                       
                       
                        cmbBitMry.Items.Clear();
                        cmbBitMry.Items.Add("X");
                        cmbBitMry.Items.Add("Y");
                        cmbBitMry.Items.Add("M");
                        cmbBitMry.Items.Add("L");
            cmbBitMry.Items.Add("F");
            cmbBitMry.Items.Add("D");
                       
                        //
                        cmbReadType.Items.Clear();
                        cmbReadType.Items.Add("INT16");
                        cmbReadType.Items.Add("UINT16");
                        cmbReadType.Items.Add("DINT32");
                        cmbReadType.Items.Add("HEX32");
                        cmbReadType.Items.Add("REAL32");
                        cmbReadType.Items.Add("BIN16");
                       
                        cmbWriteType.Items.Clear();
                        cmbWriteType.Items.Add("INT16");
                        cmbWriteType.Items.Add("UINT16");
                        cmbWriteType.Items.Add("DINT32");
                        cmbWriteType.Items.Add("HEX32");
                        cmbWriteType.Items.Add("REAL32");
                        cmbWriteType.Items.Add("BIN16");
                       

                        cmbReadMry.SelectedIndex = 5;
                        cmbWriteMry.SelectedIndex = 5;
                        cmbBitMry.SelectedIndex = 2;
                        cmbReadType.SelectedIndex = 0;
                        cmbWriteType.SelectedIndex = 0;
                        lstRead.Items.Clear();
                        txtWrite.Text = "";
            cmbCmdType.SelectedIndex = 0;
                       
                }
               
               
                public void butLink_Click(System.Object sender, System.EventArgs e)
                {
                        short re = 0;
                        string restr = "";
            re = PLC.EntLink(txtLocalIP.Text.Trim(), Convert.ToUInt16(txtLocalPort.Text), txtRemoteIP.Text.Trim(), Convert.ToUInt16(txtRemotePort.Text),  "DEMO", ref Handle1,Convert.ToUInt16 (2000),Convert .ToBoolean (cmbCmdType .SelectedIndex ));
                        txtReLink.Text = re.ToString();
                        if (re == 0)
                        {
                                EntLink = true;
                                MessageBox.Show("PLC联接成功!");
                        }
                        else
                        {
                                EntLink = false;
                                MessageBox.Show("PLC联接失败: " + restr);
                        }
                }
               
               
               
                public void butClose_Click(System.Object sender, System.EventArgs e)
                {
                        short re = 0;
                        EntLink = false;
                        re = PLC.DeLink(Handle1);
                        txtReClose.Text = re.ToString();
                }
               
               
               
                public void butRead_Click(System.Object sender, System.EventArgs e)
                {
                        short i = 0;
                        short re = 0;
                        object[] RD = null;
                        if (!EntLink)
                        {
                                MessageBox.Show("还未与PLC建立联接!");
                                return;
                        }
                        if (Conversion.Val(txtReadCnt.Text) < 1)
                        {
                                MessageBox.Show("CmdRead方法的Count参数必须大于0.");
                                return;
                        }
                        RD = new object[Convert.ToUInt16(txtReadCnt.Text)];
            int var1 =cmbReadMry.SelectedIndex + 1;
                        EntFxPlc.PlcClient.PlcMemory mry = (EntFxPlc.PlcClient.PlcMemory)var1;
            var1 =cmbReadType.SelectedIndex + 1;
                        EntFxPlc.PlcClient.DataType typ =(EntFxPlc.PlcClient.DataType)var1;
                       
                        re = PLC.CmdRead(Handle1, mry, typ, Convert.ToUInt16(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);
                       
                        txtReRead.Text = re.ToString();
                        lstRead.Items.Clear();
                        for (i = 0; i < RD.Length; i++)
                        {
                                if (!ReferenceEquals(RD[i], null))
                {
                                        lstRead.Items.Add(RD[i]);
                                }
                                else
                                {
                                        lstRead.Items.Add("0");
                                }
                        }
                }
               
               
                public void butWrite_Click(System.Object sender, System.EventArgs e)
                {
                        short i = 0;
                        short re = 0;
                        string[] temp = null;
                        object[] WD = null;
                        if (!EntLink)
                        {
                                MessageBox.Show("还未与PLC建立联接!");
                                return;
                        }
                        if (Conversion.Val(txtWriteCnt.Text) < 1)
                        {
                                MessageBox.Show("CmdRead方法的Count参数必须大于0.");
                                return;
                        }
            WD = new object[Convert.ToUInt16(txtWriteCnt.Text)];
                        temp = txtWrite.Text.Split('\n');
                        for (i = 0; i < WD.Length; i++)
                        {
                                if (i >= temp.Length)
                                {
                                        WD[i] = 0;
                                }
                                else
                                {
                                        WD[i] = temp[i].Trim();
                                }
                        }
            int var1 = cmbWriteMry.SelectedIndex + 1;
            EntFxPlc.PlcClient.PlcMemory mry = (EntFxPlc.PlcClient.PlcMemory)var1;
            var1 = cmbWriteType.SelectedIndex + 1;
            EntFxPlc.PlcClient.DataType typ = (EntFxPlc.PlcClient.DataType)var1;
                       
                        re = PLC.CmdWrite(Handle1, mry, typ, Convert.ToUInt16(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);
                       
                        txtReWrite.Text = re.ToString();
                }
               
               
                public void butScan_Click(System.Object sender, System.EventArgs e)
                {
                        if (!EntLink)
                        {
                                MessageBox.Show("还未与PLC建立联接!");
                                return;
                        }
                        if (butScan.Text == "Cycle R/W")
                        {
                                ScanCount = 0;
                                Timer1.Enabled = true;
                                butScan.Text = "Stop R/W";
                        }
                        else
                        {
                                Timer1.Enabled = false;
                                butScan.Text = "Cycle R/W";
                        }
                }
               
               
               
               
                public void Timer1_Tick(System.Object sender, System.EventArgs e)
                {
                        Timer1.Enabled = false;
                        int tim = System.Convert.ToInt32(timeGetTime());
                        if (!EntLink)
                        {
                                MessageBox.Show("还未与PLC建立联接!");
                                return;
                        }
                        //
                        butRead_Click(null, null);
                        butWrite_Click(null, null);
                        //
                        if ((short.Parse(txtReRead.Text) < 0) || (short.Parse(txtReWrite.Text) < 0))
                        {
                                butScan.Text = "Cycle R/W";
                                return;
                        }
                        else
                        {
                                ScanCount++;
                                txtScanCnt.Text = ScanCount.ToString();
                                txtScanPrd.Text = (System.Convert.ToInt32(timeGetTime()) - tim) + "ms";
                        }
                        Timer1.Enabled = true;
                }
               
               
               
               
                public void butBitTest_Click(System.Object sender, System.EventArgs e)
                {
                        if (!EntLink)
                        {
                                MessageBox.Show("还未与PLC建立联接!");
                                return;
                        }
                        bool rd = false;
                        short re = 0;
            int var1 = cmbBitMry.SelectedIndex + 1;
            EntFxPlc.PlcClient.PlcMemory mry = (EntFxPlc.PlcClient.PlcMemory)var1;
                       
                        re = PLC.Bit_Test(Handle1, mry, Convert.ToUInt16(txtBitAdd.Text),  ref rd);
                       
                        txtBitTest.Text = rd.ToString();
                        txtReBit.Text = re.ToString();
                }
               
               
               
               
               
                public void butBitSet_Click(System.Object sender, System.EventArgs e)
                {
                        if (!EntLink)
                        {
                                MessageBox.Show("还未与PLC建立联接!");
                                return;
                        }
                        short re = 0;
            int var1 = cmbBitMry.SelectedIndex + 1;
            EntFxPlc.PlcClient.PlcMemory mry = (EntFxPlc.PlcClient.PlcMemory)var1;
                       
                        re = PLC.Bit_Set(Handle1, mry, Convert.ToUInt16(txtBitAdd.Text));
                       
                        txtReBit.Text = re.ToString();
                }
               
               
                public void butBitRst_Click(System.Object sender, System.EventArgs e)
                {
                        if (!EntLink)
                        {
                                MessageBox.Show("还未与PLC建立联接!");
                                return;
                        }
                        short re = 0;
            int var1 = cmbBitMry.SelectedIndex + 1;
            EntFxPlc.PlcClient.PlcMemory mry = (EntFxPlc.PlcClient.PlcMemory)var1;
                       
                        re = PLC.Bit_Reset(Handle1, mry, Convert.ToUInt16(txtBitAdd.Text));
                       
                        txtReBit.Text = re.ToString();
                }
               
               
                public void butReadString_Click(System.Object sender, System.EventArgs e)
                {
                        if (!EntLink)
                        {
                                MessageBox.Show("还未与PLC建立联接!");
                                return;
                        }
                        string re = "";
                        re = PLC.CmdReadString(Handle1, EntFxPlc.PlcClient.PlcMemory.DR, Convert.ToUInt16(txtBuffAdd.Text), Convert.ToUInt16(txtBuffSize.Text));
                        txtReadString.Text = re;
                }
               
                public void butWriteString_Click(System.Object sender, System.EventArgs e)
                {
                        if (!EntLink)
                        {
                                MessageBox.Show("还未与PLC建立联接!");
                                return;
                        }
                        short re = 0;
                        re = PLC.CmdWriteString(Handle1, EntFxPlc.PlcClient.PlcMemory.DR, Convert.ToUInt16(txtBuffAdd.Text), Convert.ToUInt16(txtBuffSize.Text), txtWriteString.Text);
                        txtReWriteString.Text = re.ToString();
                }
               
               
               
        }
       
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表