示例#1
0
        public override int ReadWordValue(ComLink.WordArea wa, int addrWord, ref int value)
        {
            string str = string.Empty;
            int    ret = this.ReadWordValue(wa, addrWord, ref str);

            if (ret == 0)
            {
                value = (int)Convert.ToInt16(str, 16);
            }
            return(ret);
        }
示例#2
0
        public override int ReadDoubleWord(ComLink.WordArea wa, int addrWord, ref int rtnvalue)
        {
            string strvalue = string.Empty;
            int    ret      = this.ReadMultiWordValue(wa, addrWord, 2, ref strvalue);

            if (ret == 0)
            {
                StringBuilder sb = new StringBuilder(strvalue.Substring(4, 4));
                sb.Append(strvalue.Substring(0, 4));
                rtnvalue = Convert.ToInt32(sb.ToString(), 16);
            }
            return(ret);
        }
示例#3
0
        public override int SetWordValue(ComLink.WordArea wa, int addrWord, int value)
        {
            string strValue = Convert.ToString(value, 16);

            if (strValue.Length > 4)
            {
                strValue = strValue.Substring(strValue.Length - 4, 4);
            }
            else if (strValue.Length < 4)
            {
                string strTemp = "0000";
                strTemp  = strTemp.Substring(0, 4 - strValue.Length);
                strValue = strTemp + strValue;
            }
            return(this.SetWordValue(wa, addrWord, strValue));
        }
示例#4
0
        public override int SetDoubleWordValue(ComLink.WordArea wa, int addrWord, int value)
        {
            string        strValue = Convert.ToString(value, 16);
            StringBuilder sb       = new StringBuilder();
            string        str      = "0000";

            if (strValue.Length <= 4)
            {
                sb.Append(str.Substring(0, 4 - strValue.Length));
                sb.Append(strValue);
                sb.Append(str);
            }
            else
            {
                sb.Append(strValue.Substring(strValue.Length - 4, 4));
                sb.Append(str.Substring(0, 8 - strValue.Length));
                sb.Append(strValue.Substring(0, strValue.Length - 4));
            }
            return(this.SetMultiWordValue(wa, addrWord, 2, sb.ToString()));
        }
示例#5
0
文件: ComLink.cs 项目: Bruce-le3/UI_
 public abstract int ReadWordValue(ComLink.WordArea wa, int addrWord, ref int value);
示例#6
0
文件: ComLink.cs 项目: Bruce-le3/UI_
 public abstract int SetDoubleWordValue(ComLink.WordArea wa, int addrWord, int value);
示例#7
0
文件: ComLink.cs 项目: Bruce-le3/UI_
 public abstract int SetWordValue(ComLink.WordArea wa, int addrWord, string strValue);
示例#8
0
文件: ComLink.cs 项目: Bruce-le3/UI_
 public abstract int ReadMultiWordValue(ComLink.WordArea wa, int addrWord, int length, ref string strValue);
示例#9
0
文件: ComLink.cs 项目: Bruce-le3/UI_
 public abstract int SetMultiWordValue(ComLink.WordArea wa, int addrWord, int length, string strValue);
示例#10
0
文件: ComLink.cs 项目: Bruce-le3/UI_
 public abstract int ReadDoubleWord(ComLink.WordArea wa, int addrWord, ref int value);
