📄 factory.cs
字号:
/// <summary>
/// 检查当前的端口是否正确(端口地址应为 1024 - 65535 之间)
/// </summary>
/// <param name="Port">需要检查的端口地址</param>
/// <returns>true:代表正确,false:代表不正确</returns>
private bool CheckPort(string Port)
{
try
{
if(Int32.Parse(Port)<1024 || Int32.Parse(Port)>65535)
return false;
else
return true;
}
catch(Exception)
{
return false;
}
}
//--------------------------------------函数区结束------------------------------------------------
private void Frm_Main_Load(object sender, System.EventArgs e)
{
MsgBox(rm.GetString("10001"),MsgTitle,2);
this.MinimizeBox=false;
OpenScanner();
//建立工厂打印所需的文件夹
if(!Directory.Exists("\\Factory Print"))
{
Directory.CreateDirectory("\\Factory Print");
if(!Directory.Exists("\\Factory Print\\Temp"))
Directory.CreateDirectory("\\Factory Print\\Temp");
if(!Directory.Exists("\\Factory Print\\Logs"))
Directory.CreateDirectory("\\Factory Print\\Logs");
}
if(!File.Exists("\\Windows\\启动\\Wholesale.lnk"))
{
char r='"';
StreamWriter sw=new StreamWriter("\\Windows\\启动\\Wholesale.lnk");
sw.WriteLine("100#"+r+"\\Program Files\\Wholesale\\Wholesale.exe"+r);
sw.Flush();
sw.Close();
}
g_mi=new GXInput();
g_mi.RegisterAllHardwareKeys();
t_thread=new Thread(new ThreadStart(ThreadProc));
t_thread.Priority=ThreadPriority.Lowest;
t_thread.Start();
CEData lo;
lo=new CEData();
SqlCeConnection conn=lo.conn;
//初始化终端机隶属客户
try
{
string SqlText=null;
SqlCeDataReader myReader=null;
SqlText = "SELECT TAGAI,TAGAJ,TAGAA,TAGAB,TAGAC,TAGAD FROM TAG";
SqlCeCommand cmd=new SqlCeCommand(SqlText,conn);
myReader=cmd.ExecuteReader();
myReader.Read();
HCuppID =myReader.GetValue(0).ToString(); //读取客户的ID
ServerIP=myReader.GetValue(3).ToString(); //读取通讯服务器的IP地址
ServerPort=Int32.Parse(myReader.GetValue(4).ToString()); //读取通讯服务器的端口
DeviceID=myReader.GetValue(2).ToString(); //读取硬件ID
PassWord=myReader.GetValue(5).ToString(); //读取效验密码
myReader.Close();
}
catch
{
conn.Dispose();
this.Close();
//return;
}
finally
{
conn.Dispose();
}
MBID = "OK";//判断是扫描还是手动交易方式
TBox_ClientID.Items.Clear();
TBox_ThName.Items.Clear();
Choose();//选择历史交易信息
string[] sTemp=new string[2];
sTemp=ReadFromFile(IniFileName);
TBox_IP.Text=sTemp[0];
TBox_Port.Text=sTemp[1];
GoNet();
}
public void ThreadProc()
{
EventHandler eh=new EventHandler(ScanKeys);
do
{
this.Invoke(eh);
Thread.Sleep(10);
}while(!CloseThread);
this.Invoke(new EventHandler(this.CloseMe));
}
//---------------------------------------------------通讯部分 add by lml---------------------------
private void GoNet()
{
//MessageBOX.Text="正在更新...";
if(!IsOnLine())
{
return;
}
MsgBox(rm.GetString("10006"),MsgTitle,3);
//通讯状态
bool status=true;
//网络初始化
try
{
CENet net=new CENet(ServerIP,ServerPort);
//发送硬件ID,效验上次文件完整
if(!net.SendPKID(BC(PDAID(),30)))
status=false;
//重复连接的次数i;
if(status)
{
for(int i=0;i<4;i++)
{
if(i==3)
{
//错误,退出
status=false;
break;
}
string sTemp=net.RecCmd();
string sCmd=sTemp.Substring(0,5);
string sOldFile=sTemp.Substring(5,21);
if(sCmd.CompareTo("Suces")!=0)
{
//MessageBox.Show("您上次的文件不完整");
net.SendFile(sOldFile,HeaderMsg(PDAID(),sOldFile,Pass(),""));
Thread.Sleep(WaitTime);
}
else
{
//完整时
//删除所有的临时文件
DeleteFiles("\\","*.txt",21);
break;
}
}
}
//初始化数据库操作
CEFile sf=new CEFile();
//发送工厂打印条码数据
if(status)
{
bool send=true;
for(int i=0;i<4;i++)
{
if(i==3)
{
//错误,退出
status=false;
break;
}
if(send)
{
//发送新文件
string[] fd=Directory.GetFiles("\\Factory Print\\Temp","*.txt");
if(fd.Length==0) break;
FileInfo fii=new FileInfo(fd[0]);
if(fii.Length==0)
{
fii.Delete();
break;
}
net.SendCmd("70003"+BC("",59));
net.SendFile(fd[0],HeaderMsg(PDAID(),fd[0],Pass(),""));
Thread.Sleep(WaitTime);
}
else
{
//发送旧文件
string[] fd=Directory.GetFiles("\\Factory Print\\Logs","*.txt");
if(fd.Length==0) break;
net.SendCmd("70003"+BC("",59));
net.SendFile(fd[0],HeaderMsg(PDAID(),fd[0],Pass(),""));
Thread.Sleep(WaitTime);
}
string sTemp=net.RecCmd();
if(sTemp.Substring(0,5).CompareTo("Suces")!=0)
{
//MessageBox.Show("您发送的文件不完整!");
send=false;
}
else
{
try
{
//文件完整时
//清空Logs文件夹下的文件
DeleteFiles("\\Factory Print\\Logs","*.txt",21);
string[] fd=Directory.GetFiles("\\Factory Print\\Temp","*.txt");
//导入TAF
sf.AddToTAF(fd[0]);
Thread.Sleep(WaitTime);
string SoursePath=fd[0];
string DestPath=fd[0].Replace("Temp","Logs");
File.Move(SoursePath,DestPath);
break;
}
catch(Exception)
{
status=false;
//MessageBox.Show("文件操作出现错误!");
break;
}
}
}
}
//导出数据库文件
string sNewFile="";
if(status)
{
Thread.Sleep(WaitTime);
sNewFile=sf.DB2TXT();
if(sNewFile.CompareTo("error")==0)
status=false;
}
//发送新文件
if(status)
{
for(int i=0;i<4;i++)
{
if(i==3)
{
//错误,退出
status=false;
break;
}
FileInfo fi=new FileInfo(sNewFile);
//如果导出是空记录
if(fi.Length==14)
{
fi.Delete();
break;
}
//发送新文件(PDA->Server)
net.SendFile(sNewFile,HeaderMsg(PDAID(),sNewFile,Pass(),""));
Thread.Sleep(WaitTime);
string sTemp=net.RecCmd();
if(sTemp.Substring(0,5).CompareTo("Suces")!=0)
{
//MessageBox.Show("您发送的文件不完整!");
}
else
{
//文件完整时
//if(File.Exists(sNewFile)) File.Delete(sNewFile);
break;
}
}
}
//接收新文件
string result="";
if(status)
{
for(int i=0;i<4;i++)
{
if(i==3)
{
//错误,退出
status=false;
break;
}
//接收新文件:Server->PDA
result=net.DownFile(BC(PDAID(),30));
Thread.Sleep(WaitTime);
if(result.Substring(0,5).CompareTo("Empty")==0)
{
status=false;
net.SendCmd(CB("Error",64)); //反馈错误
break;
}
if(result.Substring(0,5).CompareTo("Error")!=0)
{
//接收成功
//net.SendCmd(result+BC("",38));
net.SendCmd(CB("Suces",64)); //反馈成功
break;
}
else
{
status=false;
net.SendCmd(CB("Error",64)); //反馈错误
break;
}
}
}
//文本导入数据库
if(status)
{
for(int i=0;i<4;i++)
{
if(i==3)
{
//导入不成功,退出
status=false;
break;
}
bool Dciku=false;
//如果不需要更新词库
if(result.Length<21)
{
status=false;
break;
}
if(result.Substring(21,5)=="76514")
Dciku=true;
//导入成功
Thread.Sleep(WaitTime);
if(sf.TXT2DB(result.Substring(0,21),Dciku))
{
if(File.Exists(result.Substring(0,21)))
File.Delete(result.Substring(0,21));
break;
}
}
}
if(status)
{
//断开网络
net.Close();
//MessageBOX.Text="下载完成!";
}
else
{
net.Close();
MessageBOX.Text="";
//MessageBox.Show("网络通讯出现问题,本次通讯取消!");
}
}
catch(SocketException)
{
MessageBOX.Text="";
//延时1秒
//Thread.Sleep(8000);
//MessageBox.Show("配额不足!请联网重试!");
MsgBox(rm.GetString("10005"),MsgTitle,5);
}
}
//-------------------------------------------------通讯结束----------------------------------------
private void GoFactory()
{
if(TBox_IP.Text.Length==0 || TBox_Port.Text.Length==0)
return;
if(!IsOnLine())
{
return;
}
//MessageBOX.Text="正在更新...";
try
{
MsgBox(rm.GetString("10006"),MsgTitle,3);
//网络初始化
CENet net=new CENet(TBox_IP.Text,Int32.Parse(TBox_Port.Text));
//通讯状态
bool status=true;
string sFileName="";
if(status)
{
for(int i=0;i<4;i++)
{
if(i==3)
{
//三次失败
status=false;
break;
}
net.SendCmd("70000"+BC("",59));
sFileName=net.DownFile(BC(PDAID(),30)).Substring(0,21);
if(sFileName.Substring(0,5).CompareTo("Empty")==0)
{
status=false;
break;
}
if(sFileName.Substring(0,5).CompareTo("Error")!=0)
{
//下载文件成功
File.Move(sFileName,"\\Factory Print\\Temp\\"+sFileName);
sFileName="\\Factory Print\\Temp\\"+sFileName;
break;
}
}
}
if(!status)
{
//MessageBox.Show("条码下载错误!");
MessageBOX.Text="";
}
net.Close();
//MessageBOX.Text="下载完成";
}
catch(SocketException)
{
//MessageBOX.Text="";
//MessageBox.Show("配额不足!请联网重试!");
MsgBox(rm.GetString("10005"),MsgTitle,3);
}
Thread.Sleep(2000);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -