| #region << 版 本 注 释 >> | 
| /*---------------------------------------------------------------- | 
|  * 命名空间:WIDESEAWCS_Communicator | 
|  * 创建者:胡童庆 | 
|  * 创建时间:2024/8/2 16:13:36 | 
|  * 版本:V1.0.0 | 
|  * 描述:西门子PLC的数据类型 | 
|  * | 
|  * ---------------------------------------------------------------- | 
|  * 修改人: | 
|  * 修改时间: | 
|  * 版本:V1.0.1 | 
|  * 修改说明: | 
|  *  | 
|  *----------------------------------------------------------------*/ | 
| #endregion << 版 本 注 释 >> | 
|   | 
| using System; | 
| using System.Collections.Generic; | 
| using System.Linq; | 
| using System.Net; | 
| using System.Text; | 
| using System.Threading.Tasks; | 
|   | 
| namespace WIDESEAWCS_Communicator | 
| { | 
|     /// <summary> | 
|     /// 西门子PLC的数据类型 | 
|     /// </summary> | 
|     public class SiemensDBDataType | 
|     { | 
|         #region <Const> | 
|         /// <summary> | 
|         /// 32位有符号整型 | 
|         /// </summary> | 
|         public const string DataType_DInt = "dint"; | 
|   | 
|         /// <summary> | 
|         /// 布尔 | 
|         /// </summary> | 
|         public const string DataType_Bool = "bool"; | 
|   | 
|         /// <summary> | 
|         /// 字符串 | 
|         /// </summary> | 
|         public const string DataType_String = "string"; | 
|   | 
|         /// <summary> | 
|         /// 16位有符号整型 | 
|         /// </summary> | 
|         public const string DataType_Int = "int"; | 
|   | 
|         /// <summary> | 
|         /// 字节 | 
|         /// </summary> | 
|         public const string DataType_Byte = "byte"; | 
|   | 
|         /// <summary> | 
|         /// 32位无符号整型 | 
|         /// </summary> | 
|         public const string DataType_DW = "dw"; | 
|   | 
|         /// <summary> | 
|         /// 16位无符号整型 | 
|         /// </summary> | 
|         public const string DataType_W = "w"; | 
|   | 
|         /// <summary> | 
|         /// 浮点型 | 
|         /// </summary> | 
|         public const string DataType_Float = "float"; | 
|   | 
|         /// <summary> | 
|         /// 字符 | 
|         /// </summary> | 
|         public const string DataType_Char = "char"; | 
|         #endregion <Const> | 
|   | 
|         /// <summary> | 
|         /// 根据西门子PLC的数据类型获取对应C#的类型编号枚举 | 
|         /// </summary> | 
|         /// <param name="dataType">西门子PLC的数据类型</param> | 
|         /// <returns>返回对应C#的类型编号枚举</returns> | 
|         /// <exception cref="CommunicationException"></exception> | 
|         public static TypeCode GetTypeCode(string dataType) | 
|         { | 
|             return dataType.ToLower() switch | 
|             { | 
|                 DataType_DInt => TypeCode.Int32, | 
|                 DataType_DW => TypeCode.UInt32, | 
|                 DataType_Int => TypeCode.Int16, | 
|                 DataType_W => TypeCode.UInt16, | 
|                 DataType_Float => TypeCode.Single, | 
|                 DataType_Bool => TypeCode.Boolean, | 
|                 DataType_Byte => TypeCode.Byte, | 
|                 DataType_String => TypeCode.String, | 
|                 DataType_Char => TypeCode.Char, | 
|                 _ => throw new CommunicationException($"数据类型错误:【{dataType}】", CommunicationErrorType.TypeError), | 
|             }; | 
|         } | 
|     } | 
| } |