-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathselect_or_send.cs
343 lines (320 loc) · 14.6 KB
/
select_or_send.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
using MySql.Data.MySqlClient;
using System;
using System.IO;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace 包装后段测试
{
class select_or_send
{
public static void selectqueue_tomesOruwip(object param) //prom交互线程,异步工作状态 带参数
{
while (true)
{
string uwip = "", materialnumber = "", cmdinfo = "";
if (selectqueue_toprint(ref uwip, ref materialnumber, ref cmdinfo)) //智能打印缓存1张(遇到overpack),其它缓存2张
{
if (materialnumber != null)
{
if (sendmes(uwip)) //prom or lemes
{
UapdateMySqlteauto("teauto.autoscanlabel", "ROBOT");
Thread.Sleep(2500);
}
else
{
UapdateMySqlteauto("teauto.autoscanlabel", "ROBOTCANCEL");
Thread.Sleep(1500);
}
}
else
{
Thread.Sleep(500);
}
}
else
{
Thread.Sleep(500); //Console.WriteLine("休息一会儿!");
}
}
}
static bool selectqueue_toprint(ref string uwip, ref string materialnumber, ref string cmdinfo)//查贴单标记智能缓存队列如果是overpack则缓存1台,否则缓冲2台
{
MySqlConnection conn = new MySqlConnection(Result_back.value_define.MySqlStringteauto);
string SqlCmdString = string.Format("SELECT MTSN,CartonLabel,DTimeThird FROM {0} WHERE CartonLabel IS NOT NULL AND DTimeFourth IS NULL LIMIT 2", "teauto.autoscanlabel");
try //DB Query
{
conn.Open();
MySqlCommand cmd = new MySqlCommand(SqlCmdString, conn);
MySqlDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
if (rd["CartonLabel"].ToString().Equals("5")) //遇到overpack双包机型
{
if (rd["DTimeThird"].ToString().Equals("PRINT"))
{
uwip = rd[0].ToString();
materialnumber = rd[1].ToString();
cmdinfo = rd[2].ToString();
return true;
}
else if (rd["DTimeThird"].ToString().Equals("ROBOTCANCEL")) //遇到送检等PROM错误未能打出标签的情况
{
continue; //取下一条
}
else
{
break; //return false; //等价
}
}
else
{
if (rd["DTimeThird"].ToString().Equals("PRINT"))
{
uwip = rd["MTSN"].ToString();
materialnumber = rd["CartonLabel"].ToString();
cmdinfo = rd["DTimeThird"].ToString();
return true;
}
else
{
continue; //取下一条
}
}
}
return false;
}
catch (Exception err)
{
Console.WriteLine(err);
return false;
}
finally
{
conn.Close();
}
}//查队列标签去发送给mes打印
static bool sendmes(string strdata) //mes处理
{
#region PROM
int delaytime = 200; //发送延时ms
if ((Autoit.AU3_WinExists("系统错误信息", "")) == 1)
{
error_alarm.printscreen();//报警声音,抓取当前屏
SendKeys.SendWait("{F12}"); Thread.Sleep(delaytime);
SendKeys.SendWait("%{F1}"); Thread.Sleep(delaytime);
Autoit.AU3_Send("\n", 1);
return false;
}
Thread.Sleep(delaytime);
Result_back.value_define.Dt = DateTime.Now;
Console.WriteLine("Waiting for PROM is Ready!");
while ((Result_back.value_define.ProcessID = Autoit.AU3_WinGetState("Pro-Make系统", "")) != 15) //激活窗口返回15,后台存在返回7,不存在返回0
{
if (Result_back.value_define.ProcessID == 47) //激活47,后台39,不存在0
{
break;
}
else
{
Thread.Sleep(delaytime); Autoit.AU3_WinActivate("Pro-Make系统", ""); //使之窗口激活最前状态,无返回值
Console.WriteLine("Result_back.value_define.ProcessID=" + Result_back.value_define.ProcessID);
#region 方式一利用循环计算超时
Result_back.value_define.Ts = DateTime.Now.Subtract(Result_back.value_define.Dt);
if (Result_back.value_define.Ts.TotalSeconds <= 20)
{
Console.Write("."); Thread.Sleep(delaytime);
}
else if (Result_back.value_define.Ts.TotalSeconds > 20)
{
Console.WriteLine("Waiting for PROM is Ready Timeout,Skip to countinue , DateTime总共花费{0}ms.", Result_back.value_define.Ts.TotalMilliseconds);
return false;
}
#endregion
}
}
Thread.Sleep(delaytime);
if (strdata.Length == 20 && strdata.Substring(0, 2).ToUpper() == "1S" && strdata.Substring(12, 1).ToUpper() == "P")
{
Autoit.AU3_WinWaitActive("Pro-Make系统", "", 6); //等待激活,限6s ,返回值1成功,0失败
}
Thread.Sleep(delaytime);
Autoit.AU3_Send(strdata + "\r\n", 1); Thread.Sleep(delaytime * 4);
if ((Result_back.value_define.ProcessID = Autoit.AU3_WinExists("系统错误信息", "")) > 0)
{
error_alarm.printscreen();//报警声音,抓取当前屏幕,并且保存文件,可以自动发送F12取消报错,延时100ms
SendKeys.SendWait("{F12}"); Thread.Sleep(delaytime);
SendKeys.SendWait("%{F1}"); Thread.Sleep(delaytime);
Autoit.AU3_Send("\n", 1);
return false;
}
Thread.Sleep(delaytime);
Result_back.value_define.Dt = DateTime.Now; Console.WriteLine("Waiting for PROM finished");
while ((Result_back.value_define.ProcessID = Autoit.AU3_WinExists("系统成功信息", "")) != 1)
{
Thread.Sleep(delaytime); Application.DoEvents(); Console.Write(".");
Result_back.value_define.Ts = DateTime.Now.Subtract(Result_back.value_define.Dt);
if (Result_back.value_define.Ts.TotalSeconds > 50) //系统卡的处理
{
Result_back.value_define.Lockflg = true;
//是否加入报警,待验证效果
//skttiebiaoscan.Skt.Send(Encoding.UTF8.GetBytes("NB\r\n")); //NB , 缺纸
Console.WriteLine("侦测到PROM系统卡,无响应!");
while (Result_back.value_define.Lockflg)
{
if ((Result_back.value_define.ProcessID = Autoit.AU3_WinExists("系统成功信息", "")) != 1)
{
try
{
new System.Media.SoundPlayer("cuo.wav").Play();
}
catch { } //防止不存在音频文件
Thread.Sleep(1000);
}
else
{
Result_back.value_define.Lockflg = false;
return true;
}
}
return false;
}
}
return true;
#endregion
}//mes处理
public static bool UapdateMySqlteauto(string tabname, string cmdinfo) //更新PROM打单或发送贴单机器人完成时间信息
{
MySqlConnection conn = new MySqlConnection(Result_back.value_define.MySqlStringteauto);
string SqlCmdString = "";
if (cmdinfo.Equals("6")) //针对overpack切换
{
SqlCmdString = string.Format("UPDATE {0} SET CartonLabel = '{1}' WHERE CartonLabel IS NOT NULL AND DTimeFourth IS NULL LIMIT 1", tabname, cmdinfo);
}
else if (cmdinfo.Equals("RC"))
{
SqlCmdString = string.Format("UPDATE {0} SET DTimeThird = '{1}' WHERE CartonLabel IS NOT NULL AND DTimeThird IS NULL LIMIT 1", tabname, DateTime.Now.ToString("yyyyMMddHHmmss"));
}
else if (cmdinfo.Equals("ED"))
{
SqlCmdString = string.Format("UPDATE {0} SET DTimeFourth = '{1}' WHERE CartonLabel IS NOT NULL AND DTimeFourth IS NULL LIMIT 1", tabname, DateTime.Now.ToString("yyyyMMddHHmmss"));
}
else if (cmdinfo.Equals("PRINT")) //发送打单
{
//SqlCmdString = string.Format("UPDATE {0} SET DTimeThird = '{1}' WHERE CartonLabel IS NOT NULL AND DTimeThird IS NULL LIMIT 1", tabname, cmdinfo);
SqlCmdString = string.Format("UPDATE {0} SET DTimeSecond = '{1}',DTimeThird = '{2}' WHERE CartonLabel IS NOT NULL AND DTimeThird IS NULL LIMIT 1", tabname, DateTime.Now.ToString("yyyyMMddHHmmss"), cmdinfo);
}
else if (cmdinfo.Equals("ROBOTCANCEL")) //取消贴标
{
SqlCmdString = string.Format("UPDATE {0} SET DTimeThird = '{1}' WHERE CartonLabel IS NOT NULL AND DTimeThird is null LIMIT 1", tabname, cmdinfo);
}
else if (cmdinfo.Equals("ROBOT")) //发送贴标
{
SqlCmdString = string.Format("UPDATE {0} SET DTimeThird = '{1}' WHERE CartonLabel IS NOT NULL AND DTimeThird is null LIMIT 1", tabname, DateTime.Now.ToString("yyyyMMddHHmmss"));
}
else if (cmdinfo.Equals("CLR1"))
{
SqlCmdString = string.Format("UPDATE {0} SET DTimeFirst = '{1}' WHERE DTimeFirst IS NULL", tabname, "T");
}
else if (cmdinfo.Equals("CLR2"))
{
SqlCmdString = string.Format("UPDATE {0} SET DTimeSecond = '{1}' WHERE DTimeSecond IS NULL", tabname, "T");
}
else if (cmdinfo.Equals("CLR3"))
{
SqlCmdString = string.Format("UPDATE {0} SET DTimeThird = '{1}' WHERE DTimeThird IS NULL", tabname, "T");
}
else if (cmdinfo.Equals("CLR4"))
{
SqlCmdString = string.Format("UPDATE {0} SET DTimeFourth = '{1}' WHERE DTimeFourth IS NULL", tabname, "T");
}
else if (cmdinfo.Equals("CLR5")) //BatterySN
{
SqlCmdString = string.Format("UPDATE {0} SET BatterySN = '{1}' WHERE BatterySN IS NULL", tabname, "T");
}
else if (cmdinfo.Equals("CLR6")) //Storage
{
SqlCmdString = string.Format("UPDATE {0} SET Storage = '{1}' WHERE Storage IS NULL", tabname, "T");
}
else if (cmdinfo.Equals("STG"))
{
SqlCmdString = string.Format("UPDATE {0} SET Storage = '{1}' WHERE Storage IS NULL", tabname, "STG");
}
else if (cmdinfo.Equals("CANCEL"))
{
SqlCmdString = string.Format("UPDATE {0} SET Storage = '{1}' WHERE Storage IS NULL", tabname, "CANCEL");
}
else if (cmdinfo.Equals("qty_chg_add"))
{
SqlCmdString = string.Format("UPDATE {0} SET qty_chg_add = (qty_chg_add +1) WHERE MO ='", tabname, "CANCEL");
}
else
{
return false;
}
try
{
conn.Open();
MySqlCommand cmd = new MySqlCommand(SqlCmdString, conn);
if (cmd.ExecuteNonQuery() > 0)
{
return true;
}
else
{
Console.WriteLine("更新:" + cmdinfo);
File.AppendAllText("UapdateMySqlteauto.log", "\r\n更新DTimeThird 标记失败!,指令是:" + cmdinfo + ", " + DateTime.Now.ToString(), Encoding.Default);
return false;
}
}
catch (Exception err)
{
Console.WriteLine(err);
return false;
}
finally
{
conn.Close();
}
}
public static bool UapdateMySqlteauto(string tabname, string cmdinfo, string MO) //更新预加工反向计数信息
{
MySqlConnection conn = new MySqlConnection(Result_back.value_define.MySqlStringteauto);
string SqlCmdString = "";
if (cmdinfo.Equals("qty_chg_add"))
{
SqlCmdString = string.Format("UPDATE {0} SET qty_chg_add = (qty_chg_add +1) WHERE MO ='{1}'", tabname, MO);
}
else
{
return false;
}
try
{
conn.Open();
MySqlCommand cmd = new MySqlCommand(SqlCmdString, conn);
if (cmd.ExecuteNonQuery() > 0)
{
//Console.WriteLine("更新成功");
return true;
}
else
{
Console.WriteLine("更新:" + cmdinfo);
File.AppendAllText("UapdateMySqlteauto.log", "\r\n更新标记失败!,指令是:" + SqlCmdString + ", " + DateTime.Now.ToString(), Encoding.Default);
return false;
}
}
catch (Exception err)
{
Console.WriteLine(err);
return false;
}
finally
{
conn.Close();
}
}
}
}