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 DevExpress.XtraNavBar;
using DevExpress.XtraBars.Ribbon;
using DevExpress.XtraTabbedMdi;
using System.Reflection;
//using DeiNiu.wms.Logical;
using Microsoft.Data.ConnectionUI;
using System.Data.SqlClient;
using DeiNiu.Utils;
using System.Configuration;
using DevExpress.LookAndFeel;
using System.Xml;
using System.Runtime.InteropServices;
using DeiNiu.Utils;
using DeiNiu.wms.win.utils;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.Net;
using System.Runtime.Serialization.Json;
using System.IO;
using System.Threading;
using elelab;
using dn_wms;
using Model;
using System.Deployment.Application;
using DeiNiu.wms.Data.Model;
using Newtonsoft.Json;
using System.Timers;
namespace DeiNiu.wms.win
{
public partial class main : BasicRibbonForm
{
[DllImport("kernel32.dll")]
public static extern Boolean AllocConsole();
[DllImport("kernel32.dll")]
public static extern Boolean FreeConsole();
bool isPending = false;
public enumOnlineStatus validStatus = enumOnlineStatus.试用;
public string jsonOnline;
public WcfOnline wonline;
int maxLoop = 30*24;//最大30天试用期
string vcnt = "";
int loop = 0;
int custId = 100 ;
public main()
{
#if DEBUG
isPending = false;
#endif
// initialConsole();
InitializeComponent();
InitSkinGallery();
// UserLookAndFeel.Default.SetSkinStyle(defaultSkinName);
initialControles();
showWaitForm();
if (validSn())
{
//showErrorMsg("程序已过期");
createMenus();
}
closeWaitForm();
// startLightService();
lbvsersion.Text = getVersiion();
}
///
/// 获取客户端发布版本号
///
/// 当前版本号
private static string getVersiion()
{
var version = "1.80";
if (ApplicationDeployment.IsNetworkDeployed)//是否已连接
{
ApplicationDeployment currDeployment = ApplicationDeployment.CurrentDeployment;
DateTime lastCheck = currDeployment.TimeOfLastUpdateCheck.ToLocalTime();
var lastDay = lastCheck.Date.ToShortDateString();
var lastTime = lastCheck.TimeOfDay.ToString();
var majorVersion = currDeployment.CurrentVersion.Major.ToString();//主版本
var minorVersion = currDeployment.CurrentVersion.Minor.ToString(); //次版本
var revisionVersion = currDeployment.CurrentVersion.Revision.ToString();//内部版本号
var blildVersion = currDeployment.CurrentVersion.Build.ToString();//修订号
version = majorVersion + "." + minorVersion + "." + blildVersion + "." + revisionVersion;
}
return "v" + version;
}
private bool validSn()
{
initialTimer1();
vcnt = System.Configuration.ConfigurationManager.AppSettings["vcnt"];
checkOnline();
try {
loop = Convert.ToInt32(vcnt);
}
catch { loop = 0; }
if (loop >= maxLoop)
{
return false;
}
DateTime dt = DateTime.Now;
DateTime endate = new DateTime(2022, 09, 1);
// DateTime endate2 = new DateTime(2019, 8, 1);
int resut =DateTime.Compare(dt, endate);
// int resut2 = DateTime.Compare(dt, endate2);
// TimeSpan ts = endate.Subtract(dt);
// int day = ts.Days;
// ts = endate2.Subtract(dt);
// day = ts.Days;
if (isPending)
{
return resut < 0;
}
return true;
}
private void initialConsole(){
#if DEBUG
AllocConsole();
Shell.WriteLine("注意:启动程序...");
Shell.WriteLine("");
#endif
}
private void initialControles()
{
this.ribbonControl1.ShowToolbarCustomizeItem = false; // hide top left menu
this.ribbonControl1.Minimized = true;
showRibbonEditPage();
dockPanel1.Options.ShowCloseButton = false;
// dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
this.WindowState = FormWindowState.Maximized;
}
private void showRibbonEditPage()
{
int cnt = xtraTabbedMdiManager1.Pages.Count;
ribbonPageEdit.Visible = xtraTabbedMdiManager1.Pages.Count > 0; //hide editPage when no subform exist.
ribbonControl1.SelectedPage = ribbonControl1.Pages[0];
}
private void ribbonControl1_Merge(object sender, DevExpress.XtraBars.Ribbon.RibbonMergeEventArgs e)
{
//RibbonControl parentRRibbon = sender as RibbonControl;
//RibbonControl childRibbon = e.MergedChild;
//parentRRibbon.StatusBar.MergeStatusBar(childRibbon.StatusBar);
}
private void ribbonControl1_UnMerge(object sender, DevExpress.XtraBars.Ribbon.RibbonMergeEventArgs e)
{
//RibbonControl parentRRibbon = sender as RibbonControl;
//parentRRibbon.StatusBar.UnMergeStatusBar();
}
private void OpenLink( Form itemForm, string itemHeader)
{
//遍历已打开的TabPage,若发现已打开过则不再重复打开并设置为Active
int itemCount = xtraTabbedMdiManager1.Pages.Count;
foreach (XtraMdiTabPage itemPage in xtraTabbedMdiManager1.Pages)
{
if (itemHeader == itemPage.Text)
{
//MessageBox.Show("the page has been openned");
//设置活动Tab Page
xtraTabbedMdiManager1.SelectedPage = itemPage;
return;
}
}
itemForm.MdiParent = this;
itemForm.Text = itemHeader;
itemForm.Show();
//设置为Active
xtraTabbedMdiManager1.SelectedPage = xtraTabbedMdiManager1.Pages[itemCount];
}
private void navBarControl1_LinkClicked(object sender, NavBarLinkEventArgs e)
{
String itemHeader = e.Link.Caption;
//遍历已打开的TabPage,若发现已打开过则不再重复打开并设置为Active
int itemCount = xtraTabbedMdiManager1.Pages.Count;
foreach (XtraMdiTabPage itemPage in xtraTabbedMdiManager1.Pages)
{
if (itemHeader == itemPage.Text)
{
//MessageBox.Show("the page has been openned");
//设置活动Tab Page
xtraTabbedMdiManager1.SelectedPage = itemPage;
return;
}
}
String formName = e.Link.Item.Tag == null ? null : e.Link.Item.Tag.ToString();
if (string.IsNullOrEmpty(formName))
{
return;
}
showWaitForm();
String fullName = GetType().Namespace + "." + formName;
Assembly assembly = GetType().Assembly;
Type type = assembly.GetType(fullName);//AuthorityForm
if (type == null)
{
closeWaitForm();
showErrorMsg(e.Link.Item.Name + "窗体打开失败");
return;
}
Form itemForm = (Form)Activator.CreateInstance(type);
itemForm.MdiParent = this;
itemForm.Text = itemHeader;
itemForm.Show();
closeWaitForm();
//设置为Active
xtraTabbedMdiManager1.SelectedPage = xtraTabbedMdiManager1.Pages[itemCount];
showRibbonEditPage();
dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
//AddPageMdi(e.Link.Item);
}
private new void showLogin()
{
}
///
/// 同步erp 信息
///
private void initailErpData()
{
}
private void createMenus(){
this.navBarControl1.BeginUpdate();
this.navBarControl1.Groups.Clear();
// LAuthority la = new LAuthority();
// Dictionary> auths = la.getCatedAuthorities(Park.currentUser.GetEmployee.ID);
Dictionary result = new Dictionary();
result["系统设置"] = new string[] {
// "货位设置:LocationmgrForm",
// "标签测试:basicFuncs",
"打印设置:ConfigPrint",
"店铺设置:DeskCustomer",
};
result["播种拣选"] = new string[] {
"任务控制:SeedsImport",
"一次分播:SeedsDeskOut" ,
"二次分播:SeedsOut" ,
"PDA亮灯服务:SeedsOutService"
};
// result["摘果拣选"] = new string[] {"波次亮灯:GoodsOutForm" };
#if DEBUG
#endif
int i = 0;
foreach (String cate in result.Keys)
{
NavBarGroup group1 = new NavBarGroup(cate);
foreach (string link in result[cate])
{
string[] rs = link.Split(':');
if (string.IsNullOrEmpty(rs[0]))
{
continue;
}
NavBarItem nbi = new NavBarItem(rs[0]);
nbi.Tag = rs[1];
group1.ItemLinks.Add(nbi);
}
this.navBarControl1.Groups.Add(group1);
if (group1.ItemLinks.Count > 0 && i>0)
{
group1.Expanded = true;
}
else
{
group1.Expanded = false;
}
i++;
}
this.navBarControl1.EndUpdate();
this.navBarControl1.LinkClicked += new NavBarLinkEventHandler(navBarControl1_LinkClicked);
showRibbonEditPage();
}
/**
* clear mdi,close forms
*
*/
private void doClear()
{
xtraTabbedMdiManager1.Pages.Clear();
}
private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
doClear();
showLogin();
}
private void xtraTabbedMdiManager1_PageRemoved(object sender, MdiTabPageEventArgs e)
{
showRibbonEditPage();
}
private void dockPanel1_ClosingPanel(object sender, DevExpress.XtraBars.Docking.DockPanelCancelEventArgs e)
{
dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
}
private void dockPanel1_Collapsed(object sender, DevExpress.XtraBars.Docking.DockPanelEventArgs e)
{
dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
}
private void dockPanel1_VisibilityChanged(object sender, DevExpress.XtraBars.Docking.VisibilityChangedEventArgs e)
{
if (dockPanel1.Visibility == DevExpress.XtraBars.Docking.DockVisibility.Hidden)
{
dockPanel1.Visibility = DevExpress.XtraBars.Docking.DockVisibility.AutoHide;
}
}
///
/// 与控制台交互
///
static class Shell
{
///
/// 输出信息
///
///
///
public static void WriteLine(string format, params object[] args)
{
WriteLine(string.Format(format, args));
}
///
/// 输出信息
///
///
public static void WriteLine(string output)
{
Console.ForegroundColor = GetConsoleColor(output);
Console.WriteLine(@"[{0}]{1}", DateTimeOffset.Now, output);
}
///
/// 根据输出文本选择控制台文字颜色
///
///
///
private static ConsoleColor GetConsoleColor(string output)
{
if (output.StartsWith("警告")) return ConsoleColor.Yellow;
if (output.StartsWith("错误")) return ConsoleColor.Red;
if (output.StartsWith("注意")) return ConsoleColor.Green;
return ConsoleColor.Gray;
}
}
//private void xtraTabbedMdiManager1_FloatMDIChildActivated(object sender, EventArgs e)
//{
//}
//private void xtraTabbedMdiManager1_SelectedPageChanged(object sender, EventArgs e)
//{
// //RibbonControl subRibbon = ((basicRibbonForm)xtraTabbedMdiManager1.SelectedPage.MdiChild).getRibbon();
// //this.ribbonControl1.MergeRibbon(subRibbon);
//}
#region 皮肤
//初始化皮肤
string defaultSkinName = "Blue";
void InitSkinGallery()
{
DevExpress.XtraEditors.WindowsFormsSettings.DefaultFont = new Font("黑体 常规", 12);
// gallerySkins.Manager = barManager1;
// DevExpress.XtraBars.Helpers.SkinHelper.InitSkinGalleryDropDown(gallerySkins, true);
CheckFile();//检查文件
GetXmlSkin();//获取xml主题
// UserLookAndFeel.Default.SetSkinStyle("DevExpress Style");
if (!string.IsNullOrEmpty(LoginInfo.Theme))
{
defaultSkinName = LoginInfo.Theme;
// defaultSkinName = "Summer 2008";
}
DevExpress.UserSkins.BonusSkins.Register();
DevExpress.Skins.SkinManager.EnableFormSkins();
//This set the style to use skin technology
DevExpress.LookAndFeel.UserLookAndFeel.Default.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Skin;
if (!string.IsNullOrEmpty(defaultSkinName))
{
UserLookAndFeel.Default.SetSkinStyle(defaultSkinName);//设置主题样式
return;
}
UserLookAndFeel.Default.SetSkinStyle("Blue");//设置主题样式
}
//检查是否有皮肤名称的xml配置文件
public void CheckFile()
{
try
{
if (System.IO.File.Exists("SkinInfo.xml") == false)
{
CreateXml();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// 创建XML文件
public void CreateXml()
{
XmlDocument doc = new XmlDocument(); //建立xml定义声明
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
XmlElement root = doc.CreateElement("SetSkin"); //创建根节点
XmlElement rootone = doc.CreateElement("Skinstring");//皮肤
doc.AppendChild(root);//将one,two,插入到root节点下
root.AppendChild(rootone);
doc.Save("SkinInfo.xml");//保存皮肤名称文件为xml格式
}
//读取Xml节点内容
public void GetXmlSkin()
{
try
{
XmlDocument mydoc = new XmlDocument();
mydoc.Load("SkinInfo.xml");//从xml文件中提取皮肤名称
XmlNode ressNode = mydoc.SelectSingleNode("SetSkin");//头和尾
defaultSkinName = ressNode.SelectSingleNode("Skinstring").InnerText;//把提取出来的皮肤名称存到defaultSkinName中
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void skinRibbonGalleryBarItem1_Gallery_ItemClick(object sender, GalleryItemClickEventArgs e)
{
if (skinRibbonGalleryBarItem1.Gallery == null)
{
return;
}
try
{
showWaitForm();
XmlDocument doc = new XmlDocument();
doc.Load("SkinInfo.xml");
XmlNodeList nodelist = doc.SelectSingleNode("SetSkin").ChildNodes;
foreach (XmlNode node in nodelist)
{
XmlElement xe = (XmlElement)node;//将子节点类型转换为XmlElement类型
if (xe.Name == "Skinstring")
{
xe.InnerText = skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Tag.ToString();//主题的描述,保存所选的主题名称,参见GetCheckedItems()[0]函数的解释,主要用这个函数提取皮肤名称
}
}
doc.Save("SkinInfo.xml");
if (LoginInfo.UserId >0)
{
string tag = skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Tag.ToString();//caption;
string caption = skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Caption;
//Park.currentUser.GetEmployee.em_profile = skinRibbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Tag.ToString();//caption;
//Park.currentUser.GetEmployee.Update();
}
// System.Threading.Thread.CurrentThread.Join(10);
}
catch (Exception er)
{
DeiNiu.Utils.LogHelper.WriteLog(typeof(main), er);
}
finally
{
closeWaitForm();
}
}
#endregion
private void main_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("真的要退出程序吗?", "退出程序", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
{
e.Cancel = true;
}
}
private void main_FormClosed(object sender, FormClosedEventArgs e)
{
showWaitForm();
try {System.Environment.Exit(0); } catch { }
}
private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (MessageBox.Show("真的要退出程序吗?", "退出程序", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
{
return;
}
showWaitForm();
System.Environment.Exit(0);
}
private void skinRibbonGalleryBarItem1_Gallery_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
}
private void btnConn_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
openConnectionWindow();
}
private void openConnectionWindow()
{
DataConnectionDialog dialog = new DataConnectionDialog();
String conn =System.Configuration.ConfigurationManager.AppSettings["SqlConnWMS"];
dialog.DataSources.Clear();
/*
#region//mdb
dialog.DataSources.Add(DataSource.AccessDataSource);
dialog.SelectedDataProvider = DataProvider.OleDBDataProvider;
dialog.SelectedDataSource = DataSource.AccessDataSource;
#endregion
*/
#region //Sql Server
dialog.DataSources.Add(DataSource.SqlDataSource);//Sql Server
dialog.SelectedDataSource = DataSource.SqlDataSource;
dialog.SelectedDataProvider = DataProvider.SqlDataProvider;
#endregion
dialog.ConnectionString = conn;
/*
#region//Oracle
dialog.DataSources.Add(DataSource.OdbcDataSource);
dialog.SelectedDataSource = DataSource.OracleDataSource;
dialog.SetSelectedDataProvider = DataProvider.OracleDataProvider;
#endregion
*/
if (DataConnectionDialog.Show(dialog) == DialogResult.OK)
{
if (!String.IsNullOrEmpty(conn) && conn.Equals(dialog.ConnectionString))
{
return;
}
try
{
if (isPending)
{
throw new Exception("数据库不支持");
}
// string strCom = " SELECT * FROM JQ_Info";
////创建一个 DataSet对象
DataSet ds = new DataSet();
//#region//(1)连接mdb
//OleDbConnection dbConn = new OleDbConnection(dialog.ConnectionString);
//dbConn.Open();
//OleDbDataAdapter dbAdapter = new OleDbDataAdapter(strCom, dbConn);
//dbAdapter.Fill(ds);
//dbConn.Close();
//#endregion
#region//(2)连接Sql Server
string poolsStr = ";Pooling=true;Max Pool Size = 300; Min Pool Size=10; Connection Lifetime = 300;packet size=1000 ";
String connString = dialog.ConnectionString;
//+";Pooling=true;Max Pool Size = 300; Min Pool Size=0; Connection Lifetime = 300;packet size=1000 ";
if (!connString.Contains("Pooling=True"))
{
// connString+=poolsStr;
}
SqlConnection sqlConn = new SqlConnection(connString);
sqlConn.Open();
sqlConn.Close();
WriteConfig("SqlConnWMS",connString);
pickConstants.SQL_CONN_WMS = connString;
#endregion
MessageBox.Show("连接数据库成功。", "成功");
}
catch (System.Exception ex)
{
MessageBox.Show("连接数据库发生错误:" + ex.Message, "错误!");
openConnectionWindow();
}
finally
{
}
}
}
//-------------------------service host-----------
static log4net.ILog log = log4net.LogManager.GetLogger("light");
private ServiceHost host = null;
public static List labelPool = new List();
string svrUrl = "http://127.0.0.1:9998/DNLight";
delegate void showStatus();
private void startLightService()
{
elelab.pick.init_port(enumLabelPickType.seed);
Thread threadPreProcess = new Thread(startHost2);
threadPreProcess.IsBackground = true;
threadPreProcess.Start();
}
void startHost2()
{
// lbStatus.Text = "服务启动失败";
try
{
svrUrl = System.Configuration.ConfigurationManager.AppSettings["BaseUri"];
Uri baseAddress = new Uri(svrUrl);
ServiceLight service = new ServiceLight();
service.newLabels += this.newLabels;
service.lightUp += this.lightUp;
service.turnOff += this.turnOff;
service.turnOnLts += this.turnOnLights;
service.turnOffLts += this.turnOffLights;
host = new ServiceHost(service, baseAddress);
elelab.pick.lightOffEvent += testPicked;
WebHttpBinding binding = new WebHttpBinding();
ServiceEndpoint endpoint = host.AddServiceEndpoint(typeof(IServiceLight), binding, baseAddress);
WebHttpBehavior httpBehavior = new WebHttpBehavior();
endpoint.Behaviors.Add(httpBehavior);
host.Opened += delegate
{
if (InvokeRequired)
{
this.Invoke(new showStatus(delegate()
{
// lbStatus.Text = "服务已启动";
// lbUrl.Text = svrUrl;
}));
}
else
{
// lbStatus.Text = "服务已启动";
// lbUrl.Text = svrUrl;
// lbStatus.Text = "服务启动失败";
// lbUrl.Text ="";
}
};
host.Open();
}
catch (Exception e)
{
MessageBox.Show("启动服务失败: " + e.Message);
}
}
void testPicked(int eleId, int port, int eleAddress, int count)
{
if (InvokeRequired)
{
this.Invoke(new showStatus(delegate()
{
showResult(eleId, port, eleAddress, count);
}));
}
else
{
showResult(eleId, port, eleAddress, count);
}
}
void showResult(int eleId, int color, int eleAddress, int count)
{
// lbreturn.Text = string.Format("标签ID:{0} \n\n 端口:{1} \n\n 地址:{2} \n\n 数量:{3}", eleId, color, eleAddress, count);
}
void newLabels(List lables)
{
labelPool = labelPool.Union(lables).ToList();
labelPool = labelPool.Concat(lables).ToList();
}
System.Timers.Timer timer = new System.Timers.Timer();//实例化Timer类
private void initialTimer()
{
int intTime = 5000;
timer.Interval = intTime;//设置间隔时间,为毫秒;
timer.Elapsed += new System.Timers.ElapsedEventHandler(lightUp);//到达时间的时候执行事件;
timer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
timer.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
timer.Start();
}
void lightUp(object source, System.Timers.ElapsedEventArgs e)
{
if (labelPool.Count == 0)
{
return;
}
ELabel lb = labelPool[0];
int[] ids = new int[] { lb.labelId };
string[] ele_address = new string[] { lb.address.ToString() };
elelab.pick.init_port(enumLabelPickType.seed);
// string result = elelab.pick.send_data_pick(null, enumLabelPickType.pick);
bool result = elelab.pick.lightLabels2(labelPool, 1, 1, enumLabelPickType.seed);
if (result)
{
labelPool.Remove(lb);
}
}
void lightUp(List lables, int portNo)
{
//to lightup
#if DEBUG
// portNo = 13;
#endif
int[] ids = new int[lables.Count];
string[] ele_address = new string[lables.Count];
for (int i = 0; i < lables.Count; i++)
{
ids[i] = lables[i].labelId;
ele_address[i] = lables[i].address.ToString();
}
elelab.pick.init_port(enumLabelPickType.seed);
elelab.pick.lightLabels2(lables, portNo, 1, enumLabelPickType.seed);
}
#region a
private void insertTestData()
{
string url = svrUrl + "/uploadSeeds";
try
{
// #region JosnPost
List seeds = new List();
int maxLbId = 1;
int k = 0;
for (int i = 401; i < 800; i++)
{
SeedsItem si = new SeedsItem();
si.count = i * 9 + 1;
si.custOrder = "CO" + i * 100 / 3 + 1;
si.seedsNo = "seedsNo0" + (i / maxLbId + 1);
if (k >= maxLbId)
{
k = 0;
}
k++;
si.elabId = k;
si.barcode = k / 5 + 1 + "";
si.deskId = 1;
si.itemName = "name" + si.barcode;
si.port = si.deskId;
si.unit = "each";
seeds.Add(si);
}
DataContractJsonSerializer dcSerializer = new DataContractJsonSerializer(typeof(List));
MemoryStream stream = new MemoryStream();
dcSerializer.WriteObject(stream, seeds);
string data = Encoding.UTF8.GetString(stream.ToArray(), 0, (int)stream.Length);
//HttpClient client = new HttpClient();
//client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string link = url;
//HttpResponseMessage respondse = await client.PostAsync(link, new StringContent(data));
//string dataWithJason = await respondse.Content.ReadAsStringAsync();
var request = (HttpWebRequest)WebRequest.Create(new Uri(link));
request.ContentType = "application/json";
request.Method = "POST";
var requestStream = request.GetRequestStream();
using (var writer = new StreamWriter(requestStream))
{
writer.Write(data);
writer.Flush();
}
/*using (var resp = request.GetResponse())
{
using (var responseStream = resp.GetResponseStream())
{
var reader = new StreamReader(responseStream);
var result = reader.ReadToEnd();
}
}*/
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string json = null;
using (StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8")))
{
json = reader.ReadToEnd();
}
// WebResponse response = request.GetResponse();
// string json = null;
// using (StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8")))
{
// json = reader.ReadToEnd();
}
/*
using (var requestStream = await request.GetRequestStreamAsync())
{
var writer = new StreamWriter(requestStream);
writer.Write(data);
writer.Flush();
}
using (var resp = await request.GetResponseAsync())
{
using (var responseStream = resp.GetResponseStream())
{
var reader = new StreamReader(responseStream);
var result = reader.ReadToEnd();
}
}*/
/*
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@url);
request.ContentType = "application/json";
request.Method = "POST";
string inputString = data;//"{\"Key\":\"ABCDEFG\"}";
Byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(inputString);
request.ContentLength = byteArray.Length;
Stream rstream = request.GetRequestStream();
rstream.Write(byteArray, 0, byteArray.Length);
rstream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streams = response.GetResponseStream();
StreamReader SR = new StreamReader(streams);
String info = SR.ReadToEnd();
SR.Dispose();
*/
MessageBox.Show("导入成功");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
#endregion
private void btnLightSeeds_Click(object sender, EventArgs e)
{
}
private void LightSeviceHostForm_FormClosing(object sender, FormClosingEventArgs e)
{
turnOffLights();
if (host != null)
{
host.Close();
}
}
void turnOff(int portNo)
{
if (unart_manage.com_manage[portNo] == null)
{
return;
}
Model.dis_id id;
//id.ele_id = Convert.ToInt16(new_id.Text);
id.order = 1;
id.ele_id = 65535;
id.state = 1;
unart_manage.com_manage[portNo].init_port.write_clear_comment(id);
}
void turnOffLights()
{
Model.dis_id id;
//id.ele_id = Convert.ToInt16(new_id.Text);
id.order = 1;
id.ele_id = 65535;
id.state = 1;
//id.
foreach (int port in pick.activeComports)//WmsConstants.WAVE_CURRENT_LIGHTS_PORT_STATUS.Keys)
{
if (port == 0)
{
continue;
}
// unart_manage.com_manage[port].write_reset_device(); 复位各个硬件,通道灯,标签。。。
unart_manage.com_manage[port].init_port.write_clear_comment(id);
}
}
private void simpleButton1_Click(object sender, EventArgs e)
{
insertTestData();
}
private void simpleButton1_Click_1(object sender, EventArgs e)
{
insertTestData();
}
/*
void turnOnLights( int portNo,List lights )
{
foreach(ELight el in lights){
channel_led id =new channel_led();
id.channel_id = el.lightId;
//id.config_word = led_rgb;
id.color = el.color;
id.state = 1;
bool rt= pick.turnOnLight(portNo, id);
}
}
void turnOffLights(int portNo, List lights)
{
foreach (ELight el in lights)
{
channel_led id = new channel_led();
id.channel_id = el.lightId;
//id.config_word = led_rgb;
id.state = 1;
pick.turnOffLight(portNo, id);
}
}
*/
int baseLightId = 5000;
int currentPort = 11;
bool turnOnLights(int portNo, List lights)
{
if (portNo == 0)
{
portNo = currentPort;
}
// bool rt=false;
List fail = new List();
log.Debug("start light on request ------>");
foreach (ELight el in lights)
{
channel_led id = new channel_led();
id.channel_id = baseLightId + el.lightId;
//id.config_word = led_rgb;
id.color = el.which;
id.state = 1;
if (el.port == 0)
{
el.port = portNo;
}
if (!pick.turnOnLight(el.port, id))
{
log.Debug(getJson(el) + " light on failed. redo...");
fail.Add(el);
}
else
{
log.Debug(getJson(el));
}
Thread.Sleep(50);
}
if (fail.Count > 0)
{
turnOnLights(portNo, fail);
}
log.Debug("<----------- end light on request ");
return fail.Count == 0;
}
bool turnOffLights(int portNo, List lights)
{
if (portNo == 0)
{
portNo = currentPort;
}
bool rt = false;
List fail = new List();
log.Debug("start light off request ------>");
foreach (ELight el in lights)
{
channel_led id = new channel_led();
id.channel_id = baseLightId + el.lightId;
//id.config_word = led_rgb;
id.color = el.which;
id.state = 1;
if (el.port == 0)
{
el.port = portNo;
}
if (!pick.turnOffLight(el.port, id))
{
log.Debug(getJson(el) + " light off failed. redo...");
fail.Add(el);
}
else
{
log.Debug(getJson(el));
}
Thread.Sleep(50);
}
if (fail.Count > 0)
{
turnOffLights(portNo, fail);
}
log.Debug("<----------- end light off request ");
return fail.Count == 0;
}
public string getJson(ELight light)
{
string json = "";
json = String.Format("\"lightId\":{0},\"which\":{1}, \"port\":{2}"
, light.lightId, light.which, light.port);
return "{" + json + "}";
}
//---valid on line
void getOnline(Object id)
{
/*
svrUrl = System.Configuration.ConfigurationManager.AppSettings["onLineUri"];
svrUrl = svrUrl + "T_ONLINE.svc/getobj?id={0}";
string custId = System.Configuration.ConfigurationManager.AppSettings["custId"];
svrUrl = string.Format(svrUrl, custId);
//this.lbOffLight.Text = svrUrl;
jsonOnline = HttpGet(svrUrl, null);
wonline = new WcfOnline();
try
{
wonline = JsonConvert.DeserializeObject(jsonOnline);
}
catch (Exception ex)
{
log.Error(ex);
}
*/
validSvr();
// string json2 = JsonConvert.SerializeObject(wonline);
string msg = "";
loop++;
if (wonline.id>0)
{
validStatus = (enumOnlineStatus)wonline.state;
msg = string.Format("尊敬的{0},授权状态:【{1}】, {2}", wonline.custName, validStatus,wonline.msg);
msg = wonline.msg;
//this.navBarControl1.BeginUpdate();
//this.navBarControl1.Groups.Clear();
//this.navBarControl1.EndUpdate();
if (validStatus == enumOnlineStatus.正常)
{
//createMenus();
loop = 0;
}
else if(validStatus == enumOnlineStatus.试用)
{
//createMenus();
}
else if (validStatus == enumOnlineStatus.过期)
{
loop = loop>maxLoop?loop:maxLoop;
msg = string.Format("尊敬的{0},授权状态:【{1}】, {2}", wonline.custName, validStatus, wonline.msg);
}
}
vcnt = loop + "";
if (loop > maxLoop)
{
validStatus = enumOnlineStatus.过期;
msg = string.Format("尊敬的客户{0} 授权状态:【{1}】 {2}", wonline.custName, validStatus, wonline.msg);
}
WriteConfig("vcnt", vcnt);
if (InvokeRequired)
{
this.Invoke(new showStatus(delegate ()
{
lbOnline.Text = msg;
}));
}
else
{
lbOnline.Text = msg;
}
}
private void checkOnline()
{
try {
Thread threadPreProcess = new Thread(new ParameterizedThreadStart(getOnline));
threadPreProcess.IsBackground = true;
threadPreProcess.Start(0);
}
catch(Exception ex)
{
showErrorMsg(ex.Message);
}
}
System.Timers.Timer timer1 = new System.Timers.Timer();//实例化Timer类
private void initialTimer1()
{
int minute = 1000 * 60;
int intTime = 60 * minute;
timer1.Interval = intTime;//设置间隔时间, 1小时
timer1.Elapsed += new System.Timers.ElapsedEventHandler(validHost);//到达时间的时候执行事件;
timer1.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
timer1.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
timer1.Start();
}
private void validHost(object sender, ElapsedEventArgs e)
{
checkOnline();
}
private void btnValid_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
validSvr(true);
}
void validSvr(bool isValid=false)
{
// svrUrl = System.Configuration.ConfigurationManager.AppSettings["onLineUri"];
svrUrl = "http://www.deiniusoft.com:36990/T_ONLINE.svc/getobj?id={0}";
svrUrl = string.Format(svrUrl, custId);
//this.lbOffLight.Text = svrUrl;
jsonOnline = HttpGet(svrUrl, null);
wonline = new WcfOnline();
try
{
wonline = JsonConvert.DeserializeObject(jsonOnline);
}
catch (Exception ex)
{
if (isValid)
{
showErrorMsg(ex.Message);
}
log.Error(ex);
}
if (isValid)
{
string str = "验证错误:" + custId;
if (wonline.id > 0)
{
validStatus = (enumOnlineStatus)wonline.state;
str = string.Format("尊敬的客户 {0},您当前的服务状态是: 【{1}】时间{2}", wonline.custName, validStatus,wonline.endDate);
}
showInfoMsg(str);
}
}
}
}