WPF上位机 - 使用转换器实现TIA Wincc中的文本列表功能

TIA wincc中可以根据变量的值,显示出定义的文本。

在WPF中可以通过转换器实现。

使用哈希表存储变量和文本,根据变量值返回对应的文本显示在View 中


using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;

namespace SiemensAxisControl.Model.Converter
{
    internal class StringToStatusConverter : IValueConverter
    {
        private static readonly Dictionary<string, string> StatusDic = new Dictionary<string, string>()
        {
            {"7000", "STATUS_NO_CALL" },
            {"7001", "STATUS_FB_FIRST_CALL" },
            {"7002", "STATUS_SUBSEQUENT_CALL" },
            {"8001", "ERR_INVALID_BASIC_MOTION_CMD" },
            {"8002", "ERR_INVALID_EXTENDED_CMD" },
            {"8200", "ERR_INVALID_CAM" },
            {"8201", "ERR_INVALID_JOG_MODE" },
            {"8202", "ERR_INVALID_HOMING_EXTENDED_MODE" },
            {"8203", "ERR_TORQUE_LIMITING_NOT_ALLOWED" },
            {"8204", "ERR_INVALID_JOG_DIR" },
            {"8205", "ERR_INVALID_POS_RELATIVE_DIR" },
            {"8206", "ERR_INVALID_POS_SUPERIMPOSED_DIR" },
            {"8207", "ERR_HOMING_MODE_NOT_ALLOWED" },
            {"8208", "ERR_MODULO_NOT_ALLOWED" },
            {"8209", "ERR_INVALID_TORQUE_LIMIT" },
            {"8210", "ERR_INVALID_VELOCITY" },
            {"8600", "ERR_MC_POWER" },
            {"8601", "ERR_MC_RESET" },
            {"8602", "ERR_MC_HOME" },
            {"8603", "ERR_MC_TORQUELIMITING" },
            {"8604", "ERR_MC_HALT" },
            {"8605", "ERR_MC_MOVEJOG" },
            {"8606", "ERR_MC_MOVEVELOCITY" },
            {"8607", "ERR_MC_MOVERELATIVE" },
            {"8608", "ERR_MC_MOVEABSOLUTE" },
            {"8609", "ERR_MC_MOVESUPERIMPOSED" },
            {"860A", "ERR_MC_GEARIN" },
            {"860B", "ERR_MC_PHASINGABSOLUTE"},
            {"860C", "ERR_MC_PHASINGRELATIVE" },
            {"860D", "ERR_MC_CAMIN" },
            {"860E", "ERR_MC_GEARINPOS" },
            {"860F", "ERR_MC_SYNCHRONIZEDMOTIONSIMULATION" },
            {"8700", "ERR_UNDEFINED_FB_STATE" },
            {"8701", "ERR_UNDEFINED_RESET_STATE" },
            {"8702", "ERR_UNDEFINED_BASIC_MOTION_STATE" },
            {"8703", "ERR_UNDEFINED_TORQUE_LIMITING_STATE" },
            {"8704", "ERR_UNDEFINED_INCREMENTAL_JOG_STATE" },
            {"8705", "ERR_UNDEFINED_INCREMENTAL_JOG_SUBSTATE" },
            {"8706", "ERR_UNDEFINED_EXTENDED_HOMING_STATE" },
            {"8707", "ERR_UNDEFINED_EXTENDED_HOMING_SUBSTATE" },
            {"8708", "ERR_UNDEFINED_SUPERIMPOSED_MOTION_STATE" },
            {"8709", "ERR_UNDEFINED_MOTION_SIMULATION_STATE" },
            {"8710", "ERR_UNDEFINED_MAIN_SELECTION_STATE" }
        };
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string Status = "Last Command Ok";
            // 检查传入的值是否在指定的范围内
            if (value is string key)
            {

                if (StatusDic.ContainsKey(key))
                {
                    Status = StatusDic[key];
                }
            }

            return Status;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}
posted @ 2024-05-03 19:34  4LPH4_αX  阅读(30)  评论(0编辑  收藏  举报