using DyeingComputer.UserClass ;
using DyeingComputer.View ;
using DyeingComputer.ViewModel ;
using Newtonsoft.Json ;
using System ;
using System.Collections ;
using System.Collections.Generic ;
using System.Data ;
using System.Diagnostics ;
using System.Linq ;
using System.Net ;
using System.Net.Http ;
using System.Net.Sockets ;
using System.Reflection.Emit ;
using System.Runtime.InteropServices ;
using System.Text ;
using System.Threading ;
using System.Threading.Tasks ;
using System.Windows ;
using System.Windows.Controls ;
using TouchSocket.Core ;
using TouchSocket.Sockets ;
using static DyeingComputer . UserClass . SqliteHelper ;
using static System . Net . WebRequestMethods ;
using static System . Windows . Forms . AxHost ;
using static System . Windows . Forms . VisualStyles . VisualStyleElement ;
using static System . Windows . Forms . VisualStyles . VisualStyleElement . Button ;
using static System . Windows . Forms . VisualStyles . VisualStyleElement . TaskbarClock ;
namespace DyeingComputer.UserClass
{ /// <summary>
/// 异步TCP服务器
/// </summary>
public class AsyncTcpServer
{
//设置系统时间的API函数
[DllImport("kernel32.dll")]
private static extern bool SetLocalTime ( ref SYSTEMTIME time ) ;
[StructLayout(LayoutKind.Sequential)]
private struct SYSTEMTIME
{
public short year ;
public short month ;
public short dayOfWeek ;
public short day ;
public short hour ;
public short minute ;
public short second ;
public short milliseconds ;
}
/// <summary>
/// 设置系统时间
/// </summary>
/// <param name="dt">需要设置的时间</param>
/// <returns>返回系统时间设置状态,true为成功,false为失败</returns>
private static bool SetLocalDateTime ( DateTime dt )
{
SYSTEMTIME st ;
st . year = ( short ) dt . Year ;
st . month = ( short ) dt . Month ;
st . dayOfWeek = ( short ) dt . DayOfWeek ;
st . day = ( short ) dt . Day ;
st . hour = ( short ) dt . Hour ;
st . minute = ( short ) dt . Minute ;
st . second = ( short ) dt . Second ;
st . milliseconds = ( short ) dt . Millisecond ;
bool rt = SetLocalTime ( ref st ) ;
return rt ;
}
public static string [ ] Prohibit = new string [ 1 0 ] { "S01" , "S02" , "S03" , "S05" , "S06" , "S07" , "SL1" , "SL2" , "SL3" , "" } ; //禁止操作的指令
// public static SQLiteHelper SQLiteHelpers = null; //定义数据库
// public static readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\800COMPUTER.db"; //数据库路径
public static async Task Main ( )
{
NetFwManger . AllowPort ( 7 7 9 0 , "TCP" ) ; //开放7790端口
TcpService service = new TcpService ( ) ;
service . Connecting = ( client , e ) = > { return EasyTask . CompletedTask ; } ; //有客户端正在连接
service . Connected = ( client , e ) = > { return EasyTask . CompletedTask ; } ; //有客户端成功连接
service . Closing = ( client , e ) = > { return EasyTask . CompletedTask ; } ; //有客户端正在断开连接,只有当主动断开时才有效。
service . Closed = ( client , e ) = > { return EasyTask . CompletedTask ; } ; //有客户端断开连接
service . Received = ( client , e ) = >
{
MainWindowViewModel . RX + + ;
string SYSAPI = e . ByteBlock . Span . ToString ( Encoding . ASCII ) . Substring ( 0 , 5 ) ;
string DAT = e . ByteBlock . Span . ToString ( Encoding . UTF8 ) . Substring ( 5 ) ;
string SYSDAT = "" ; // = e.ByteBlock.Span.ToString(Encoding.ASCII).Substring(5);
string SYSKEY = "" ;
if ( DAT . Length > = 1 6 ) SYSKEY = DAT . Substring ( 0 , 1 6 ) ;
if ( DAT . Length > 1 6 ) SYSDAT = DAT . Substring ( 1 6 ) ;
//LogGing.LogSQLDATA("800", "TcpServer", "API:"+ SYSAPI);
if ( SYSAPI = = "SC800" )
{
Dictionary < string , object > Chart_new = new Dictionary < string , object > ( ) ; //缓存函数
Chart_new . Add ( "MACHINE" , MainWindowViewModel . S01 ) ;
Chart_new . Add ( "GROUP" , MainWindowViewModel . S05 ) ;
Chart_new . Add ( "SYSKEY" , MainWindowViewModel . SYSKEY ) ;
Chart_new . Add ( "TIME" , MainWindowViewModel . SYSTime ) ;
client . SendAsync ( "SC800" + "[" + MainWindowViewModel . S01 + "]" + Chart_new . ToJsonString ( ) ) ;
MainWindowViewModel . TX + + ;
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
else if ( SYSAPI = = "SC810" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
Dictionary < string , object > WorkOrder_dat ;
WorkOrder_dat = SerializeConvert . JsonDeserializeFromString < Dictionary < string , object > > ( SYSDAT ) ;
//WorkOrder_dat.GetValue("WorkOrder");
bool dat_w = SQLDATA . WorkOrder (
WorkOrder_dat . GetValue ( "WorkOrder" ) . ToString ( ) ,
WorkOrder_dat . GetValue ( "ProgramName" ) . ToString ( ) ,
WorkOrder_dat . GetValue ( "StartTime" ) . ToString ( ) ,
WorkOrder_dat . GetValue ( "EndTime" ) . ToString ( ) ,
WorkOrder_dat . GetValue ( "Time" ) . ToString ( ) ,
WorkOrder_dat . GetValue ( "Remark" ) . ToString ( ) ,
WorkOrder_dat . GetValue ( "lock" ) . ToString ( ) ,
WorkOrder_dat . GetValue ( "State" ) . ToString ( ) ,
WorkOrder_dat . GetValue ( "ProgramID" ) . ToString ( ) ,
WorkOrder_dat . GetValue ( "color" ) . ToString ( ) ,
WorkOrder_dat . GetValue ( "Dyelot" ) . ToString ( ) ) ;
if ( ! dat_w )
{
client . SendAsync ( "SC910" + "[" + MainWindowViewModel . S01 + "]" +
WorkOrder_dat . GetValue ( "WorkOrder" ) . ToString ( ) ) ;
}
else
{
client . SendAsync ( "SC810" + "[" + MainWindowViewModel . S01 + "]" +
WorkOrder_dat . GetValue ( "WorkOrder" ) . ToString ( ) ) ; MainWindowViewModel . TX + + ;
}
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
catch ( Exception ex )
{
client . SendAsync ( "SC990" + "[" + MainWindowViewModel . S01 + "]" + ex ) ;
}
}
else { client . SendAsync ( "SC999" ) ; }
} //WorkOrder表信息检查写入
else if ( SYSAPI = = "SC811" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
DataTable WorkOrder_dat ;
WorkOrder_dat = SerializeConvert . JsonDeserializeFromString < DataTable > ( SYSDAT ) ;
bool dat_w = SQLDATA . WorkOderStep ( WorkOrder_dat ) ;
if ( ! dat_w )
{
client . SendAsync ( "SC911" + "[" + MainWindowViewModel . S01 + "]" +
WorkOrder_dat . Select ( ) . First ( ) . Field < object > ( "WorkOrder" ) ) ;
}
else
{
client . SendAsync ( "SC811" + "[" + MainWindowViewModel . S01 + "]" +
WorkOrder_dat . Select ( ) . First ( ) . Field < object > ( "WorkOrder" ) ) ;
MainWindowViewModel . TX + + ;
}
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
catch ( Exception ex )
{
client . SendAsync ( "SC991" + "[" + MainWindowViewModel . S01 + "]" + ex ) ;
}
}
else { client . SendAsync ( "SC999" ) ; }
} //WorkOrderstep表信息检查写入
else if ( SYSAPI = = "SC812" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
DataTable WorkOrder_dat ;
WorkOrder_dat = SerializeConvert . JsonDeserializeFromString < DataTable > ( SYSDAT ) ;
MainWindow . SQLiteHelpers . InsertData ( "WorkorderSet" ,
MainWindow . SQLiteHelpers . DataTableToDictionary ( WorkOrder_dat ) ) ; //行插入
MainWindowViewModel . TX + + ;
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
catch ( Exception ex )
{
client . SendAsync ( "SC992" + "[" + MainWindowViewModel . S01 + "]" + ex ) ;
}
}
else { client . SendAsync ( "SC999" ) ; }
} //WorkOrderset表信息检查写入
else if ( SYSAPI = = "SC813" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
DataTable Dyelot_dat ;
Dyelot_dat = SerializeConvert . JsonDeserializeFromString < DataTable > ( SYSDAT ) ;
bool dat_w = SQLDATA . Dyelot ( Dyelot_dat ) ;
if ( ! dat_w )
{
client . SendAsync ( "SC913" + "[" + MainWindowViewModel . S01 + "]" +
Dyelot_dat . Select ( ) . First ( ) . Field < object > ( "Dyelot" ) ) ;
}
else
{
client . SendAsync ( "SC813" + "[" + MainWindowViewModel . S01 + "]" +
Dyelot_dat . Select ( ) . First ( ) . Field < object > ( "Dyelot" ) ) ;
MainWindowViewModel . TX + + ;
}
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
catch ( Exception ex ) { client . SendAsync ( "SC993" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //写入领料单
else if ( SYSAPI = = "SC820" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
if ( SYSDAT . Length = = 2 1 )
{
SYSDAT = SYSDAT . Substring ( 1 , 1 9 ) ;
DateTime dt ;
if ( DateTime . TryParse ( SYSDAT , out dt ) )
SetLocalDateTime ( dt ) ;
}
client . SendAsync ( "SC820" + "[" + DateTime . Now . ToString ( "yyyy/MM/dd HH:mm:ss" ) + "]" ) ;
MainWindowViewModel . TX + + ;
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
catch ( Exception ex ) { client . SendAsync ( "SC920" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //设置系统时间
else if ( SYSAPI = = "SC821" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
Dictionary < string , object > dat_821 ;
dat_821 = SerializeConvert . JsonDeserializeFromString < Dictionary < string , object > > ( SYSDAT ) ;
if ( dat_821 . GetValue ( "INSTRUCTION" ) . ToString ( ) = = "START" )
{
MainWindowViewModel . Dyelot_dat = MainWindow . SQLiteHelpers . ExecuteDataSet ( "select * from Dyelot where WorkOrder = '" +
dat_821 . GetValue ( "WorkOrder" ) . ToString ( ) + "'" , null ) . Tables [ 0 ] ;
var DT_Set = MainWindow . SQLiteHelpers . ExecuteDataSet ( "select * from WorkOrderSet where WorkOrder = '" +
dat_821 . GetValue ( "WorkOrder" ) . ToString ( ) + "'" , null ) . Tables [ 0 ] . Rows [ 0 ] ;
MainWindowViewModel . Updata_dtm ( "1020" , DT_Set . Field < int > ( "PumpSpeed" ) ) ;
MainWindowViewModel . Updata_dtm ( "1030" , DT_Set . Field < int > ( "Swing" ) ) ;
MainWindowViewModel . Updata_dtm ( "1021" , DT_Set . Field < int > ( "Blower" ) ) ;
MainWindowViewModel . Updata_dtm ( "1025" , DT_Set . Field < int > ( "ClothWheel" ) ) ;
MainWindowViewModel . Updata_dtm ( "1026" , DT_Set . Field < int > ( "ClothWheel" ) ) ;
MainWindowViewModel . Updata_dtm ( "1027" , DT_Set . Field < int > ( "ClothWheel" ) ) ;
MainWindowViewModel . Updata_dtm ( "1028" , DT_Set . Field < int > ( "ClothWheel" ) ) ;
MainWindowViewModel . Updata_dtm ( "1029" , DT_Set . Field < int > ( "ClothWheel" ) ) ;
MainWindowViewModel . Updata_dtm ( "1035" , DT_Set . Field < int > ( "ClothWheel" ) ) ;
MainWindowViewModel . Updata_dtm ( "1036" , DT_Set . Field < int > ( "ClothWheel" ) ) ;
MainWindowViewModel . Updata_dtm ( "1037" , DT_Set . Field < int > ( "ClothWheel" ) ) ;
MainWindowViewModel . Updata_dtm ( "1038" , DT_Set . Field < int > ( "ClothWheel" ) ) ;
MainWindowViewModel . Updata_dtm ( "1039" , DT_Set . Field < int > ( "ClothWheel" ) ) ;
MainWindowViewModel . Updata_dtm ( "1040" , DT_Set . Field < int > ( "ClothWheel" ) ) ;
MainWindowViewModel . Updata_dtm ( "1041" , DT_Set . Field < int > ( "ClothWheel" ) ) ;
client . SendAsync ( "SC821" + SYSKEY + SYSDAT ) ;
}
else if ( dat_821 . GetValue ( "INSTRUCTION" ) . ToString ( ) = = "STOP" )
{
MainWindowViewModel . WORK_RUN = 0 ; //停止
MainWindowViewModel . DIDETime = 0 ;
client . SendAsync ( "SC821" + SYSKEY + SYSDAT ) ;
}
else if ( dat_821 . GetValue ( "INSTRUCTION" ) . ToString ( ) = = "PAUSE" )
{
MainWindowViewModel . WORK_RUN = 1 ; //暂停
MainWindowViewModel . errTabler . Clear ( ) ;
client . SendAsync ( "SC821" + SYSKEY + SYSDAT ) ;
}
else if ( dat_821 . GetValue ( "INSTRUCTION" ) . ToString ( ) = = "CONTINUE" )
{
MainWindowViewModel . errTabler . Clear ( ) ;
MainWindowViewModel . WORK_RUN = 2 ; //
//
client . SendAsync ( "SC821" + SYSKEY + SYSDAT ) ;
} //运行
else if ( dat_821 . GetValue ( "INSTRUCTION" ) . ToString ( ) = = "JUMP" )
{
MainWindowViewModel . RUN_STEPID = Convert . ToInt16 ( dat_821 . GetValue ( "ID" ) ) ; //步骤号
MainWindowViewModel . STEP_START ( dat_821 . GetValue ( "Numder" ) . ToString ( ) , Convert . ToDouble ( dat_821 . GetValue ( "P1" ) ) ,
Convert . ToDouble ( dat_821 . GetValue ( "P2" ) ) , Convert . ToDouble ( dat_821 . GetValue ( "P3" ) ) ,
Convert . ToDouble ( dat_821 . GetValue ( "P4" ) ) , Convert . ToDouble ( dat_821 . GetValue ( "P5" ) ) ) ;
} //跳步
else if ( dat_821 . GetValue ( "INSTRUCTION" ) . ToString ( ) = = "INSERT" )
{
int d = Convert . ToInt16 ( dat_821 . GetValue ( "ID" ) ) ;
//SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
//SQLiteHelpers.Open(); //打开数据库
/**插入行**/
string ProgramID = MainWindow . SQLiteHelpers . ExecuteScalar ( "select ProgramID from RUN where Step = '1'" , null ) . ToString ( ) ;
string ProgramNAME = MainWindow . SQLiteHelpers . ExecuteScalar ( "select Program from RUN where Step = '1'" , null ) . ToString ( ) ;
// TechnologicalProcessView.SQLiteHelpers.Close();
DataRow dr = MainWindowViewModel . dt_TP . NewRow ( ) ; //添加表数据
dr [ "ProgramID" ] = ProgramID ;
dr [ "Program" ] = ProgramNAME ;
MainWindowViewModel . dt_TP . Rows . InsertAt ( dr , d - 1 ) ;
/**编辑行号**/
TechnologicalProcessView . Dat ( ) ;
/**编辑行信息**/
DataRow drtt = MainWindowViewModel . dt_TP . Rows [ d - 1 ] ;
drtt . BeginEdit ( ) ;
drtt [ "StepID" ] = dat_821 . GetValue ( "StepID" ) . ToString ( ) ;
drtt [ "StepName" ] = dat_821 . GetValue ( "StepName" ) . ToString ( ) ;
drtt [ "ParameterName" ] = dat_821 . GetValue ( "ParameterName" ) . ToString ( ) ;
drtt [ "Parameter1" ] = dat_821 . GetValue ( "Parameter1" ) . ToString ( ) ;
drtt [ "Parameter2" ] = dat_821 . GetValue ( "Parameter2" ) . ToString ( ) ;
drtt [ "Parameter3" ] = dat_821 . GetValue ( "Parameter3" ) . ToString ( ) ;
drtt [ "Parameter4" ] = dat_821 . GetValue ( "Parameter4" ) . ToString ( ) ;
drtt [ "Parameter5" ] = dat_821 . GetValue ( "Parameter5" ) . ToString ( ) ;
drtt [ "RUN" ] = "0" ;
drtt [ "DYELOT" ] = MainWindowViewModel . WorkNumder ;
drtt . EndEdit ( ) ;
// var _TechnologicalProcessView = Application.Current.Windows.Cast<UserControl>().FirstOrDefault(window => window is TechnologicalProcessView) as TechnologicalProcessView;//跨页面
// _TechnologicalProcessView.Grid.ItemsSource = TechnologicalProcessView.sql.Tables[0].DefaultView;
//_TechnologicalProcessView.Grid.SelectedIndex = -1;
/**存入信息**/
/**存入信息**/
// SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
// SQLiteHelpers.Open(); //打开数据库
MainWindow . SQLiteHelpers . Delete ( "RUN" , null , null ) ;
for ( int i = 0 ; i < MainWindowViewModel . dt_TP . Rows . Count ; i + + )
{
DataRow dt = MainWindowViewModel . dt_TP . Rows [ i ] ; //行转换
dt . BeginEdit ( ) ; //添加订单号
dt [ "DYELOT" ] = MainWindowViewModel . WorkNumder ;
dt . EndEdit ( ) ;
MainWindow . SQLiteHelpers . InsertData ( "RUN" , MainWindow . SQLiteHelpers . ToDictionary ( dt ) ) ; //行插入
}
//SQLiteHelpers.Close(); //关闭连接
client . SendAsync ( "SC831" + "[" + MainWindowViewModel . S01 + "]" + MainWindowViewModel . dt_TP . ToJsonString ( ) ) ;
MainWindowViewModel . TX + + ;
} //插入
else if ( dat_821 . GetValue ( "INSTRUCTION" ) . ToString ( ) = = "EDIT" )
{
int n = Convert . ToInt16 ( dat_821 . GetValue ( "ID" ) . ToString ( ) ) ;
/**编辑行信息**/
DataRow dr = MainWindowViewModel . dt_TP . Rows [ n - 1 ] ;
dr . BeginEdit ( ) ;
dr [ "StepID" ] = dat_821 . GetValue ( "StepID" ) . ToString ( ) ;
dr [ "StepName" ] = dat_821 . GetValue ( "StepName" ) . ToString ( ) ;
dr [ "ParameterName" ] = dat_821 . GetValue ( "ParameterName" ) . ToString ( ) ;
dr [ "Parameter1" ] = dat_821 . GetValue ( "Parameter1" ) . ToString ( ) ;
dr [ "Parameter2" ] = dat_821 . GetValue ( "Parameter2" ) . ToString ( ) ;
dr [ "Parameter3" ] = dat_821 . GetValue ( "Parameter3" ) . ToString ( ) ;
dr [ "Parameter4" ] = dat_821 . GetValue ( "Parameter4" ) . ToString ( ) ;
dr [ "Parameter5" ] = dat_821 . GetValue ( "Parameter5" ) . ToString ( ) ;
dr . EndEdit ( ) ;
var _ TechnologicalProcessView = Application . Current . Windows . Cast < UserControl > ( ) . FirstOrDefault ( window = > window is TechnologicalProcessView ) as TechnologicalProcessView ; //跨页面
// _TechnologicalProcessView.Grid.ItemsSource = TechnologicalProcessView.sql.Tables[0].DefaultView;
_ TechnologicalProcessView . GridSTEP . SelectedIndex = - 1 ;
/**存入信息**/
//SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
//SQLiteHelpers.Open(); //打开数据库
MainWindow . SQLiteHelpers . Delete ( "RUN" , null , null ) ;
DataTable data_t = MainWindowViewModel . dt_TP . Clone ( ) ;
for ( int i = 0 ; i < MainWindowViewModel . dt_TP . Rows . Count ; i + + )
{
DataRow dt = MainWindowViewModel . dt_TP . Rows [ i ] ; //行转换
dt . BeginEdit ( ) ; //添加订单号
dt [ "DYELOT" ] = MainWindowViewModel . WorkNumder ;
dt . EndEdit ( ) ;
MainWindow . SQLiteHelpers . InsertData ( "RUN" , MainWindow . SQLiteHelpers . ToDictionary ( dt ) ) ; //行插入
} //SQLiteHelpers.Close(); //关闭连接
client . SendAsync ( "SC831" + "[" + MainWindowViewModel . S01 + "]" + MainWindowViewModel . dt_TP . ToJsonString ( ) ) ;
MainWindowViewModel . TX + + ;
} //编辑
else if ( dat_821 . GetValue ( "INSTRUCTION" ) . ToString ( ) = = "DELETE" )
{
int d = Convert . ToInt16 ( dat_821 . GetValue ( "ID" ) ) ;
MainWindowViewModel . dt_TP . Rows . RemoveAt ( d - 1 ) ;
TechnologicalProcessView . Dat ( ) ;
/**存入信息**/
//SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
//SQLiteHelpers.Open(); //打开数据库
MainWindow . SQLiteHelpers . Delete ( "RUN" , null , null ) ;
DataTable data_t = MainWindowViewModel . dt_TP . Clone ( ) ;
for ( int i = 0 ; i < MainWindowViewModel . dt_TP . Rows . Count ; i + + )
{
DataRow dt = MainWindowViewModel . dt_TP . Rows [ i ] ; //行转换
dt . BeginEdit ( ) ; //添加订单号
dt [ "DYELOT" ] = MainWindowViewModel . WorkNumder ;
dt . EndEdit ( ) ;
MainWindow . SQLiteHelpers . InsertData ( "RUN" , MainWindow . SQLiteHelpers . ToDictionary ( dt ) ) ; //行插入
}
//SQLiteHelpers.Close(); //关闭连接
client . SendAsync ( "SC831" + "[" + MainWindowViewModel . S01 + "]" + MainWindowViewModel . dt_TP . ToJsonString ( ) ) ;
MainWindowViewModel . TX + + ;
} //删除
else
{
client . SendAsync ( "SC821" + SYSKEY + SYSDAT ) ;
}
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
catch ( Exception ex ) { client . SendAsync ( "SC921" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //启停跳步指令
else if ( SYSAPI = = "SC827" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
// SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
// SQLiteHelpers.Open(); //打开数据库
string sql_script = "select * from Dyelot where State = '201' AND WorkOrder = '" +
MainWindowViewModel . WorkNumder + "'" ;
DataTable dt = MainWindow . SQLiteHelpers . ExecuteDataSet ( sql_script , null ) . Tables [ 0 ] ; //转换
//SQLiteHelpers.Close(); //关闭连接
client . SendAsync ( "SC827" + "[" + MainWindowViewModel . S01 + "]" + dt . ToJsonString ( ) ) ;
MainWindowViewModel . TX + + ;
}
catch ( Exception ex ) { client . SendAsync ( "SC927" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //呼叫领料单
else if ( SYSAPI = = "SC828" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
Dictionary < string , object > Dyelot_dat ;
Dyelot_dat = SerializeConvert . JsonDeserializeFromString < Dictionary < string , object > > ( SYSDAT ) ;
// SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
// SQLiteHelpers.Open(); //打开数据库
Dictionary < string , object > Product_data = new Dictionary < string , object > ( ) ; //缓存函数
Product_data . Add ( "State" , Dyelot_dat . GetValue ( "State" ) ) ;
if ( Dyelot_dat . GetValue ( "State" ) . ToString ( ) = = "301" )
{
Product_data . Add ( "Amount" , Dyelot_dat . GetValue ( "Amount" ) ) ;
Product_data . Add ( "DispenseEndTime" , Dyelot_dat . GetValue ( "DispenseEndTime" ) ) ;
}
MainWindow . SQLiteHelpers . Update ( "Dyelot" , Product_data , "Dyelot ='" + Dyelot_dat . GetValue ( "Dyelot" )
+ "' AND Step ='" + Dyelot_dat . GetValue ( "Step" ) + "' AND ProductCode='" +
Dyelot_dat . GetValue ( "ProductCode" ) + "'" , null ) ;
MainWindowViewModel . Dyelot_dat = MainWindow . SQLiteHelpers . ExecuteDataSet (
"select * from Dyelot where WorkOrder = '" +
MainWindowViewModel . WorkNumder + "'" , null ) . Tables [ 0 ] ;
int dt = MainWindow . SQLiteHelpers . ExecuteDataSet ( "select * from Dyelot where Dyelot='" +
Dyelot_dat . GetValue ( "Dyelot" ) + "' AND State ='201'" , null ) . Tables [ 0 ] . Rows . Count ;
if ( dt = = 0 ) MainWindowViewModel . CALL_FR = false ;
//SQLiteHelpers.Close(); //关闭连接
client . SendAsync ( "SC828" + SYSKEY + SYSDAT ) ;
MainWindowViewModel . TX + + ;
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
catch ( Exception ex ) { client . SendAsync ( "SC928" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //输送状态指令
else if ( SYSAPI = = "SC829" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
Dictionary < string , object > dat_829 ;
dat_829 = SerializeConvert . JsonDeserializeFromString < Dictionary < string , object > > ( SYSDAT ) ;
if ( dat_829 . GetValue ( "NAME" ) . ToString ( ) = = "LOCK" ) {
if ( dat_829 . GetValue ( "VALUE" ) . ToString ( ) = = "True" )
{
MainWindowViewModel . _L ock_bool = true ;
client . SendAsync ( "SC829" + SYSKEY + SYSDAT ) ;
}
else
{
MainWindowViewModel . _L ock_bool = false ;
client . SendAsync ( "SC829" + SYSKEY + SYSDAT ) ;
}
}
else if ( dat_829 . GetValue ( "NAME" ) . ToString ( ) = = "AUTO" )
{
if ( dat_829 . GetValue ( "VALUE" ) . ToString ( ) = = "True" )
{
MainWindowViewModel . _ AUTO_bool = true ;
client . SendAsync ( "SC829" + SYSKEY + SYSDAT ) ;
}
else
{
MainWindowViewModel . _ AUTO_bool = false ;
client . SendAsync ( "SC829" + SYSKEY + SYSDAT ) ;
}
}
MainWindowViewModel . TX + + ;
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
catch ( Exception ex ) { client . SendAsync ( "SC929" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //锁指令
else if ( SYSAPI = = "SC830" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
Dictionary < string , object > Chart_new = new Dictionary < string , object > ( ) ; //缓存函数
Chart_new . Add ( "ERR" , MainWindowViewModel . ERR_JOG ) ;
Chart_new . Add ( "UserButton" , MainWindowViewModel . _ UserButton ) ;
Chart_new . Add ( "UserInfoStart" , MainWindowViewModel . UserInfoStart ) ;
Chart_new . Add ( "UserInfo" , MainWindowViewModel . UserInfo ) ;
Chart_new . Add ( "WORK_RUN" , MainWindowViewModel . WORK_RUN ) ;
Chart_new . Add ( "RUN_STEPID" , MainWindowViewModel . RUN_STEPID ) ;
Chart_new . Add ( "LOCK" , MainWindowViewModel . _L ock_bool ) ;
Chart_new . Add ( "CALL" , MainWindowViewModel . CALL_FR ) ;
Chart_new . Add ( "Status" , MainWindowViewModel . StatusStr ) ;
Chart_new . Add ( "Machine" , MainWindowViewModel . S01 ) ;
Chart_new . Add ( "WorkNumder" , MainWindowViewModel . WorkNumder ) ;
Chart_new . Add ( "Time" , MainWindowViewModel . SYSTime ) ;
Chart_new . Add ( "Process" , MainWindowViewModel . ProgramName ) ;
Chart_new . Add ( "Step" , MainWindowViewModel . Process_step ) ;
Chart_new . Add ( "MST" , MainWindowViewModel . TEMP_co ) ;
Chart_new . Add ( "MTT" , MainWindowViewModel . Selet_dtm ( "1010" ) ) ;
Chart_new . Add ( "MTL" , MainWindowViewModel . Selet_dtm ( "1015" ) ) ;
Chart_new . Add ( "MTH" , MainWindowViewModel . Selet_dtm ( "1009" ) ) ;
Chart_new . Add ( "MUT" , MainWindowViewModel . Selet_dtm ( "1011" ) ) ;
Chart_new . Add ( "STTA" , MainWindowViewModel . Selet_dtm ( "1012" ) ) ;
Chart_new . Add ( "STLA" , MainWindowViewModel . Selet_dtm ( "1017" ) ) ;
Chart_new . Add ( "STTB" , MainWindowViewModel . Selet_dtm ( "1013" ) ) ;
Chart_new . Add ( "STLB" , MainWindowViewModel . Selet_dtm ( "1018" ) ) ;
Chart_new . Add ( "STTC" , MainWindowViewModel . Selet_dtm ( "1014" ) ) ;
Chart_new . Add ( "STLC" , MainWindowViewModel . Selet_dtm ( "1019" ) ) ;
client . SendAsync ( "SC830" + "[" + MainWindowViewModel . S01 + "]" + Chart_new . ToJsonString ( ) ) ;
MainWindowViewModel . TX + + ;
MainWindowViewModel . UserInfoStart = 9 0 0 ;
}
catch ( Exception ex ) { client . SendAsync ( "SC931" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //当前信息
else if ( SYSAPI = = "SC831" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
client . SendAsync ( "SC831" + "[" + MainWindowViewModel . S01 + "]" + MainWindowViewModel . dt_TP . ToJsonString ( ) ) ;
MainWindowViewModel . TX + + ;
}
catch ( Exception ex ) { client . SendAsync ( "SC931" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //当前工作表
else if ( SYSAPI = = "SC832" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
client . SendAsync ( "SC832" + "[" + MainWindowViewModel . S01 + "]" + MainWindowViewModel . SYSlog ) ;
MainWindowViewModel . TX + + ;
}
catch ( Exception ex ) { client . SendAsync ( "SC932" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //当前细节信息
else if ( SYSAPI = = "SC833" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
//SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
//SQLiteHelpers.Open(); //打开数据库
string sql_script = "select * from Dyelot where WorkOrder = '" + MainWindowViewModel . WorkNumder + "'" ;
DataTable dt = MainWindow . SQLiteHelpers . ExecuteDataSet ( sql_script , null ) . Tables [ 0 ] ; //转换
// SQLiteHelpers.Close(); //关闭连接
client . SendAsync ( "SC833" + "[" + MainWindowViewModel . S01 + "]" + dt . ToJsonString ( ) ) ;
MainWindowViewModel . TX + + ;
}
catch ( Exception ex ) { client . SendAsync ( "SC933" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //当前领料单
else if ( SYSAPI = = "SC851" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
client . SendAsync ( "SC851" + "[" + MainWindowViewModel . S01 + "]" + JsonConvert . SerializeObject ( MainWindowViewModel . dt_d ) ) ; //数字开关信息
}
catch ( Exception ex ) { client . SendAsync ( "SC951" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //数字开关表
else if ( SYSAPI = = "SC852" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
client . SendAsync ( "SC852" + "[" + MainWindowViewModel . S01 + "]" + MainWindowViewModel . dt_a . ToJsonString ( ) ) ; //寄存器信息
}
catch ( Exception ex ) { client . SendAsync ( "SC952" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //寄存器表
else if ( SYSAPI = = "SC853" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
client . SendAsync ( "SC853" + "[" + MainWindowViewModel . S01 + "]" + MainWindowViewModel . dt_m . ToJsonString ( ) ) ; //缓存信息
}
catch ( Exception ex ) { client . SendAsync ( "SC953" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //缓存表
else if ( SYSAPI = = "SC854" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
client . SendAsync ( "SC854" + "[" + MainWindowViewModel . S01 + "]" + MainWindowViewModel . dt_ParameterSet . ToJsonString ( ) ) ; //缓存信息
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
catch ( Exception ex ) { client . SendAsync ( "SC954" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //程序设置表
else if ( SYSAPI = = "SC855" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
client . SendAsync ( "SC855" + "[" + MainWindowViewModel . S01 + "]" + MainWindowViewModel . dt_SysSet . ToJsonString ( ) ) ; //缓存信息
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
catch ( Exception ex ) { client . SendAsync ( "SC955" + "[" + MainWindowViewModel . S01 + "]" + ex ) ; }
}
else { client . SendAsync ( "SC999" ) ; }
} //系统设置表
else if ( SYSAPI = = "SC859" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
SQLiteHelper SQLiteHelpersLOG = new SQLiteHelper ( "\\DataBase\\LOG.db" ) ; //数据库连接路径
Dictionary < string , object > dat_859 ;
dat_859 = SerializeConvert . JsonDeserializeFromString < Dictionary < string , object > > ( SYSDAT ) ;
if ( dat_859 . GetValue ( "INSTRUCTION" ) . ToString ( ) = = "SERVER" )
{
//SQLiteHelper SQLiteHelpersLOG = new SQLiteHelper("\\DataBase\\LOG.db"); //数据库连接路径
SQLiteHelpersLOG . Open ( ) ; //打开数据库
DataTable dt_ = SQLiteHelpersLOG . ExecuteDataSet ( "select * from SERVER where TIME >" +
DateTime . Parse ( dat_859 . GetValue ( "TIME_S" ) . ToString ( ) ) . ToString ( "yyyy/MM/dd HH:mm:ss" ) + "TIME <" +
DateTime . Parse ( dat_859 . GetValue ( "TIME_E" ) . ToString ( ) ) . ToString ( "yyyy/MM/dd HH:mm:ss" ) , null ) . Tables [ 0 ] ;
SQLiteHelpersLOG . Close ( ) ; //关闭数据库
client . SendAsync ( "SC859" + "[" + MainWindowViewModel . S01 + "]" + dt_ . ToJsonString ( ) ) ; //缓存信息
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
else if ( dat_859 . GetValue ( "INSTRUCTION" ) . ToString ( ) = = "OperationLog" )
{
//SQLiteHelpers = new SQLiteHelper("\\DataBase\\LOG.db"); //数据库连接路径
SQLiteHelpersLOG . Open ( ) ; //打开数据库
DataTable dt_ = SQLiteHelpersLOG . ExecuteDataSet ( "select * from OperationLog where TIME >" +
DateTime . Parse ( dat_859 . GetValue ( "TIME_S" ) . ToString ( ) ) . ToString ( "yyyy/MM/dd HH:mm:ss" ) + "TIME <" +
DateTime . Parse ( dat_859 . GetValue ( "TIME_E" ) . ToString ( ) ) . ToString ( "yyyy/MM/dd HH:mm:ss" ) , null ) . Tables [ 0 ] ;
SQLiteHelpersLOG . Close ( ) ; //关闭数据库
client . SendAsync ( "SC859" + "[" + MainWindowViewModel . S01 + "]" + dt_ . ToJsonString ( ) ) ; //缓存信息
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
else if ( dat_859 . GetValue ( "INSTRUCTION" ) . ToString ( ) = = "IOLog" )
{
//SQLiteHelpers = new SQLiteHelper("\\DataBase\\LOG.db"); //数据库连接路径
SQLiteHelpersLOG . Open ( ) ; //打开数据库
DataTable dt_ = SQLiteHelpersLOG . ExecuteDataSet ( "select * from IOLog where TIME >" +
DateTime . Parse ( dat_859 . GetValue ( "TIME_S" ) . ToString ( ) ) . ToString ( "yyyy/MM/dd HH:mm:ss" ) + "TIME <" +
DateTime . Parse ( dat_859 . GetValue ( "TIME_E" ) . ToString ( ) ) . ToString ( "yyyy/MM/dd HH:mm:ss" ) , null ) . Tables [ 0 ] ;
SQLiteHelpersLOG . Close ( ) ; //关闭数据库
client . SendAsync ( "SC859" + "[" + MainWindowViewModel . S01 + "]" + dt_ . ToJsonString ( ) ) ; //缓存信息
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
else if ( dat_859 . GetValue ( "INSTRUCTION" ) . ToString ( ) = = "ERRLog" )
{
//SQLiteHelpers = new SQLiteHelper("\\DataBase\\LOG.db"); //数据库连接路径
SQLiteHelpersLOG . Open ( ) ; //打开数据库
DataTable dt_ = SQLiteHelpersLOG . ExecuteDataSet ( "select * from ERRLog where TIME >" +
DateTime . Parse ( dat_859 . GetValue ( "TIME_S" ) . ToString ( ) ) . ToString ( "yyyy/MM/dd HH:mm:ss" ) + "TIME <" +
DateTime . Parse ( dat_859 . GetValue ( "TIME_E" ) . ToString ( ) ) . ToString ( "yyyy/MM/dd HH:mm:ss" ) , null ) . Tables [ 0 ] ;
SQLiteHelpersLOG . Close ( ) ; //关闭数据库
client . SendAsync ( "SC859" + "[" + MainWindowViewModel . S01 + "]" + dt_ . ToJsonString ( ) ) ; //缓存信息
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
}
catch ( Exception ex )
{
client . SendAsync ( "SC959" + "[" + MainWindowViewModel . S01 + "]" + ex ) ;
}
}
else { client . SendAsync ( "SC999" ) ; }
} //读取设备日志
else if ( SYSAPI = = "SC861" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
Dictionary < string , object > dat_861 ;
dat_861 = SerializeConvert . JsonDeserializeFromString < Dictionary < string , object > > ( SYSDAT ) ;
Dictionary < string , object > datagrid_v = new Dictionary < string , object > ( ) ; //缓存函数
datagrid_v . Add ( "Value" , dat_861 . GetValue ( "Value" ) ) ;
// SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
// SQLiteHelpers.Open(); //打开数据库
MainWindow . SQLiteHelpers . Update ( "Parameters" , datagrid_v , "ParameterID ='" + dat_861 . GetValue ( "ID" ) + "'" , null ) ; //更新
MainWindowViewModel . dt_ParameterSet = MainWindow . SQLiteHelpers . ExecuteDataSet ( "select * from Parameters order by ParameterID asc" , null ) . Tables [ 0 ] ;
//SQLiteHelpers.Close();//关闭数据库
client . SendAsync ( "SC854" + "[" + MainWindowViewModel . S01 + "]" + MainWindowViewModel . dt_ParameterSet . ToJsonString ( ) ) ; //缓存信息
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
catch ( Exception ex )
{
client . SendAsync ( "SC961" + "[" + MainWindowViewModel . S01 + "]" + ex ) ;
}
}
else { client . SendAsync ( "SC999" ) ; }
} //修改软件设置
else if ( SYSAPI = = "SC862" )
{
if ( SYSKEY = = MainWindowViewModel . SYSKEY )
{
try
{
Dictionary < string , object > dat_862 ;
dat_862 = SerializeConvert . JsonDeserializeFromString < Dictionary < string , object > > ( SYSDAT ) ;
if ( ( ( IList ) Prohibit ) . Contains ( dat_862 . GetValue ( "ID" ) ) ) //是否允许操作
{
client . SendAsync ( "SC980" + "[" + MainWindowViewModel . S01 + "]" + "Settings that are not allowed to be modified remotely" ) ;
}
else
{
Dictionary < string , object > datagrid_v = new Dictionary < string , object > ( ) ; //缓存函数
datagrid_v . Add ( "Value" , dat_862 . GetValue ( "Value" ) ) ;
// SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
// SQLiteHelpers.Open(); //打开数据库
MainWindow . SQLiteHelpers . Update ( "System" , datagrid_v , "ParameterID ='" + dat_862 . GetValue ( "ID" ) + "'" , null ) ; //更新
MainWindowViewModel . dt_SysSet = MainWindow . SQLiteHelpers . ExecuteDataSet ( "select * from System order by ParameterID asc" , null ) . Tables [ 0 ] ;
//SQLiteHelpers.Close();//关闭数据库
client . SendAsync ( "SC855" + "[" + MainWindowViewModel . S01 + "]" + MainWindowViewModel . dt_SysSet . ToJsonString ( ) ) ; //缓存信息
APILog . DBlog ( client . IP , SYSKEY , SYSAPI , SYSDAT ) ; //记录指令
}
}
catch ( Exception ex )
{
client . SendAsync ( "SC962" + "[" + MainWindowViewModel . S01 + "]" + ex ) ;
}
}
else { client . SendAsync ( "SC999" ) ; }
} //修改系统
return EasyTask . CompletedTask ;
} ;
await service . SetupAsync ( new TouchSocketConfig ( ) //载入配置
. SetMaxBufferSize ( 1 0 2 4 * 1 0 2 4 )
. SetMinBufferSize ( 1 0 2 4 * 6 4 )
. SetListenIPHosts ( new IPHost [ ] { new IPHost ( "tcp://127.0.0.1:7789" ) , new IPHost ( 7 7 9 0 ) } ) //同时监听两个地址
. ConfigureContainer ( a = > //容器的配置顺序应该在最前面
{
//a.AddConsoleLogger();//添加一个控制台日志注入(注意:在maui中控制台日志不可用)
} )
. ConfigurePlugins ( a = >
{
//a.Add<DifferentProtocolPlugin>();
} )
) ;
await service . StartAsync ( ) ; //启动
LogGing . LogGingDATA ( "800SREVER:START" ) ;
}
}
class MyTcpService : TcpService < MyTcpSessionClient >
{
protected override MyTcpSessionClient NewClient ( )
{
return new MyTcpSessionClient ( ) ;
}
}
class MyTcpSessionClient : TcpSessionClient
{
internal void SetDataHandlingAdapter ( SingleStreamDataHandlingAdapter adapter )
{
base . SetAdapter ( adapter ) ;
}
}
/// <summary>
/// 此插件实现,按照不同端口,使用不同适配器。
/// <list type="bullet">
/// <item>7789端口:使用"**"结尾的数据</item>
/// <item>7790端口:使用"##"结尾的数据</item>
/// </list>
/// </summary>
internal class DifferentProtocolPlugin : PluginBase , ITcpConnectingPlugin , ITcpReceivedPlugin
{
public async Task OnTcpConnecting ( ITcpSession client , ConnectingEventArgs e )
{
if ( client is MyTcpSessionClient sessionClient )
{
if ( sessionClient . ServicePort = = 7 7 8 9 )
{
sessionClient . SetDataHandlingAdapter ( new TerminatorPackageAdapter ( "**" ) ) ;
}
else
{
sessionClient . SetDataHandlingAdapter ( new TerminatorPackageAdapter ( "##" ) ) ;
}
}
await e . InvokeNext ( ) ;
}
public async Task OnTcpReceived ( ITcpSession client , ReceivedDataEventArgs e )
{
//如果是自定义适配器,此处解析时,可以判断e.RequestInfo的类型
if ( client is ITcpSessionClient sessionClient )
{
sessionClient . Logger . Info ( $"{sessionClient.GetIPPort()}收到数据,服务器端口:{sessionClient.ServicePort},数据:{e.ByteBlock}" ) ;
}
await e . InvokeNext ( ) ;
}
}
}