示例#11
0
        public override int ReadMultiWordValue(ComLink.WordArea wa, int addrWord, int length, ref string strValue)
        {
            int result;

            if (wa >= (ComLink.WordArea) 10)
            {
                result = 1;
            }
            else if (length > 100)
            {
                result = 1;
            }
            else
            {
                string strMemory;
                switch (wa)
                {
                case ComLink.WordArea.CIO:
                    strMemory = "B0";
                    break;

                case ComLink.WordArea.WR:
                    strMemory = "B1";
                    break;

                case ComLink.WordArea.HR:
                    strMemory = "B2";
                    break;

                case ComLink.WordArea.AR:
                    strMemory = "B3";
                    break;

                case ComLink.WordArea.TM:
                case ComLink.WordArea.CNT:
                    strMemory = "89";
                    break;

                case ComLink.WordArea.DM:
                    strMemory = "82";
                    break;

                default:
                    result = 1;
                    return(result);
                }
                StringBuilder strCommand = new StringBuilder("@");
                strCommand.Append(this._strUnitNo);
                strCommand.Append("FA00000000001");
                strCommand.Append("01");
                strCommand.Append(strMemory);
                string strWord = Convert.ToString(addrWord, 16);
                if (strWord.Length < 4)
                {
                    string strTemp = "0000";
                    strTemp = strTemp.Substring(0, 4 - strWord.Length);
                    strWord = strTemp + strWord;
                }
                strCommand.Append(strWord);
                strCommand.Append("00");
                string strlength = Convert.ToString(length, 16);
                if (strlength.Length < 4)
                {
                    string strTemp = "0000";
                    strTemp   = strTemp.Substring(0, 4 - strlength.Length);
                    strlength = strTemp + strlength;
                }
                strCommand.Append(strlength);
                string strFcs = this.GetFcs(strCommand.ToString());
                strCommand.Append(strFcs);
                strCommand.Append("*");
                strCommand.Append('\r');
                string strRead = null;
                try
                {
                    lock (this._port)
                    {
                        this._port.Write(strCommand.ToString());
                        strRead = this._port.ReadTo(this._strReadTo);
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                if (strRead.Length > 28 && strRead.Substring(19, 4).Equals("0000"))
                {
                    strValue = strRead.Substring(23, 4 * length);
                    result   = 0;
                }
                else
                {
                    result = 1;
                }
            }
            return(result);
        }
示例#12
0
        public override int SetWordValue(ComLink.WordArea wa, int addrWord, string strValue)
        {
            int result;

            if (wa >= (ComLink.WordArea) 10)
            {
                result = 1;
            }
            else
            {
                string strMemory = null;
                switch (wa)
                {
                case ComLink.WordArea.CIO:
                    strMemory = "B0";
                    break;

                case ComLink.WordArea.WR:
                    strMemory = "B1";
                    break;

                case ComLink.WordArea.HR:
                    strMemory = "B2";
                    break;

                case ComLink.WordArea.AR:
                    strMemory = "B3";
                    break;

                case ComLink.WordArea.TM:
                case ComLink.WordArea.CNT:
                    strMemory = "89";
                    break;

                case ComLink.WordArea.DM:
                    strMemory = "82";
                    break;
                }
                StringBuilder strCommand = new StringBuilder("@");
                strCommand.Append(this._strUnitNo);
                strCommand.Append("FA10000000001");
                strCommand.Append("02");
                strCommand.Append(strMemory);
                string strWord = Convert.ToString(addrWord, 16);
                if (strWord.Length < 4)
                {
                    string strTemp = "0000";
                    strTemp = strTemp.Substring(0, 4 - strWord.Length);
                    strWord = strTemp + strWord;
                }
                strCommand.Append(strWord);
                strCommand.Append("000001");
                if (strValue.Length > 4)
                {
                    strValue = strValue.Substring(strValue.Length - 4, 4);
                }
                else if (strValue.Length < 4)
                {
                    string strTemp = "0000";
                    strTemp  = strTemp.Substring(0, 4 - strValue.Length);
                    strValue = strTemp + strValue;
                }
                strCommand.Append(strValue);
                string strFcs = this.GetFcs(strCommand.ToString());
                strCommand.Append(strFcs);
                strCommand.Append("*");
                strCommand.Append('\r');
                string strRead = null;
                try
                {
                    lock (this._port)
                    {
                        DateTime dt = DateTime.Now;
                        this._port.Write(strCommand.ToString());
                        double elapse = (DateTime.Now - dt).TotalMilliseconds;
                        dt      = DateTime.Now;
                        strRead = this._port.ReadTo(this._strReadTo);
                        elapse  = (DateTime.Now - dt).TotalMilliseconds;
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                if (strRead.Length > 24 && strRead.Substring(19, 4).Equals("0000"))
                {
                    result = 0;
                }
                else
                {
                    result = 1;
                }
            }
            return(result);
        }