在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → 运动控制IO显示(C#源码)

运动控制IO显示(C#源码)

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.58M
  • 下载次数:76
  • 浏览次数:880
  • 发布时间:2020-04-03
  • 实例类别:C#语言基础
  • 发 布 人:路明7519888
  • 文件格式:.rar
  • 所需积分:4
 相关标签: 运动控制 运动 IO 显示 控制

实例介绍

【实例简介】

【实例截图】

from clipboard

【核心代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using csLTDMC;
using System.IO;

namespace IO监控
{
    public partial class Form1 : Form
    {

        private string IniFilePath;
        private bool datechange = false;
        private bool aaaa = false;


        [DllImport("kernel32.dll")]

        private static extern long WritePrivateProfileString(string section, string key, string value, string filepath);

        [DllImport("kernel32.dll")]

        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder returnvalue, int buffersize, string filepath);


        private void GetValue(string section, string key, out string value)

        {

            StringBuilder stringBuilder = new StringBuilder();

            GetPrivateProfileString(section, key, "", stringBuilder, 1024, IniFilePath);

            value = stringBuilder.ToString();


        }

        private ushort _CardID = 0;
        private ushort _CANStatus = 0;
        private ushort _CANNum = 0;

        public Form1()
        {
            InitializeComponent();
            //DateInit(date_IOIN, 70);
            //DateInit(date_IOOUT, 70);
            aaaa = true;



        }

        /// <summary>
        /// 表格控件初始化后
        /// </summary>
        /// <param name="date">表格控件的名称</param>
        /// <param name="num">表格控件初始化行数</param>
        public void DateInit(DataGridView date, int num)
        {
            int Num = num;
            date.RowTemplate.Height = 34;                 //设置行高
            date.Rows.Clear();                            //清除掉控件表格里面的数据和行数
            for (int i = 0; i < Num; i  )
            {
                string number = Convert.ToString(i);
                date.Rows.Add(number);
            }
            date.AllowUserToAddRows = false;//最后一行隐藏
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DateIoSave("SectionIN", date_IOIN, 70);
            DateIoSave("SectionOUT", date_IOOUT, 70);
        }

        private void DateIoSave(string section, DataGridView date, int num)
        {
            IniFilePath = Application.StartupPath   "\\DateIoSet.ini";
            string Section = section;
            int Num = num;
            try
            {
                for (int i = 0; i < Num; i  )
                {
                    //string numbera = "ROW[2]"   i;
                    //string numberb = "ROW[3]"   i;
                    string numbera = "DateIoSet"   "2"   i;
                    string numberb = "DateIoSet"   "3"   i;

                    WritePrivateProfileString(Section, numbera, Convert.ToString(date.Rows[i].Cells[2].Value), IniFilePath);
                    WritePrivateProfileString(Section, numberb, Convert.ToString(date.Rows[i].Cells[3].Value), IniFilePath);
                }
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
                MessageBox.Show("1");
            }
        }

        private void DateIOINShow(string section, DataGridView date)
        {

            IniFilePath = Application.StartupPath   "\\DateIoSet.ini";
            string Section = section;

            string outString;
            try
            {
                for (int i = 0; i < 70; i  )
                {
                    string numbera = "ROW[2]"   i;
                    string numberb = "ROW[3]"   i;

                    GetValue(Section, numbera, out outString);
                    date.Rows[i].Cells[2].Value = outString;
                    GetValue(Section, numberb, out outString);
                    date.Rows[i].Cells[3].Value = outString;
                }
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
                MessageBox.Show("2");
            }
        }

        private void DateIOOUTShow(string section, DataGridView date)
        {

            IniFilePath = Application.StartupPath   "\\DateIoSet.ini";
            string Section = section;

            string outString;
            try
            {
                for (int i = 0; i < 70; i  )
                {
                    string numbera = "ROW[3]"   i;
                    string numberb = "ROW[4]"   i;

                    GetValue(Section, numbera, out outString);
                    date.Rows[i].Cells[3].Value = outString;
                    GetValue(Section, numberb, out outString);
                    date.Rows[i].Cells[4].Value = outString;
                }
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
                MessageBox.Show("3");
            }
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            DateIOINShow("SectionIN", date_IOIN);
            DateIOOUTShow("SectionOUT", date_IOOUT);
            date_IOIN.ReadOnly = true;
            date_IOOUT.ReadOnly = true;
            date_IOOUT.Columns["OutImage"].ReadOnly = true;
            btn_datechange.Text = "数据修改关闭";

            short num = LTDMC.dmc_board_init();//获取卡数量
            if (num <= 0 || num > 8)
            {
                MessageBox.Show("初始卡失败!", "出错");
            }
            ushort _num = 0;
            ushort[] cardids = new ushort[8];
            uint[] cardtypes = new uint[8];
            short res = LTDMC.dmc_get_CardInfList(ref _num, cardtypes, cardids);

            LTDMC.dmc_read_inbit(0, 1);

            if (res != 0)
            {
                MessageBox.Show("获取卡信息失败!");
            }
            _CardID = cardids[0];


            DateIOState(date_IOIN);
            timer1.Enabled = true;
        }


        private void btn_datechange_Click(object sender, EventArgs e)
        {
            if (datechange == true)
            {
                date_IOIN.ReadOnly = false;
                date_IOOUT.ReadOnly = false;
                datechange = false;
                btn_datechange.Text = "数据修改打开";
            }
            else
            {
                date_IOIN.ReadOnly = true;
                date_IOOUT.ReadOnly = true;
                datechange = true;
                btn_datechange.Text = "数据修改关闭";
            }
        }


        private void DateIOState(DataGridView date)
        {
            //DataGridViewButtonColumn btn = new DataGridViewButtonColumn();
            //btn.Name = "btnModify";
            //btn.HeaderText = "保存";
            //btn.DefaultCellStyle.NullValue = "保存";
            //date.Columns.Add(btn);
        }


        private void DateIIIIIII()
        {
            while (aaaa)
                if (radioButton1.Checked == true)
                {

                    DateInit(date_IOIN, 16);
                    DateInit(date_IOOUT, 16);
                    aaaa = false;
                }
                else if (radioButton2.Checked == true)
                {
                    DateInit(date_IOIN, 32);
                    DateInit(date_IOOUT, 32);
                    aaaa = false;
                }
                else if (radioButton3.Checked == true)
                {
                    DateInit(date_IOIN, 20);
                    DateInit(date_IOOUT, 20);
                    aaaa = false;
                }
                else if (radioButton4.Checked == true)
                {
                    DateInit(date_IOIN, 50);
                    DateInit(date_IOOUT, 50);
                    aaaa = false;
                }
                else if (radioButton5.Checked == true)
                {
                    DateInit(date_IOIN, 10);
                    DateInit(date_IOOUT, 10);
                    aaaa = false;
                }
                else if (radioButton6.Checked == true)
                {
                    DateInit(date_IOIN, 16);
                    DateInit(date_IOOUT, 16);
                    aaaa = false;
                }
                else
                {
                    aaaa = false;
                }


        }


        private void date_IOIN_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (date_IOIN.Columns[e.ColumnIndex].Name == "btnModify")
            {

                MessageBox.Show("成功!");
            }

            //date_IOIN.Rows[e.RowIndex].Cells[1].Value = 10;

            //date_IOIN.Rows[e.RowIndex].Cells[1].Style.BackColor = Color.Red;
        }

        private void IOshow()
        {

            if (radioButton1.Checked == true)
            {
                DateCardIN(0, 16, date_IOIN);
            }
            else if (radioButton2.Checked == true)
            {
                DateCardIN(1, 32, date_IOIN);
            }


            for (ushort i = 0; i < 10; i  )
            {
                if (LTDMC.dmc_read_outbit(0, i) == 0)
                {
                    string IniFilePath = Application.StartupPath   "//LampON.ico";
                    date_IOOUT["OutImage", i].Value = new Bitmap(IniFilePath);
                    date_IOOUT.Rows[i].Cells[1].Value = "关闭";
                }
                else
                {
                    string IniFilePath = Application.StartupPath   "//LampOFF.ico";
                    date_IOOUT["OutImage", i].Value = new Bitmap(IniFilePath);
                    date_IOOUT.Rows[i].Cells[1].Value = "打开";
                }
            }

        }

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

        private bool b = false;
        private void date_IOOUT_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

            int Rindex = e.RowIndex;
            if (Rindex > -1)
            {
                if (b == false)
                {
                    IOoutSET(Rindex, 0);
                    date_IOOUT.Rows[e.RowIndex].Cells[1].Value = "关闭";
                    b = true;
                }
                else
                {
                    IOoutSET(Rindex, 1);
                    date_IOOUT.Rows[e.RowIndex].Cells[1].Value = "打开";
                    b = false;
                }
            }


            //int CIndex = e.ColumnIndex;
            //int Rindex = e.RowIndex;
            //switch(Rindex)
            //{
            //    case 0:
            //        LTDMC.dmc_write_outbit(0, 0, 0);
            //        break;
            //    case 1:
            //        LTDMC.dmc_write_outbit(0, 1, 0);
            //        break;
            //    case 2:
            //        LTDMC.dmc_write_outbit(0, 2, 0);
            //        break;
            //}



        }

        private void IOoutSET(int num, ushort state)
        {
            ushort mynum = Convert.ToUInt16(num);
            LTDMC.dmc_write_outbit(0, mynum, state);
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            aaaa = true;
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            aaaa = true;
        }



        #region 

        /// <summary>
        /// IO输入IN界面显示
        /// </summary>
        /// <param name="cardNum">控制卡卡号</param>
        /// <param name="InNum">输入IO数量</param>
        /// <param name="date">显示数据控件名称</param>
        private void DateCardIN(ushort cardNum, ushort InNum, DataGridView date)
        {
            for (ushort i = 0; i < InNum; i  )
            {
                if (LTDMC.dmc_read_inbit(cardNum, i) == 0)
                {
                    string IniFilePath = Application.StartupPath   "//LampON.ico";
                    date["Image", i].Value = new Bitmap(IniFilePath);
                }
                else
                {
                    string IniFilePath = Application.StartupPath   "//LampOFF.ico";
                    date["Image", i].Value = new Bitmap(IniFilePath);
                }
            }
        }

        /// <summary>
        /// O输入OUT界面显示
        /// </summary>
        /// <param name="cardNum">控制卡号</param>
        /// <param name="OutNum">输出的OUT数量</param>
        /// <param name="date">显示数据控件名称</param>
        private void DateCardOUT(ushort cardNum, ushort OutNum, DataGridView date)
        {
            for (ushort i = 0; i < OutNum; i  )
            {
                if (LTDMC.dmc_read_outbit(cardNum, i) == 0)
                {
                    string IniFilePath = Application.StartupPath   "//LampON.ico";
                    date["Image", i].Value = new Bitmap(IniFilePath);
                }
                else
                {
                    string IniFilePath = Application.StartupPath   "//LampOFF.ico";
                    date["Image", i].Value = new Bitmap(IniFilePath);
                }
            }
        }

        /// <summary>
        /// CANopen模块的IN
        /// </summary>
        /// <param name="cardNum">控制卡号</param>
        /// <param name="NodeID">模块的节点号</param>
        /// <param name="InNum">模块的输入IN数</param>
        /// <param name="date">显示的数据名称</param>
        private void DateCANIN(ushort cardNum, ushort NodeID, ushort InNum, DataGridView date)
        {
            for (ushort i = 0; i < InNum; i  )
            {
                ushort CANIN = 0;
                LTDMC.nmc_read_inbit(cardNum, NodeID, i, ref CANIN);
                if (CANIN == 0)
                {
                    string IniFilePath = Application.StartupPath   "//LampON.ico";
                    date["Image", i].Value = new Bitmap(IniFilePath);
                }
                else
                {
                    string IniFilePath = Application.StartupPath   "//LampOFF.ico";
                    date["Image", i].Value = new Bitmap(IniFilePath);
                }
            }
        }
        /// <summary>
        /// CANopen模块OUT的显示
        /// </summary>
        /// <param name="cardNum">控制卡号</param>
        /// <param name="NodeID">模块的节点号</param>
        /// <param name="InNum">模块自带IO数</param>
        /// <param name="date">IO显示数据名称</param>
        private void DateCANOUT(ushort cardNum, ushort NodeID, ushort InNum, DataGridView date)
        {
            for (ushort i = 0; i < InNum; i  )
            {
                ushort CANIN = 0;
                LTDMC.nmc_read_outbit(cardNum, NodeID, i, ref CANIN);
                if (CANIN == 0)
                {
                    string IniFilePath = Application.StartupPath   "//LampON.ico";
                    date["Image", i].Value = new Bitmap(IniFilePath);
                }
                else
                {
                    string IniFilePath = Application.StartupPath   "//LampOFF.ico";
                    date["Image", i].Value = new Bitmap(IniFilePath);
                }
            }
        }

        /// <summary>
        /// 总线IO模块
        /// </summary>
        /// <param name="cardNum">控制卡号</param>
        /// <param name="startNum">开始IO数</param>
        /// <param name="InNum">IO模块的IN数</param>
        /// <param name="date">IO显示数据名称</param>
        private void DateCATIN(ushort cardNum, ushort startNum, ushort InNum, DataGridView date)
        {
            for (ushort i = startNum; i < InNum   startNum; i  )
            {
                if (LTDMC.dmc_read_inbit(cardNum, i) == 0)
                {
                    string IniFilePath = Application.StartupPath   "//LampON.ico";
                    date["Image", i].Value = new Bitmap(IniFilePath);
                }
                else
                {
                    string IniFilePath = Application.StartupPath   "//LampOFF.ico";
                    date["Image", i].Value = new Bitmap(IniFilePath);
                }
            }
        }

        /// <summary>
        /// 总线IO模块
        /// </summary>
        /// <param name="cardNum">控制卡号</param>
        /// <param name="startNum">开始IO数</param>
        /// <param name="OUTNum">IO模块的out数</param>
        /// <param name="date">IO显示数据名称</param>
        private void DateCATOUT(ushort cardNum, ushort startNum, ushort OUTNum, DataGridView date)
        {
            for (ushort i = startNum; i < OUTNum   startNum; i  )
            {
                if (LTDMC.dmc_read_outbit(cardNum, i) == 0)
                {
                    string IniFilePath = Application.StartupPath   "//LampON.ico";
                    date["Image", i].Value = new Bitmap(IniFilePath);
                }
                else
                {
                    string IniFilePath = Application.StartupPath   "//LampOFF.ico";
                    date["Image", i].Value = new Bitmap(IniFilePath);
                }
            }
        }





        #endregion

        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {
            aaaa = true;
        }

        private void radioButton4_CheckedChanged(object sender, EventArgs e)
        {
            aaaa = true;
        }

        private void radioButton5_CheckedChanged(object sender, EventArgs e)
        {
            aaaa = true;
        }

        private void radioButton6_CheckedChanged(object sender, EventArgs e)
        {
            aaaa = true;
        }
    }
}


实例下载地址

运动控制IO显示(C#源码)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

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

查看所有0条评论>>

小贴士

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

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

关于好例子网

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

;
报警