using System ;
using System.Collections.Generic ;
using System.ComponentModel ;
using System.Data ;
using System.Drawing ;
using System.Linq ;
using System.Text ;
using System.Windows.Forms ;
using System.Net ;
using DotNetSAPI ;
using System.ServiceModel ;
using System.ServiceModel.Channels ;
using System.Runtime.Serialization ;
using CommonLib ;
namespace wcfControlMonitorClient
{
public partial class FrmClient : Form , WcfControlMonitor . IControlMonitorCallback
{
//protected override CreateParams CreateParams
//{
// get
// {
// CreateParams cp = base.CreateParams;
// cp.ExStyle |= 0x02000000;//WS_CLIPCHILDREN 两个窗体叠加时,重叠部分不重绘
// return cp;
// }
//}
int timersum = 0 ; //20150103增加断网恢复
Model . MDevice devinfo ;
FrmDeviceStatus _d eviceStatus = new FrmDeviceStatus ( ) ;
FrmWorkstationStatus _ worstation = new FrmWorkstationStatus ( ) ;
StringBuilder sql = new StringBuilder ( ) ;
DBFactory . DBOperator dbo = CStaticClass . dbo ;
DBFactory . DBOperator dbo1 = new DBFactory . DBOperator ( ) ;
SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags . SVSFlagsAsync ;
public SpVoice Voice ; // = new SpVoice();
public Model . MDevice [ ] devlist ;
public int devsn = 0 ;
private static FrmClient _f ormInstance ;
public static FrmClient FormInstance
{
get
{
if ( _f ormInstance = = null )
{
_f ormInstance = new FrmClient ( ) ;
}
return _f ormInstance ;
}
set { _f ormInstance = value ; }
}
FrmTaskList Frmlist ;
public FrmClient ( )
{
CommonClassLib . CCarryConvert . WriteDarkCasket ( "Login" , "操作日志" , "FrmClient()" , "" , "" ) ;
InitializeComponent ( ) ;
try
{
//初始化管理和调度交互状态
Model . CGetInfo . AddIOControlStatus ( ) ;
Model . CGetInfo . AddDeviceKindInfo ( ) ;
Model . CGetInfo . AddDeviceInfo ( ) ;
Model . CGetInfo . AddDeviceErrors ( ) ;
devlist = Model . CGetInfo . DeviceInfo . Values . ToArray < Model . MDevice > ( ) ;
DataView dv0 = dbo . ExceSQL ( "SELECT distinct F_S7Connection,F_DBWGetLength FROM T_Base_Device WHERE (F_DeviceKindIndex = 28)" ) . Tables [ 0 ] . DefaultView ;
if ( dv0 . Count > 0 )
{
for ( int i = 0 ; i < dv0 . Count ; i + + )
{
if ( CStaticClass . MutiS7ConnReturns . ContainsKey ( dv0 [ i ] [ "F_S7Connection" ] . ToString ( ) ) = = false )
{
CStaticClass . MutiS7ConnReturns . Add ( dv0 [ i ] [ "F_S7Connection" ] . ToString ( ) , new int [ Convert . ToInt32 ( dv0 [ i ] [ "F_DBWGetLength" ] ) ] ) ;
}
}
}
CStaticClass . SystemName = CommonClassLib . AppSettings . GetValue ( "SystemName" ) ;
this . notifyIcon1 . Text = CStaticClass . SystemName ;
this . Text = CStaticClass . SystemName ;
OPCClient . CCommonOPCClient . Hostname = CommonClassLib . AppSettings . GetValue ( "HostName" ) ;
OPCClient . CCommonOPCClient . ProgID = CommonClassLib . AppSettings . GetValue ( "OPCProgID" ) ;
#region 客户端订阅初始化20120428
DataView dvx ;
DataView dv = dbo . ExceSQL ( "SELECT F_ReadSubscription, F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_S7Connection, F_SplitByte FROM T_Base_Device WHERE (F_ReadSubscription IS NOT NULL) AND (F_ReadSubscription =F_DeviceIndex) ORDER BY F_ReadSubscription" ) . Tables [ 0 ] . DefaultView ;
for ( int i = 0 ; i < dv . Count ; i + + )
{
dvx = dbo . ExceSQL ( string . Format ( "SELECT (MAX(F_DBW2Address) + F_DBWGetLength) AS maxdbw2 FROM T_Base_Device WHERE (F_ReadSubscription = '{0}') AND (F_DeviceKindIndex <> 33) GROUP BY F_DBWGetLength ORDER BY maxdbw2 DESC" , dv [ i ] [ "F_ReadSubscription" ] ) ) . Tables [ 0 ] . DefaultView ;
if ( dvx . Count > 0 )
{
if ( CStaticClass . MutiReadSubscriptionDeviceStateReturns . ContainsKey ( dv [ i ] [ "F_ReadSubscription" ] . ToString ( ) ) = = false )
{
CStaticClass . MutiReadSubscriptionDeviceStateReturns . Add ( dv [ i ] [ "F_ReadSubscription" ] . ToString ( ) , new int [ Convert . ToInt32 ( dvx [ 0 ] [ "maxdbw2" ] ) - Convert . ToInt32 ( dv [ i ] [ "F_DBW2Address" ] ) ] ) ;
}
}
}
dv = dbo . ExceSQL ( "SELECT F_ReadSubscription, F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_S7Connection, F_SplitByte FROM T_Base_Device WHERE (F_ReadSubscription IS NOT NULL) AND (F_DeviceKindIndex=33) ORDER BY F_ReadSubscription" ) . Tables [ 0 ] . DefaultView ;
for ( int i = 0 ; i < dv . Count ; i + + )
{
if ( CStaticClass . MutiReadSubscriptionDeviceSplitReturns . ContainsKey ( dv [ i ] [ "F_ReadSubscription" ] . ToString ( ) ) = = false )
{
CStaticClass . MutiReadSubscriptionDeviceSplitReturns . Add ( dv [ i ] [ "F_ReadSubscription" ] . ToString ( ) , new int [ Convert . ToInt32 ( dv [ i ] [ "F_DBWGetLength" ] ) ] ) ;
}
}
}
catch ( Exception ex )
{
CommonClassLib . CCarryConvert . WriteDarkCasket ( "Login" , "操作日志" , "FrmClient()-catch" , ex . StackTrace , ex . Message ) ;
throw ex ;
}
#endregion
#region WeifenLuo
FrmControlMonitor . FormInstance . Show ( this . dockPanel1 ) ;
FrmControlMonitor . FormInstance . DockTo ( this . dockPanel1 , DockStyle . Fill ) ;
FrmControlMonitor . FormInstance . AutoScroll = true ;
Frmlist = new FrmTaskList ( ) ;
Frmlist . Show ( this . dockPanel1 ) ;
Frmlist . DockTo ( this . dockPanel1 , DockStyle . Bottom ) ;
Frmlist . DockState = WeifenLuo . WinFormsUI . Docking . DockState . DockBottomAutoHide ;
//Frmlist.AutoHidePortion = 0.125;// (double)Frmlist.Height / (double)this.dockPanel1.Height;
Frmlist . CloseButton = false ;
//Added by DingXiaoxu on 20110104
FrmErrorMessage frmErrorMessage = new FrmErrorMessage ( ) ;
frmErrorMessage . Show ( this . dockPanel1 ) ;
frmErrorMessage . DockTo ( this . dockPanel1 , DockStyle . Bottom ) ;
frmErrorMessage . DockState = WeifenLuo . WinFormsUI . Docking . DockState . DockBottomAutoHide ;
//Frmlist.AutoHidePortion = 0.125;// (double)Frmlist.Height / (double)this.dockPanel1.Height;
frmErrorMessage . CloseButton = false ;
FrmHelp frmHelp = new FrmHelp ( ) ;
frmHelp . Show ( this . dockPanel1 ) ;
frmHelp . DockTo ( this . dockPanel1 , DockStyle . Bottom ) ;
frmHelp . DockState = WeifenLuo . WinFormsUI . Docking . DockState . DockBottomAutoHide ;
//Frmlist.AutoHidePortion = 0.125;// (double)Frmlist.Height / (double)this.dockPanel1.Height;
frmHelp . CloseButton = false ;
#endregion
}
/// <summary>
/// 客户端事件响应20120428
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void CCommon_UpdateDB ( object sender , CUpdateDBChangeEventArgs e )
{
if ( ! CStaticClass . client . IsDisposed ) //CStaticClass.WCFOK == true &&
{
string errtext = string . Empty ;
this . BeginInvoke ( new MethodInvoker ( delegate ( )
{ DealWithDeviceState ( out errtext , e . Deviceindex , e . SplitbyteValue , e . Devicestates ) ; } ) ) ;
}
}
/// <summary>
/// 客户端事件响应处理函数20120428
/// </summary>
/// <param name="errtext"></param>
/// <param name="deviceindex"></param>
/// <param name="splitbyteValue"></param>
/// <param name="devicestates"></param>
/// <returns></returns>
bool DealWithDeviceState ( out string errtext , int deviceindex , byte [ ] splitbyteValue , byte [ ] devicestates )
{ //deviceindex设备组代表的订阅,首先把设备组按照F_DBW2Address由小到大排序,拆分到具体每个设备
if ( ( splitbyteValue = = null ) & & ( devicestates = = null ) )
{ //20120420
errtext = OPCClient . CCommonOPCClient . OpcError ;
SendMessage ( string . Format ( "tsStatus@FrmClient.DealWithDeviceState时,订阅组:{0}发生异常,{1}!" , deviceindex , errtext ) ) ;
return false ;
}
errtext = string . Empty ; DataView dv = new DataView ( ) ; DataView dvsp = new DataView ( ) ; DataView dvbc = new DataView ( ) ;
int devicebegin = 0 ; int DBW2Addressbegin = 0 ; int SplitBytebegin = 0 ; string S7Connection = string . Empty ;
int SplitByteLength = 0 ;
int lanenumber = 0 ;
try
{
StringBuilder sql = new StringBuilder ( string . Format ( "SELECT F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_SplitByte,F_S7Connection,F_ManTaskReserve FROM T_Base_Device WHERE (F_DeviceKindIndex <>33) AND (F_ReadSubscription = '{0}') AND (F_DBW2Address IS NOT NULL) ORDER BY F_DBW2Address" , deviceindex ) ) ;
dv = dbo1 . ExceSQL ( sql . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
devicebegin = Convert . ToInt32 ( dv [ 0 ] [ "F_DeviceIndex" ] ) ;
DBW2Addressbegin = Convert . ToInt32 ( dv [ 0 ] [ "F_DBW2Address" ] ) ;
SplitBytebegin = Convert . ToInt32 ( dv [ 0 ] [ "F_SplitByte" ] ) ;
S7Connection = dv [ 0 ] [ "F_S7Connection" ] . ToString ( ) ;
sql = new StringBuilder ( string . Format ( "SELECT F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_SplitByte,F_S7Connection,F_ManTaskReserve FROM T_Base_Device WHERE (F_DeviceKindIndex =33) AND (F_ReadSubscription = '{0}') ORDER BY F_DBW2Address" , deviceindex ) ) ;
dvsp = dbo1 . ExceSQL ( sql . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvsp . Count > 0 )
{
SplitByteLength = Convert . ToInt32 ( dvsp [ 0 ] [ "F_DBWGetLength" ] ) ;
}
}
else
{
sql = new StringBuilder ( string . Format ( "SELECT F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_SplitByte,F_S7Connection,F_ManTaskReserve FROM T_Base_Device WHERE (F_DeviceIndex = '{0}') AND (F_DBW2Address IS NOT NULL) ORDER BY F_DBW2Address" , deviceindex ) ) ;
dv = dbo1 . ExceSQL ( sql . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
devicebegin = Convert . ToInt32 ( dv [ 0 ] [ "F_DeviceIndex" ] ) ;
DBW2Addressbegin = Convert . ToInt32 ( dv [ 0 ] [ "F_DBW2Address" ] ) ;
SplitBytebegin = Convert . ToInt32 ( dv [ 0 ] [ "F_SplitByte" ] ) ;
S7Connection = dv [ 0 ] [ "F_S7Connection" ] . ToString ( ) ;
sql = new StringBuilder ( string . Format ( "SELECT F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_SplitByte,F_S7Connection,F_ManTaskReserve FROM T_Base_Device WHERE (F_DeviceKindIndex =33) AND (F_ReadSubscription = '{0}') ORDER BY F_DBW2Address" , deviceindex ) ) ;
dv = dbo . ExceSQL ( sql . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
SplitByteLength = Convert . ToInt32 ( dv [ 0 ] [ "F_DBWGetLength" ] ) ;
}
}
else
{ //20120420
errtext = string . Format ( "FrmClient.DealWithDeviceState时,订阅组:{0}对应的设备索引不存在!" , deviceindex ) ;
SendMessage ( string . Format ( "tsStatus@FrmClient.DealWithDeviceState时,订阅组:{0}对应的设备索引不存在!" , deviceindex ) ) ;
return false ;
}
}
if ( splitbyteValue ! = null )
{
Array . Copy ( splitbyteValue , CStaticClass . MutiReadSubscriptionDeviceSplitReturns [ deviceindex . ToString ( ) ] , splitbyteValue . Length ) ;
dvsp = dbo1 . ExceSQL ( string . Format ( "SELECT F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_SplitByte FROM T_Base_Device WHERE (F_DeviceKindIndex <>31) AND(F_DeviceKindIndex <>33) AND (F_S7Connection = '{0}') AND (F_DBW2Address IS NOT NULL and F_SplitByte IS NOT NULL and F_SplitByte >={1} and F_SplitByte <{1}+{2}) ORDER BY F_DBW2Address" , S7Connection , SplitBytebegin , SplitByteLength ) ) . Tables [ 0 ] . DefaultView ;
for ( int i = 0 ; i < dvsp . Count ; i + + )
{
devinfo = Model . CGetInfo . GetDeviceInfo ( Convert . ToInt32 ( dvsp [ i ] [ "F_DeviceIndex" ] ) ) ;
int delta = Convert . ToInt32 ( dvsp [ i ] [ "F_SplitByte" ] ) - SplitBytebegin ;
if ( delta < 0 ) continue ;
devinfo . SplitByte_0 = ( splitbyteValue [ delta ] & 1 ) = = 1 ? 1 : 0 ;
devinfo . SplitByte_1 = ( splitbyteValue [ delta ] & 2 ) = = 2 ? 1 : 0 ;
devinfo . SplitByte_2 = ( splitbyteValue [ delta ] & 4 ) = = 4 ? 1 : 0 ;
devinfo . SplitByte_3 = ( splitbyteValue [ delta ] & 8 ) = = 8 ? 1 : 0 ;
devinfo . SplitByte_4 = ( splitbyteValue [ delta ] & 1 6 ) = = 1 6 ? 1 : 0 ;
devinfo . SplitByte_5 = ( splitbyteValue [ delta ] & 3 2 ) = = 3 2 ? 1 : 0 ;
devinfo . SplitByte_6 = ( splitbyteValue [ delta ] & 6 4 ) = = 6 4 ? 1 : 0 ;
devinfo . SplitByte_7 = ( splitbyteValue [ delta ] & 1 2 8 ) = = 1 2 8 ? 1 : 0 ;
Model . CGetInfo . SetDeviceInfo ( devinfo ) ;
}
}
int tempdb2addr = 0 ; StringBuilder sss = new StringBuilder ( ) ; StringBuilder barcode = new StringBuilder ( ) ;
if ( devicestates ! = null )
{
Array . Copy ( devicestates , CStaticClass . MutiReadSubscriptionDeviceStateReturns [ deviceindex . ToString ( ) ] , devicestates . Length ) ;
for ( int di = 0 ; di < dv . Count ; di + + )
{
int devidx = Convert . ToInt32 ( dv [ di ] [ "F_DeviceIndex" ] ) ;
devinfo = Model . CGetInfo . GetDeviceInfo ( devidx ) ;
int taskindex = 0 ;
int state = 0 ;
tempdb2addr = Convert . ToInt32 ( dv [ di ] [ "F_DBW2Address" ] ) - DBW2Addressbegin ;
//以下代码重新开发CStaticClass.MutiS7ConnReturns改为按照F_ReadSubscription
if ( devinfo . Dbw2Getlength > 3 )
{
if ( devinfo . DeviceKind = = 1 )
{
taskindex = ( devicestates [ tempdb2addr + 2 ] < < 8 ) + devicestates [ tempdb2addr + 3 ] ;
state = ( devicestates [ tempdb2addr + 4 ] < < 8 ) + devicestates [ tempdb2addr + 5 ] ;
}
else
{
taskindex = ( devicestates [ tempdb2addr + 2 ] < < 8 ) + devicestates [ tempdb2addr + 3 ] ;
if ( devinfo . Dbw2Getlength > 1 )
{
state = devicestates [ tempdb2addr + 1 ] ;
}
}
#region 注释 by lyj 20171101
//devinfo.SplitByte_0 = (devicestates[tempdb2addr + (int)devinfo.Dbw2Getlength - 2] & 1) == 1 ? 1 : 0;
//devinfo.SplitByte_1 = (devicestates[tempdb2addr + (int)devinfo.Dbw2Getlength - 2] & 2) == 2 ? 1 : 0;
//devinfo.SplitByte_2 = (devicestates[tempdb2addr + (int)devinfo.Dbw2Getlength - 2] & 4) == 4 ? 1 : 0;
//devinfo.SplitByte_3 = (devicestates[tempdb2addr + (int)devinfo.Dbw2Getlength - 2] & 8) == 8 ? 1 : 0;
//devinfo.SplitByte_4 = (devicestates[tempdb2addr + (int)devinfo.Dbw2Getlength - 2] & 16) == 16 ? 1 : 0;
#endregion
}
else
{
if ( devinfo . DeviceKind = = 3 8 )
{
//if (devicestates[tempdb2addr + 0] != 1) continue;
devinfo . SplitByte_0 = ( devicestates [ tempdb2addr + 1 ] & 1 ) = = 1 ? 1 : 0 ;
}
}
int devkind = devinfo . DeviceKind ;
if ( state > = 3 0 )
{
devinfo . ErrorCode = state ;
devinfo . RunState = 2 ;
}
else
{ //0,1,2
if ( state = = 2 )
{
devinfo . RunState = 5 ;
}
else
{
devinfo . RunState = state ;
}
devinfo . ErrorCode = state ;
}
devinfo . TaskNo = taskindex ;
if ( devinfo . DeviceKind = = 1 )
{
devinfo . ControlMode = Convert . ToInt32 ( dv [ di ] [ "F_ManTaskReserve" ] ) ; //借用控制模式
devinfo . SplitByte_0 = ( devicestates [ tempdb2addr + 1 3 ] & 1 ) = = 1 ? 1 : 0 ;
devinfo . SplitByte_1 = ( devicestates [ tempdb2addr + 1 3 ] & 2 ) = = 2 ? 1 : 0 ;
devinfo . SplitByte_6 = ( devicestates [ tempdb2addr + 1 3 ] & 6 4 ) = = 6 4 ? 1 : 0 ;
//byte[] mile = new byte[4] { devicestates[tempdb2addr + 24], devicestates[tempdb2addr + 25], devicestates[tempdb2addr + 26], devicestates[tempdb2addr + 27] };
//devinfo.Mile = CommonClassLib.CCarryConvert.bytetofloat(mile);
//byte[] time = new byte[4] { devicestates[tempdb2addr + 36], devicestates[tempdb2addr + 37], devicestates[tempdb2addr + 38], devicestates[tempdb2addr + 39] };
//devinfo.Time = CommonClassLib.CCarryConvert.bytetofloat(time);
devinfo . Mile = devicestates [ tempdb2addr + 2 7 ] + ( devicestates [ tempdb2addr + 2 6 ] < < 8 ) + ( devicestates [ tempdb2addr + 2 5 ] < < 1 6 ) + ( devicestates [ tempdb2addr + 2 4 ] < < 3 2 ) ;
devinfo . Time = devicestates [ tempdb2addr + 3 9 ] + ( devicestates [ tempdb2addr + 3 8 ] < < 8 ) + ( devicestates [ tempdb2addr + 3 7 ] < < 1 6 ) + ( devicestates [ tempdb2addr + 3 6 ] < < 3 2 ) ;
//devinfo.SplitByte_6= devicestates[tempdb2addr + 7] + (devicestates[tempdb2addr + 6] << 8) + (devicestates[tempdb2addr + 5] << 16) + (devicestates[tempdb2addr + 4] << 32);//X坐标
//X相对坐标
if ( devinfo . DeviceKind = = 1 )
{
//devinfo.SplitByte_7= devicestates[tempdb2addr + 11] + (devicestates[tempdb2addr + 10] << 8) + (devicestates[tempdb2addr + 9] << 16) + (devicestates[tempdb2addr + 8] << 32);//Y坐标
devinfo . XCoor = devicestates [ tempdb2addr + 7 ] + ( devicestates [ tempdb2addr + 6 ] < < 8 ) ;
devinfo . YCoor = devicestates [ tempdb2addr + 9 ] + ( devicestates [ tempdb2addr + 8 ] < < 8 ) ; //Y相对坐标
if ( devinfo . XCoor = = 0 & & devinfo . YCoor = = 0 )
{
devinfo . RunState = 3 ; //上海晟碟全是零设为离线
}
devinfo . Battery_Status = ( devicestates [ tempdb2addr + 1 0 ] < < 8 ) + devicestates [ tempdb2addr + 1 1 ] ; //电量
}
}
else if ( devinfo . DeviceKind = = 2 )
{
devinfo . SplitByte_0 = ( devicestates [ tempdb2addr + 4 ] & 1 ) = = 1 ? 1 : 0 ;
devinfo . SplitByte_1 = ( devicestates [ tempdb2addr + 4 ] & 2 ) = = 2 ? 1 : 0 ;
devinfo . SplitByte_2 = ( devicestates [ tempdb2addr + 4 ] & 4 ) = = 4 ? 1 : 0 ;
devinfo . SplitByte_3 = ( devicestates [ tempdb2addr + 4 ] & 8 ) = = 8 ? 1 : 0 ;
devinfo . SplitByte_5 = ( devicestates [ tempdb2addr + 4 ] & 3 2 ) = = 3 2 ? 1 : 0 ;
devinfo . SplitByte_6 = ( devicestates [ tempdb2addr + 4 ] & 6 4 ) = = 6 4 ? 1 : 0 ;
}
else if ( devinfo . DeviceKind = = 4 )
{
devinfo . SplitByte_0 = ( devicestates [ tempdb2addr + 8 ] & 1 ) = = 1 ? 1 : 0 ;
devinfo . SplitByte_1 = ( devicestates [ tempdb2addr + 8 ] & 2 ) = = 2 ? 1 : 0 ;
devinfo . SplitByte_2 = ( devicestates [ tempdb2addr + 8 ] & 4 ) = = 4 ? 1 : 0 ;
devinfo . SplitByte_3 = ( devicestates [ tempdb2addr + 8 ] & 8 ) = = 8 ? 1 : 0 ;
devinfo . SplitByte_5 = ( devicestates [ tempdb2addr + 8 ] & 3 2 ) = = 3 2 ? 1 : 0 ;
devinfo . SplitByte_6 = ( devicestates [ tempdb2addr + 8 ] & 6 4 ) = = 6 4 ? 1 : 0 ;
devinfo . XCoor = devicestates [ tempdb2addr + 7 ] + ( devicestates [ tempdb2addr + 6 ] < < 8 ) + ( devicestates [ tempdb2addr + 5 ] < < 1 6 ) + ( devicestates [ tempdb2addr + 4 ] < < 3 2 ) ;
}
Model . CGetInfo . SetDeviceInfo ( devinfo ) ;
}
}
return true ;
}
catch ( Exception ex )
{
SendMessage ( string . Format ( "tsStatus@FrmClient.DealWithDeviceState时{0}" , ex . StackTrace + ex . Message ) ) ;
errtext = string . Format ( "tsStatus@FrmClient.DealWithDeviceState时{0}" , ex . StackTrace + ex . Message ) ;
return false ;
}
finally
{
dv . Dispose ( ) ;
dvbc . Dispose ( ) ;
dvsp . Dispose ( ) ;
}
}
#region wcf回调
public void SendDeviceInfo ( Model . MDevice devinfo )
{
try
{
if ( CStaticClass . WCFOK = = false ) return ;
if ( this . IsDisposed ) return ;
Model . CGetInfo . SetDeviceInfo ( devinfo ) ;
}
catch ( Exception ex )
{
throw ex ;
}
}
public IAsyncResult BeginSendDeviceInfo ( Model . MDevice devinfo , AsyncCallback acb , object state )
{
return state as IAsyncResult ;
}
public void EndSendDeviceInfo ( IAsyncResult ar )
{
}
public IAsyncResult BeginSendMessage ( string message , AsyncCallback acb , object state )
{
return state as IAsyncResult ;
}
public void EndSendMessage ( IAsyncResult ar )
{
}
public void SendMessage ( string message )
{
char [ ] cc = new char [ 1 ] { '@' } ;
string [ ] strsplit = message . Split ( cc ) ;
if ( strsplit . GetLength ( 0 ) > 1 )
{ //更新指定控件
if ( strsplit [ 0 ] = = "tsStatus" )
{
if ( FrmControlMonitor . FormInstance . GetObjectText ( "tsStatus" ) . IndexOf ( strsplit [ 1 ] ) < 0 )
{
FrmControlMonitor . FormInstance . FlashPanit ( "tsStatus" , strsplit [ 1 ] , true ) ;
}
//tsStatus.Text = strsplit[1];
}
else if ( strsplit [ 0 ] = = "notifyIcon1" )
{
this . BeginInvoke ( new MethodInvoker ( delegate ( )
{
notifyIcon1 . BalloonTipText = strsplit [ 1 ] ;
notifyIcon1 . ShowBalloonTip ( 1 0 0 0 0 , "警告:" , strsplit [ 1 ] , ToolTipIcon . Warning ) ;
} ) ) ;
}
}
//else
//{//刷新数据显示
// this.dgvManager.BeginInvoke(new MethodInvoker(delegate()
// {
// sql.Remove(0, sql.Length);
// sql.Append("select * from V_Manage_Task where ").Append(CStaticClass.Manstatus);
// this.dgvManager.DataSource = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// }));
// this.dgvMonitor.BeginInvoke(new MethodInvoker(delegate()
// {
// sql.Remove(0, sql.Length);
// sql.Append("select * from V_Monitor_Task where ").Append(CStaticClass.Monstatus).Append(" order by 设备指令索引 asc ");
// this.dgvMonitor.DataSource = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// }));
//}
}
//20140824richard
public void SendOrderMessage ( Model . MonitorInfo mi )
{
this . BeginInvoke ( new MethodInvoker ( delegate ( )
{
try
{
if ( CStaticClass . UserID . ToUpper ( ) = = "SA" )
{
CStaticClass . Order = mi . Orderturnon ;
CStaticClass . ObtainManageTask = mi . Obtaintask ;
if ( CStaticClass . Order = = true )
{
ClickOrderTurnOn ( ) ;
}
else
{
ClickOrderTurnOff ( ) ;
}
if ( CStaticClass . ObtainManageTask = = true )
{
ClickObtainTask ( ) ;
}
else
{
ClickStopObtainTask ( ) ;
}
}
}
catch ( Exception ex )
{
if ( FrmControlMonitor . FormInstance . GetObjectText ( "tsStatus" ) . IndexOf ( "接收【获取任务和命令开关】广播时:" + ex . Message ) < 0 )
{
FrmControlMonitor . FormInstance . FlashPanit ( "tsStatus" , "接收【获取任务和命令开关】广播时:" + ex . Message , true ) ;
}
//if (tsStatus.Text.IndexOf("接收【获取任务和命令开关】广播时:" + ex.Message) < 0)
//{
// tsStatus.ForeColor = Color.Red;
// this.tsStatus.Text += "接收【获取任务和命令开关】广播时:" + ex.Message;
//}
}
} ) ) ;
}
public IAsyncResult BeginSendOrderMessage ( Model . MonitorInfo mi , AsyncCallback callBack , object state )
{
return state as IAsyncResult ;
}
public void EndSendOrderMessage ( IAsyncResult ar )
{
}
//20140824richard
#endregion
private void Client_FormClosing ( object sender , FormClosingEventArgs e )
{
if ( MessageBox . Show ( "您确认要关闭" + CStaticClass . SystemName + "吗?" , "操作提示:" , MessageBoxButtons . OKCancel , MessageBoxIcon . Warning ) ! = DialogResult . OK )
{
e . Cancel = true ;
return ;
}
try
{
ClientLogout ( ) ;
OPCClient . CCommonOPCClient . DisConnectOPCServer ( ) ; //20120428
}
catch ( Exception ex )
{
}
finally
{
FrmLogin . FormInstance . Close ( ) ;
}
}
void LogCallBack ( IAsyncResult ar )
{
try
{
string strErr = string . Empty ;
if ( CStaticClass . WcfControl . EndLogoutClient ( out strErr , ar ) = = true )
{
//if (ar.AsyncState.ToString() == "RegisterClientCallBack")
//{
// CStaticClass.WcfControl.BeginRegisterClient(CStaticClass.UserID, "客户端:" + CStaticClass.ClientID + ",用户名:" + CStaticClass.UserID, new AsyncCallback(RegisterClientCallBack), null);
// return;
//}
}
CStaticClass . WCFOK = false ;
}
catch ( Exception ex )
{
MessageBox . Show ( ex . Message , "操作提示" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
}
public void ClientLogout ( )
{
try
{
string errtext = string . Empty ;
CStaticClass . WcfControl . BeginLogoutClient ( "客户端:" + CStaticClass . ClientID + ",用户名:" + CStaticClass . UserID , new AsyncCallback ( LogCallBack ) , "" ) ;
}
catch ( Exception ex )
{
//MessageBox.Show(ex.Message, "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void toolStripMenuItem1_Click ( object sender , EventArgs e )
{
FrmHandCommand . FormInstance . Show ( ) ;
}
private void toolStripMenuItem2_Click ( object sender , EventArgs e )
{
FrmHandAssociateCommand . FormInstance . Show ( ) ;
}
private void MIManageShow_Click ( object sender , EventArgs e )
{
FrmAutoCommand . FormInstance . Show ( ) ;
}
private void MIAltMonitor_Click ( object sender , EventArgs e )
{
FrmModifyMonitor . FormInstance . Show ( ) ;
}
private void MIAltManange_Click ( object sender , EventArgs e )
{
//FrmModifyManage.FormInstance.ShowDialog();
FrmModifyManage . FormInstance . Show ( ) ;
}
private void notifyIcon1_BalloonTipShown ( object sender , EventArgs e )
{
try
{
//if (Voice == null)
//{
// Voice = new SpVoice();
//}
//Voice.Speak(notifyIcon1.BalloonTipText, SpFlags);
}
catch
{
}
}
private void notifyIcon1_MouseDoubleClick ( object sender , MouseEventArgs e )
{
if ( CStaticClass . WCFOK = = true )
{
this . TopMost = true ;
this . Visible = true ;
this . TopMost = false ;
this . WindowState = FormWindowState . Maximized ;
}
}
void BuildHandTaskCallBack ( IAsyncResult ar )
{
string errtext = string . Empty ;
if ( CStaticClass . WcfControl . EndBuildHandTask ( out errtext , ar ) = = false )
{
//MessageBox.Show(errtext, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void Client_Load ( object sender , EventArgs e )
{
}
private void MIDeviceState_Click ( object sender , EventArgs e )
{
FrmDeviceInfoEdit . FormInstance . Show ( ) ;
}
private void MIRouteInfo_Click ( object sender , EventArgs e )
{
FrmRouteEdit . FormInstance . Show ( ) ;
}
private void MIWaitTime_Click ( object sender , EventArgs e )
{
FrmWaitTime . FormInstance . Show ( ) ;
}
private void MIMonitorConnectInfo_Click ( object sender , EventArgs e )
{
FrmConnectDB . FormInstance . ConnectType = "Monitor" ;
FrmConnectDB . FormInstance . Show ( ) ;
}
private void MIIOStation_Click ( object sender , EventArgs e )
{
FrmIOStation . FormInstance . Show ( ) ;
}
private void timer1_Tick ( object sender , EventArgs e )
{
//if (CStaticClass.WCFOK == false) return;
try
{
if ( CStaticClass . WcfControl ! = null )
{
if ( CStaticClass . WcfControl . State = = CommunicationState . Faulted )
{
MMServerStatus . Image = wcfControlMonitorClient . Properties . Resources . linkerror ;
MMServerStatus . ToolTipText = "与服务端连接失败" ;
CStaticClass . WCFOK = false ;
ReConnectAndRegisterClient ( ) ; //20160115添加断线重连功能
}
else
{
MMServerStatus . Image = wcfControlMonitorClient . Properties . Resources . linkok ;
//MMServerStatus.Image = wcfControlMonitorClient.Properties.Resources.linkerror;
MMServerStatus . ToolTipText = "与服务端连接成功" ;
CStaticClass . WcfControl . BeginHeartbeat ( new AsyncCallback ( CallBackHeartbeat ) , null ) ;
}
}
//devsn++;
//if (devsn < devlist.Count())
//{
// CStaticClass.WcfControl.BeginSendAllDeviceStates(devlist[devsn].DeviceIndex, new AsyncCallback(SendAllDeviceStatesCallback), null);
//}
//else
//{
// devsn = 0;
// CStaticClass.WcfControl.BeginSendAllDeviceStates(devlist[devsn].DeviceIndex, new AsyncCallback(SendAllDeviceStatesCallback), null);
//}
}
catch ( Exception ex )
{
if ( FrmControlMonitor . FormInstance . GetObjectText ( "tsStatus" ) . IndexOf ( "BeginHeartbeat时:" + ex . Message ) < 0 )
{
FrmControlMonitor . FormInstance . FlashPanit ( "tsStatus" , "BeginHeartbeat时:" + ex . Message , true ) ;
}
//if (tsStatus.Text.IndexOf("BeginHeartbeat时:" + ex.Message) < 0)
//{
// tsStatus.ForeColor = Color.Red;
// this.tsStatus.Text += "BeginHeartbeat时:" + ex.Message;
//}
MMServerStatus . Image = wcfControlMonitorClient . Properties . Resources . linkerror ;
CStaticClass . WCFOK = false ;
ReConnectAndRegisterClient ( ) ; //20160115添加断线重连功能
}
}
public void SendAllDeviceStatesCallback ( IAsyncResult ar )
{
try
{
Model . MDevice dev ;
dev = CStaticClass . WcfControl . EndSendAllDeviceStates ( ar ) ;
if ( dev ! = null )
{
Model . CGetInfo . SetDeviceInfo ( dev ) ;
}
devsn + + ;
if ( devsn < devlist . Count ( ) )
{
CStaticClass . WcfControl . BeginSendAllDeviceStates ( devlist [ devsn ] . DeviceIndex , new AsyncCallback ( SendAllDeviceStatesCallback ) , null ) ;
}
else
{
//devsn=0;
//CStaticClass.WcfControl.BeginSendAllDeviceStates(devlist[devsn].DeviceIndex, new AsyncCallback(SendAllDeviceStatesCallback), null);
}
}
catch ( Exception ex )
{
this . BeginInvoke ( new MethodInvoker ( delegate ( )
{
if ( FrmControlMonitor . FormInstance . GetObjectText ( "tsStatus" ) . IndexOf ( "SendAllDeviceStatesCallback时:" + ex . Message ) < 0 )
{
FrmControlMonitor . FormInstance . FlashPanit ( "tsStatus" , "SendAllDeviceStatesCallback时:" + ex . Message , true ) ;
}
// if (tsStatus.Text.IndexOf("SendAllDeviceStatesCallback时:" + ex.Message) < 0)
//{
// tsStatus.ForeColor = Color.Red;
// this.tsStatus.Text += "SendAllDeviceStatesCallback时:" + ex.Message;
//}
} ) ) ;
ReRegisterClient ( ) ;
}
}
private void MITransportTimeout_Click ( object sender , EventArgs e )
{
FrmTransportTimeout . FormInstance . Show ( ) ;
}
private void MISeeDarket_Click ( object sender , EventArgs e )
{
FrmBrowseDarkCasket . FormInstance . Show ( ) ;
}
private void MIDarketFileSet_Click ( object sender , EventArgs e )
{
FrmDarkCasket . FormInstance . Show ( ) ;
}
private void MIAutoTaskHistory_Click ( object sender , EventArgs e )
{
FrmBrowseAotoTaskLog . FormInstance . Show ( ) ;
}
private void MIUserInfoManage_Click ( object sender , EventArgs e )
{
FrmUsers . FormInstance . Show ( ) ;
}
private void MIAltPassword_Click ( object sender , EventArgs e )
{
FrmPassword . FormInstance . Show ( ) ;
}
private void MMExitSystem_Click ( object sender , EventArgs e )
{
this . Close ( ) ;
}
private void toolStripMenuItem10_Click ( object sender , EventArgs e )
{
this . Visible = false ;
}
private void toolStripMenuItem8_Click ( object sender , EventArgs e )
{
this . Visible = true ;
this . WindowState = FormWindowState . Maximized ;
}
private void toolStripMenuItem9_Click ( object sender , EventArgs e )
{
this . Close ( ) ;
}
private void ctrl_Click ( object sender , EventArgs e )
{
Button btn = ( Button ) sender ;
_d eviceStatus . DeviceIndex = Convert . ToInt32 ( btn . Tag ) ;
_d eviceStatus . ShowDialog ( ) ;
}
private void ctrl_ClickTxt ( object sender , EventArgs e )
{
TextBox txt = ( TextBox ) sender ;
_ worstation . DeviceIndex = Convert . ToInt32 ( txt . Tag ) ;
_ worstation . ShowDialog ( ) ;
}
private void ctrl_ClickPic ( object sender , EventArgs e )
{
PictureBox btn = ( PictureBox ) sender ;
_d eviceStatus . DeviceIndex = Convert . ToInt32 ( btn . Tag ) ;
_d eviceStatus . ShowDialog ( ) ;
}
void ReConnectAndRegisterClient ( )
{
try
{
CStaticClass . ClientID = Dns . GetHostName ( ) ;
var ctx = new InstanceContext ( CStaticClass . client ) ;
CStaticClass . WcfControl = new WcfControlMonitor . ControlMonitorClient ( ctx ) ;
string errtext = string . Empty ;
CommonClassLib . CCarryConvert . WriteDarkCasket ( "Login" , "UserID:" + CStaticClass . UserID + "的操作日志" , "尝试重新连接" , "" , "" ) ;
CStaticClass . WcfControl . BeginRegisterClient ( CStaticClass . UserID , "客户端:" + CStaticClass . ClientID + ",用户名:" + CStaticClass . UserID , new AsyncCallback ( ReConnectAndRegisterClientCallBack ) , null ) ;
}
catch ( Exception ex )
{
throw ex ;
}
}
void ReConnectAndRegisterClientCallBack ( IAsyncResult ar )
{
try
{
string ErrText = string . Empty ;
if ( false = = CStaticClass . WcfControl . EndRegisterClient ( out ErrText , ar ) )
{
//MessageBox.Show(ErrText, "登陆错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
CStaticClass . WCFOK = false ;
return ;
}
CommonClassLib . CCarryConvert . WriteDarkCasket ( "Login" , "UserID:" + CStaticClass . UserID + "的操作日志" , "重连**成功登录系统" , "" , "" ) ;
//CStaticClass.WcfControl.BeginSendAllDeviceStates(CStaticClass.client.devlist[0].DeviceIndex, new AsyncCallback(CStaticClass.client.SendAllDeviceStatesCallback), null);
CStaticClass . WCFOK = true ;
}
catch ( Exception ex )
{
//MessageBox.Show(ex.Message, "登陆错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
CStaticClass . WCFOK = false ;
return ;
}
}
void ReRegisterClient ( )
{
//CStaticClass.ClientID = Dns.GetHostName();
//var ctx = new InstanceContext(CStaticClass.client);
//CStaticClass.WcfControl = new WcfControlMonitor.ControlMonitorClient(ctx);
//string errtext = string.Empty;
//CStaticClass.WcfControl.BeginRegisterClient(CStaticClass.UserID, "客户端:" + CStaticClass.ClientID + ",用户名:" + CStaticClass.UserID, new AsyncCallback(RegisterClientCallBack), null);
}
void RegisterClientCallBack ( IAsyncResult ar )
{
try
{
string ErrText ;
if ( CStaticClass . WcfControl . EndRegisterClient ( out ErrText , ar ) = = true )
{
CStaticClass . WCFOK = true ;
devsn + + ;
if ( devsn < devlist . Count ( ) )
{
CStaticClass . WcfControl . BeginSendAllDeviceStates ( devlist [ devsn ] . DeviceIndex , new AsyncCallback ( SendAllDeviceStatesCallback ) , null ) ;
}
else
{
devsn = 0 ;
CStaticClass . WcfControl . BeginSendAllDeviceStates ( devlist [ devsn ] . DeviceIndex , new AsyncCallback ( SendAllDeviceStatesCallback ) , null ) ;
}
}
else
{
CStaticClass . WcfControl . BeginLogoutClient ( "客户端:" + CStaticClass . ClientID + ",用户名:" + CStaticClass . UserID , new AsyncCallback ( LogCallBack ) , "RegisterClientCallBack" ) ;
this . BeginInvoke ( new MethodInvoker ( delegate ( )
{
if ( FrmControlMonitor . FormInstance . GetObjectText ( "tsStatus" ) . IndexOf ( "EndRegisterClient时:" + ErrText ) < 0 )
{
FrmControlMonitor . FormInstance . FlashPanit ( "tsStatus" , "EndRegisterClient时:" + ErrText , true ) ;
}
//if (tsStatus.Text.IndexOf("EndRegisterClient时:" + ErrText) < 0)
// {
// tsStatus.ForeColor = Color.Red;
// this.tsStatus.Text += "EndRegisterClient时:" + ErrText;
// }
} ) ) ;
}
}
catch ( Exception ex )
{
this . BeginInvoke ( new MethodInvoker ( delegate ( )
{
if ( FrmControlMonitor . FormInstance . GetObjectText ( "tsStatus" ) . IndexOf ( "EndRegisterClient时:" + ex . Message ) < 0 )
{
FrmControlMonitor . FormInstance . FlashPanit ( "tsStatus" , "EndRegisterClient时:" + ex . Message , true ) ;
}
// if (tsStatus.Text.IndexOf("EndRegisterClient时:" + ex.Message) < 0)
//{
// tsStatus.ForeColor = Color.Red;
// this.tsStatus.Text += "EndRegisterClient时:" + ex.Message;
//}
} ) ) ;
}
}
private void MIStartRetrieveTask_Click ( object sender , EventArgs e )
{
try
{
ClickObtainTask ( ) ;
CStaticClass . WcfControl . BeginObtainTask ( "" , "UPDATE" , new AsyncCallback ( CallbackObtainTask ) , null ) ;
}
catch ( Exception ex )
{
MessageBox . Show ( ex . Message , "提示" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
}
private void MIStopRetrieveTask_Click ( object sender , EventArgs e )
{
try
{
ClickStopObtainTask ( ) ;
CStaticClass . WcfControl . BeginStopObtainTask ( new AsyncCallback ( CallbackStopObtainTask ) , null ) ;
}
catch ( Exception ex )
{
MessageBox . Show ( ex . Message , "提示" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
}
private void MITurnOn_Click ( object sender , EventArgs e )
{
try
{
ClickOrderTurnOn ( ) ;
CStaticClass . WcfControl . BeginOrderTurnOn ( new AsyncCallback ( CallbackTurnOn ) , null ) ;
}
catch ( Exception ex )
{
MessageBox . Show ( ex . Message , "提示" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
}
private void MITurnOff_Click ( object sender , EventArgs e )
{
if ( MessageBox . Show ( "您确认要“关闭命令开关”吗?如果“关闭命令开关”将导致调度计算机与所有设备通讯中断!" , "操作提示:" , MessageBoxButtons . OKCancel , MessageBoxIcon . Warning ) ! = DialogResult . OK )
{
return ;
}
try
{
ClickOrderTurnOff ( ) ;
CStaticClass . WcfControl . BeginOrderTurnOff ( new AsyncCallback ( CallbackTurnOff ) , null ) ;
}
catch ( Exception ex )
{
MessageBox . Show ( ex . Message , "提示" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
}
private void MISystemInit_Click ( object sender , EventArgs e )
{
FrmSystemInit . FormInstance . Show ( ) ;
}
void CallbackObtainTask ( IAsyncResult ar )
{
CStaticClass . WcfControl . EndObtainTask ( ar ) ;
}
void CallbackStopObtainTask ( IAsyncResult ar )
{
CStaticClass . WcfControl . EndStopObtainTask ( ar ) ;
}
void CallbackTurnOn ( IAsyncResult ar )
{
CStaticClass . WcfControl . EndOrderTurnOn ( ar ) ;
}
void CallbackTurnOff ( IAsyncResult ar )
{
CStaticClass . WcfControl . EndOrderTurnOff ( ar ) ;
}
void CallBackHeartbeat ( IAsyncResult ar )
{ this . BeginInvoke ( new MethodInvoker ( delegate ( )
{
try
{
string errtext = string . Empty ;
Model . MonitorInfo mi ;
CStaticClass . WcfControl . EndHeartbeat ( out mi , ar ) ;
if ( CStaticClass . UserID . ToUpper ( ) = = "SA" )
{
CStaticClass . Order = mi . Orderturnon ;
CStaticClass . ObtainManageTask = mi . Obtaintask ;
if ( mi . Orderturnon = = true )
{
ClickOrderTurnOn ( ) ;
}
else
{
ClickOrderTurnOff ( ) ;
}
if ( mi . Obtaintask = = true )
{
ClickObtainTask ( ) ;
}
else
{
ClickStopObtainTask ( ) ;
}
}
if ( mi . S7connectOnline . Count > 0 )
{
if ( mi . S7connectOnline [ "S7 connection_1" ] = = 0 ) //判断等于0民航二所
{
MMPLCStatus . Image = wcfControlMonitorClient . Properties . Resources . linkok ;
MMPLCStatus . ToolTipText = "与PLC连接成功" ;
}
else
{
MMPLCStatus . Image = wcfControlMonitorClient . Properties . Resources . linkerror ;
MMPLCStatus . ToolTipText = "与PLC连接失败" ;
}
}
}
catch ( Exception ex )
{
if ( FrmControlMonitor . FormInstance . GetObjectText ( "tsStatus" ) . IndexOf ( "CallBackHeartbeat时:" + ex . Message ) < 0 )
{
FrmControlMonitor . FormInstance . FlashPanit ( "tsStatus" , "CallBackHeartbeat时:" + ex . Message , true ) ;
}
//if (tsStatus.Text.IndexOf("CallBackHeartbeat时:" + ex.Message) < 0)
//{
// tsStatus.ForeColor = Color.Red;
// this.tsStatus.Text += "CallBackHeartbeat时:" + ex.Message;
//}
ReRegisterClient ( ) ;
}
} ) ) ;
}
void ClickObtainTask ( )
{
if ( MITurnOn . Checked = = true )
{
if ( this . Text ! = CStaticClass . SystemName + "【开始获取任务!】" + "【正在执行自动命令!】" )
{
this . Text = CStaticClass . SystemName + "【开始获取任务!】" + "【正在执行自动命令!】" ;
}
}
else
{
if ( this . Text ! = CStaticClass . SystemName + "【开始获取任务!】" )
{
this . Text = CStaticClass . SystemName + "【开始获取任务!】" ;
}
}
MIStartRetrieveTask . Checked = true ;
MIStartRetrieveTask . Enabled = false ;
MIStopRetrieveTask . Checked = false ;
MIStopRetrieveTask . Enabled = true ;
}
void ClickStopObtainTask ( )
{
if ( MITurnOn . Checked = = true )
{
if ( this . Text ! = CStaticClass . SystemName + "【正在执行自动命令!】" )
{
this . Text = CStaticClass . SystemName + "【正在执行自动命令!】" ;
}
}
else
{
if ( this . Text ! = CStaticClass . SystemName )
{
this . Text = CStaticClass . SystemName ;
}
}
MIStartRetrieveTask . Checked = false ;
MIStartRetrieveTask . Enabled = true ;
MIStopRetrieveTask . Enabled = false ;
MIStopRetrieveTask . Checked = true ;
}
void ClickOrderTurnOn ( )
{
if ( MIStartRetrieveTask . Checked = = true )
{
if ( this . Text ! = CStaticClass . SystemName + "【开始获取任务!】" + "【正在执行自动命令!】" )
{
this . Text = CStaticClass . SystemName + "【开始获取任务!】" + "【正在执行自动命令!】" ;
}
}
else
{
if ( this . Text ! = CStaticClass . SystemName + "【正在执行自动命令!】" )
{
this . Text = CStaticClass . SystemName + "【正在执行自动命令!】" ;
}
}
MITurnOff . Enabled = true ;
MITurnOn . Enabled = false ;
MITurnOff . Checked = false ;
MITurnOn . Checked = true ;
}
void ClickOrderTurnOff ( )
{
if ( MIStartRetrieveTask . Checked = = true )
{
if ( this . Text ! = CStaticClass . SystemName + "【开始获取任务!】" )
{
this . Text = CStaticClass . SystemName + "【开始获取任务!】" ;
}
}
else
{
if ( this . Text ! = CStaticClass . SystemName )
{
this . Text = CStaticClass . SystemName ;
}
}
MITurnOff . Enabled = false ;
MITurnOn . Enabled = true ;
MITurnOn . Checked = false ;
MITurnOff . Checked = true ;
}
private void MISystemInit2_Click ( object sender , EventArgs e )
{
FrmSystemInit . FormInstance . Show ( ) ;
}
private void MIManageConnectInfo_Click ( object sender , EventArgs e )
{
FrmConnectDB . FormInstance . ConnectType = "Manage" ;
FrmConnectDB . FormInstance . Show ( ) ;
}
public bool IsEquals ( Array array1 , Array array2 , int arraylength )
{ //20090902新增加arraylength
//比较类型是否一样
if ( ( array1 = = null ) | | ( array2 = = null ) ) return false ;
if ( ! Object . ReferenceEquals ( array1 . GetType ( ) , array2 . GetType ( ) ) )
{
return false ;
}
//比较长度是否一样
if ( array1 . GetLength ( 0 ) ! = array2 . GetLength ( 0 ) )
{
return false ;
}
//比较成员是否对应相等
ValueType v1 , v2 ;
for ( int i = 0 ; i < arraylength ; i + + )
{
v1 = ( ValueType ) array1 . GetValue ( i ) ;
v2 = ( ValueType ) array2 . GetValue ( i ) ;
if ( ! v1 . Equals ( v2 ) )
{
return false ;
}
}
return true ;
}
string GetBarcodeFromMonitorIndex ( int taskindex )
{
DataView dvb = new DataView ( ) ; StringBuilder sss = new StringBuilder ( "" ) ;
try
{
sss . Append ( "SELECT F_TxtParam FROM T_Monitor_Task WHERE (F_MonitorIndex = " ) . Append ( taskindex ) . Append ( ")" ) ;
dvb = dbo . ExceSQL ( sss . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvb . Count > 0 )
{
return dvb [ 0 ] [ "F_TxtParam" ] . ToString ( ) ;
}
else
{
return "-" ;
}
}
catch ( Exception ex )
{
throw ex ;
}
finally
{
dvb . Dispose ( ) ;
}
}
int GetMonitorRunTaskIndexFromBarCode ( StringBuilder BarCode )
{ //20110216
DataView dv = new DataView ( ) ;
try
{
string bc = BarCode . ToString ( ) ;
dv = dbo1 . ExceSQL ( string . Format ( "SELECT T_Monitor_Task.F_MonitorIndex FROM T_Base_Device,T_Monitor_Task WHERE T_Base_Device.F_DeviceIndex = T_Monitor_Task.F_DeviceIndex and ((T_Base_Device.F_DeviceKindIndex = 13) OR (T_Base_Device.F_DeviceKindIndex = 31)) and (F_TxtParam = '{0}') and F_Status>0 order by F_MonitorIndex asc" , bc ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
return Convert . ToInt32 ( dv [ 0 ] [ "F_MonitorIndex" ] ) ;
}
else
{
return - 1 ;
}
}
catch ( Exception ex )
{
throw ex ;
}
finally
{
dv . Dispose ( ) ;
}
}
int GetMonitorAskTaskIndexFromBarCode ( StringBuilder BarCode )
{ //20110216
DataView dv = new DataView ( ) ;
try
{
string bc = BarCode . ToString ( ) ;
dv = dbo . ExceSQL ( string . Format ( "SELECT T_Monitor_Task.F_MonitorIndex FROM T_Base_Device,T_Monitor_Task WHERE T_Base_Device.F_DeviceIndex = T_Monitor_Task.F_DeviceIndex and ((T_Base_Device.F_DeviceKindIndex = 13) OR (T_Base_Device.F_DeviceKindIndex = 31)) and (F_TxtParam = '{0}') and ((F_Status>0) or (F_SendFlag=2 and F_Status=0)) and F_DeviceCommandIndex=6 order by F_MonitorIndex asc" , bc ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
return Convert . ToInt32 ( dv [ 0 ] [ "F_MonitorIndex" ] ) ;
}
else
{
return - 1 ;
}
}
catch ( Exception ex )
{
throw ex ;
}
finally
{
dv . Dispose ( ) ;
}
}
int GetMonitorTaskIndexFromBarCode ( StringBuilder BarCode , Model . MDevice devinf )
{ //20110216
DataView dv = new DataView ( ) ;
try
{
string bc = BarCode . ToString ( ) ;
dv = dbo . ExceSQL ( string . Format ( "SELECT T_Monitor_Task.F_MonitorIndex FROM T_Base_Device,T_Monitor_Task WHERE T_Base_Device.F_DeviceIndex = T_Monitor_Task.F_DeviceIndex and ((T_Base_Device.F_DeviceKindIndex = 13) OR (T_Base_Device.F_DeviceKindIndex = 31)) and (F_TxtParam = '{0}') and (F_NumParam4 = {1} or F_NumParam4 = {2}) and F_Status>0 order by F_MonitorIndex asc" , bc , devinf . DeviceIndex , devinf . DeviceVisual ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
return Convert . ToInt32 ( dv [ 0 ] [ "F_MonitorIndex" ] ) ;
}
else
{
//dv = dbo.ExceSQL(string.Format("SELECT T_Monitor_Task.F_MonitorIndex FROM T_Base_Device,T_Monitor_Task WHERE T_Base_Device.F_DeviceIndex = T_Monitor_Task.F_DeviceIndex and ((T_Base_Device.F_DeviceKindIndex = 13) OR (T_Base_Device.F_DeviceKindIndex = 31)) and (F_TxtParam = '{0}') and F_Status>0 order by F_MonitorIndex asc", bc)).Tables[0].DefaultView;
//if (dv.Count > 0)
//{
// return Convert.ToInt32(dv[0]["F_MonitorIndex"]);
//}
//else
//{
return - 1 ;
//}
}
}
catch ( Exception ex )
{
throw ex ;
}
finally
{
dv . Dispose ( ) ;
}
}
string GetMonitorTaskStartTime ( int taskindex , out int order )
{ //20110216
DataView dv = new DataView ( ) ;
try
{
dv = dbo . ExceSQL ( string . Format ( "SELECT F_StartTime,F_DeviceCommandIndex FROM T_Monitor_Task WHERE F_MonitorIndex={0}" , taskindex ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
order = Convert . ToInt32 ( dv [ 0 ] [ "F_DeviceCommandIndex" ] ) ;
return dv [ 0 ] [ "F_StartTime" ] . ToString ( ) ;
}
else
{
order = - 1 ;
return "-" ;
}
}
catch ( Exception ex )
{
throw ex ;
}
finally
{
dv . Dispose ( ) ;
}
}
private void MIZCKSetIO_Click ( object sender , EventArgs e )
{
FrmZCKSetIOStation . FormInstance . Show ( ) ;
}
private void MIErrorSolutions_Click ( object sender , EventArgs e )
{ //20151120
FrmDeviceErrorSolutions . FormInstance . Show ( ) ;
}
private void MITaskCount_Click ( object sender , EventArgs e )
{ //20151120
FrmTaskManage . FormInstance . Show ( ) ;
}
private void MIErrorRecord_Click ( object sender , EventArgs e )
{
FrmDeviceErrorLog . FormInstance . Show ( ) ;
}
private void MIBrowseInterface_Click ( object sender , EventArgs e )
{
FrmBrowseInterFace . FormInstance . Show ( ) ;
}
private void MIBrowseActivation_Click ( object sender , EventArgs e )
{
FrmBrowseActivation . FormInstance . Show ( ) ;
}
private void button1_Click ( object sender , EventArgs e )
{
//label1.Text = CStaticClass.WcfControl.State.ToString();
////if (CStaticClass.WcfControl.State == CommunicationState.Faulted)
////{
////}
}
private void MIActivation_Click ( object sender , EventArgs e )
{
FrmBrowseActivation . FormInstance . Show ( ) ;
}
private void MIDarketFileSet1_Click ( object sender , EventArgs e )
{
FrmDarkCasket . FormInstance . Show ( ) ;
}
private void MIErrorSolutions_Click_1 ( object sender , EventArgs e )
{
FrmDeviceErrorSolutions . FormInstance . Show ( ) ;
}
private void MIDemoSet_Click ( object sender , EventArgs e )
{
FrmDemoSet . FormInstance . Show ( ) ;
}
private void MIShuttleSet_Click ( object sender , EventArgs e )
{
FrmChangeShuttle . FormInstance . Show ( ) ;
}
private void MILifterSet_Click ( object sender , EventArgs e )
{
FrmDemoSet . FormInstance . Show ( ) ;
}
private void MIInterfaceUpdate_Click ( object sender , EventArgs e )
{
FrmUpdateStatus . FormInstance . Show ( ) ;
}
//public bool SendInOutMessageToPlc()
//{
// throw new NotImplementedException();
//}
}
}