恒石成品库WCS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
3.3 KiB

using System;
using System.Reflection;
using System.Collections;
using System.Configuration;
using ICommLayer;
using System.Data;
using DBFactory;
namespace CommLayerFactory
{
/// <summary>
/// 通讯方式的类工厂
/// Creator:Richard.liu
/// </summary>
public sealed class CommModeCreate
{
private static string path = "";
private static Model.MDevice devinfo;//20100127
CommModeCreate()
{
}
//Assembly.Load (AssemblyName) 在给定程序集的 AssemblyName 的情况下,加载程序集,return Assembly
// Assembly.CreateInstance(className)
// 从此程序集中查找IStack类型,然后使用系统激活器创建它的实例。
/// <summary>
/// 根据设备索引创建获取设备状态的派生类
/// </summary>
/// <param name="Devices"></param>
/// <returns></returns>
public static IGetDeviceState CreateGetDeviceState(int Devices)
{
try
{
path = GetPath(Devices);
string classname = path + ".CGetDeviceState";
return (IGetDeviceState)Assembly.Load(path).CreateInstance(classname);
}
catch (Exception ex)
{
throw (ex);
}
}
///// <summary>
///// 在串口读取数据
///// </summary>
///// <param name="Devices"></param>
///// <returns></returns>
//public static IGetSerialData CreateGetSerialData(int Devices)
//{
// try
// {
// path = GetPath(Devices);
// string classname = path + ".CGetSerialData";
// return (IGetSerialData)Assembly.Load(path).CreateInstance(classname);
// }
// catch (Exception ex)
// {
// throw (ex);
// }
//}
/// <summary>
/// 根据设备索引创建发送命令的派生类
/// </summary>
/// <param name="Devices"></param>
/// <returns></returns>
public static ISendDeviceOrder CreateSendDeviceOrder(int Devices)
{
try
{
path = GetPath(Devices);
string classname = path + ".CSendDeviceOrder";
return (ISendDeviceOrder)Assembly.Load(path).CreateInstance(classname);
}
catch (Exception ex)
{
throw (ex);
}
}
/// <summary>
/// 根据设备索引获得通讯接口的派生类
/// </summary>
/// <param name="Devices"></param>
/// <returns></returns>
static string GetPath(int Devices)
{
try
{
//20100127
devinfo = Model.CGetInfo.GetDeviceInfo(Devices);
//DataSet ds = dbo.ExceSQL("select F_CommType from T_Base_Device where (F_CommType IS NOT NULL) AND F_DeviceIndex=" + Devices);
if (devinfo.CommType!=null)
{
//dbo.Close();
return devinfo.CommType;//ds.Tables[0].DefaultView[0]["F_CommType"].ToString();
}
else
{
//dbo.Close();
return null;
}
}
catch(Exception ex)
{
throw ex;
}
}
}
}