using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
using System.IO;
using Microsoft.Win32;
using System.Net;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Saraff.Tiff;
using Saraff.Tiff.Core;
using Saraff.Twain;
using HXX.Scanner.Client.Base;
using HXX.Scanner.Client.Properties;
using HXX.Scanner.Biz;
using HXX.Scanner.Common;
using HXX.Scanner.Biz.Socket;
using HXX.Scanner.Client.biz;
namespace HXX.Scanner.Client
{
///
/// 主窗体
///
public partial class frmMain4 : Form
{
public frmMain4()
{
//Font = new Font(Font.Name, 8.25f * 96f / CreateGraphics().DpiX, Font.Style, Font.Unit, Font.GdiCharSet, Font.GdiVerticalFont);
CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
SetStyle(
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw |
ControlStyles.DoubleBuffer, true);
this.DoubleBuffered = true;
this.UpdateStyles();
}
//扫描中心
engine_twain32 engine;
#region 页面转态变化提示
///
/// 初始化计时器,页面各状态值
///
public void initTimer()
{
//System.Windows.Forms.Timer formTimer = new System.Windows.Forms.Timer();
//formTimer.Interval = 3000;//设置中断时间 单位ms
//formTimer.Enabled = true;
//formTimer.Tick += FormTimer_Tick;
this.checkBox1.Checked = RegisterHelper.GetRun();//开机启动
Task.Run(async () =>
{
while (true)
{
this.Invoke(new Action(() =>
{
if (config_environment.scan_state)
{
this.lblTestA.Enabled = false;
this.lblTestAB.Enabled = false;
}
else
{
this.lblTestA.Enabled = true;
this.lblTestAB.Enabled = true;
}
}));
await FormTimer_Tick(null, null);
Thread.Sleep(10000);
}
});
}
///
/// 检查中状态
///
private bool onCheck_status = true;
///
/// 是否检查网络
///
private bool to_check_net = true;
///
/// 扫描仪状态
///
private int scanner_status = 0;
///
/// 磁盘状态
///
private int disk_status = 1;
///
/// 网络状态
///
private int net_status = 1;
///
/// 云端状态
///
private int cloud_status = 1;
///
/// 页面各状态检测
///
///
///
///
private async Task FormTimer_Tick(object sender, EventArgs e)
{
///1:检查扫描仪状态
var scannerResult = await engine.check_status_ui();
///3:检查磁盘空间
var diskResult = biz_disk.check_disk_status();
if (to_check_net)
{
await checkAnswerCardServer();
await check_net_status();
//pingTestAsync();
if (net_status == 1 && cloud_status == 1)
{
to_check_net = false;
}
}
this.Invoke(new Action(() =>
{
if (scannerResult.Status == 501 || scannerResult.Status == 509)
{
scanner_status = 2;//未连接
}
else
{
scanner_status = 1;
}
if (diskResult.Status == 200)
{
disk_status = 1;
}
else if (diskResult.Status == 520)
{
disk_status = 2;//请先设置数据存放位置
}
else if (diskResult.Status == 510)
{
disk_status = 3;//磁盘剩余空间小于5G
}
else if (diskResult.Status == 509)
{
disk_status = 4;//磁盘剩余空间小于500M
}
show_status();
}));
}
///
/// 页面状态信息改变
///
/// 0:正常 1:scanner异常,2:disk异常
private void show_status()
{
if (this.onCheck_status)
{
this.picStatus.Image = Properties.Resources._1;
}
else
{
if (this.scanner_status == 1 && this.disk_status == 1 && this.cloud_status == 1 && this.net_status == 1)
{
//this.lab_banner.Text = "扫描环境检测完成,扫描设备已就位,可以开始进行扫描工作";
//this.pan_banner.BackColor = Color.FromArgb(236, 249, 228);
//this.lab_banner.ForeColor = Color.FromArgb(0, 192, 0);
//this.lab_banner.BackColor = Color.FromArgb(236, 249, 228);
//this.pic_banner.Image = Properties.Resources.校验_check_one_2x;
this.picStatus.Image = Properties.Resources.正常;
this.lbl_msg1.Text = "扫描环境检测完成";
this.lbl_msg2.Text = "可以开始扫描工作";
}
else
{
if (this.scanner_status > 1)
{
//this.lab_banner.Text = "扫描仪连接异常,请检测扫描仪设备连接及驱动!";
//this.pan_banner.BackColor = Color.FromArgb(254, 233, 233);
//this.lab_banner.ForeColor = Color.FromArgb(245, 87, 87);
//this.lab_banner.BackColor = Color.FromArgb(254, 233, 233);
//this.pic_banner.Image = Properties.Resources.关闭_close_one_2x;
this.picStatus.Image = Properties.Resources.异常2;
this.lbl_msg1.Text = "扫描仪连接异常";
this.lbl_msg2.Text = "请检测扫描仪设备连接及驱动";
//新增,在有扫描仪连接的情况下,尝试启动
//if (this.cmbDeviceList.SelectedIndex >= 0)
//{
// this.cmbDeviceList_SelectedIndexChanged(null, null);
//}
}
else if (this.net_status > 1)
{
//this.lab_banner.Text = "网络故障,无法上传文件,请检查网络。";
//this.pan_banner.BackColor = Color.FromArgb(254, 233, 233);
//this.lab_banner.ForeColor = Color.FromArgb(245, 87, 87);
//this.lab_banner.BackColor = Color.FromArgb(254, 233, 233);
//this.pic_banner.Image = Properties.Resources.关闭_close_one_2x;
this.picStatus.Image = Properties.Resources.异常2;
this.lbl_msg1.Text = "网络故障";
this.lbl_msg2.Text = "无法上传文件,请检查网络";
}
else if (this.cloud_status > 1)
{
//this.lab_banner.Text = "云服务器连接失败,请检查网络设置或联系技术人员。";
//this.pan_banner.BackColor = Color.FromArgb(254, 233, 233);
//this.lab_banner.ForeColor = Color.FromArgb(245, 87, 87);
//this.lab_banner.BackColor = Color.FromArgb(254, 233, 233);
//this.pic_banner.Image = Properties.Resources.关闭_close_one_2x;
this.picStatus.Image = Properties.Resources.异常2;
this.lbl_msg1.Text = "网络故障";
this.lbl_msg2.Text = "无法上传文件,请检查网络";
}
else if (this.disk_status == 2)
{
//this.lab_banner.Text = "请先设置数据存放位置";
//this.pan_banner.BackColor = Color.FromArgb(254, 233, 233);
//this.lab_banner.ForeColor = Color.FromArgb(245, 87, 87);
//this.lab_banner.BackColor = Color.FromArgb(254, 233, 233);
//this.pic_banner.Image = Properties.Resources.关闭_close_one_2x;
this.picStatus.Image = Properties.Resources.异常;
this.lbl_msg1.Text = "请先设置数据存放位置";
this.lbl_msg2.Text = "";
}
else if (this.disk_status == 4)
{
//this.lab_banner.Text = "数据存放目录空间不足,无法保存数据";
//this.pan_banner.BackColor = Color.FromArgb(254, 233, 233);
//this.lab_banner.ForeColor = Color.FromArgb(245, 87, 87);
//this.lab_banner.BackColor = Color.FromArgb(254, 233, 233);
//this.pic_banner.Image = Properties.Resources.注意_attention_2x;
this.picStatus.Image = Properties.Resources.异常;
this.lbl_msg1.Text = "数据存放目录空间不足";
this.lbl_msg2.Text = "无法保存数据";
}
else if (this.disk_status == 3)
{
//this.lab_banner.Text = "磁盘剩余空间较少,建议清理或更换目录";
//this.pan_banner.BackColor = Color.FromArgb(253, 244, 232);
//this.lab_banner.ForeColor = Color.FromArgb(242, 191, 70);
//this.lab_banner.BackColor = Color.FromArgb(253, 244, 232);
//this.pic_banner.Image = Properties.Resources.注意_attention_2x;
this.picStatus.Image = Properties.Resources.异常;
this.lbl_msg1.Text = "磁盘剩余空间较少";
this.lbl_msg2.Text = "建议清理或更换目录";
}
}
if (this.scanner_status == 1)
{
this.pic_scannerStatus.Image = Properties.Resources.对勾_1;
this.pl_scanner.BackgroundImage = Properties.Resources.Frame_7;
}
else
{
this.pic_scannerStatus.Image = Properties.Resources.错_2x;
this.pl_scanner.BackgroundImage = Properties.Resources.Frame_14;
}
if (this.net_status == 1)
{
this.picNetStatus.Image = Properties.Resources.对勾_1;
this.pl_net.BackgroundImage = Properties.Resources.Frame_7;
}
else
{
this.picNetStatus.Image = Properties.Resources.错_2x;
this.pl_net.BackgroundImage = Properties.Resources.Frame_14;
}
if (this.cloud_status == 1)
{
this.picCloudStatus.Image = Properties.Resources.对勾_1;
this.pl_cloud.BackgroundImage = Properties.Resources.Frame_7;
}
else
{
this.picCloudStatus.Image = Properties.Resources.错_2x;
this.pl_cloud.BackgroundImage = Properties.Resources.Frame_14;
}
if (this.disk_status == 1)
{
this.pic_diskStatus.Image = Properties.Resources.对勾_1;
this.pl_disk.BackgroundImage = Properties.Resources.Frame_7;
}
else
{
this.pic_diskStatus.Image = Properties.Resources.感叹_2x;
this.pl_disk.BackgroundImage = Properties.Resources.Frame_12;
}
}
}
#endregion
///
/// 主界面初始化
///
///
///
private void frmMain_Load(object sender, EventArgs e)
{
//this.Text = "慧教研扫描客户端";
show_status();
update_scan_side_check();
engine = new engine_twain32(this, Settings.Default, this.change_scanner);
showDataDir();
this.lblInstallPath.Text = Application.StartupPath;
biz_environment.init_unique_client_id();
//biz_scannedBatch.Work();
http_manager.on_net_broken = this.on_net_broken;
http_manager.on_http_notify = this.on_http_notify;
http_manager.on_http_notify2 = this.on_http_notify2;
file_manager.on_http_notify2 = this.on_http_notify2;
biz_startScan.on_http_notify2 = this.on_http_notify2;
biz_startScan.on_startScan = this.on_startScan;
biz_reUpload.on_startScan = this.on_startScan;
this.toolTip1.IsBalloon = true;
this.toolTip1.SetToolTip(this.lblInstallPath, this.lblInstallPath.Text);
this.toolTip1.SetToolTip(this.lblDataPath, this.lblDataPath.Text);
this.toolTip1.SetToolTip(this.but_min, "最小化");
this.toolTip1.SetToolTip(this.but_close, "最小化到托盘");
if (!biz_socketServer.Start(Settings.Default.webSocket_url))
{
MsgManager.Error("服务开启失败,请检查");
}
engine.load_tw_scanner_list();
init_timer_auto_load_scanner();
//lblRefreshDevice_LinkClicked(null, null);
initTimer();
//pingTestAsync();
check_net_status();
checkAnswerCardServer();
update_scan_history();
http_manager.start_http_upload();
init_environment();
new self_http_manager().Start();
check_version();
}
//protected override CreateParams CreateParams
//{
// get
// {
// CreateParams cp = base.CreateParams;
// // 移除 WS_CAPTION 样式(包括标题栏)
// cp.Style &= ~0x00C00000; // ~WS_CAPTION
// return cp;
// }
//}
///
/// 更新扫描历史信息
///
private void update_scan_history()
{
Task.Run(() =>
{
while (true)
{
var history = biz_scanHistory.get_history();
this.Invoke(new Action(() =>
{
this.lblStartTime.Text = history.last_start_time.ToString("HH:mm");
//this.lblScanElapse.Text = history.last_scan_elapse.ToString() + "秒";
this.lblScanElapse.Text = history.last_scan_elapse;
this.lblTotalSum.Text = history.total_sum.ToString() + "张";
this.lblSpeed.Text = history.last_speed.ToString() + "张/秒"; ;
}));
Thread.Sleep(1000);
}
});
}
///
/// 强杀驱动弹框
///
private void update_scan_side_check()
{
Task.Run(() =>
{
while (true)
{
biz_engine_side.check();
Thread.Sleep(50);
}
});
}
///
/// 根据插拔usb,随时检测扫描仪变化,更新扫描仪下拉框
///
private void init_timer_auto_load_scanner()
{
Task.Run(() =>
{
while (true)
{
if (!scanner_manager.refresh_scanner_list())
{
//if (scanner_manager.Scanner_List.Count > 0 && scanner_manager.Scanner_List.Count(x => x.openSourceReady) == 0)
{
this.Invoke(new Action(() =>
{
this.lblRefreshDevice_LinkClicked(null, null);
}));
}
}
Thread.Sleep(2000);
}
});
}
///
/// 点击【刷新设备】按钮事件
///
///
///
private void lblRefreshDevice_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
if (!config_environment.loading)
{
config_environment.loading = true;
loadScannerByTwain();
config_environment.loading = false;
}
}
///
/// 点击【刷新设备】按钮事件,加载gif,执行刷新
///
private async void loadScannerByTwain()
{
//updateUIOLoadingState(true);
updateUIOLoadingState2(true);
//await engine.load_tw_scanner_list();
InitScannerCombobox();
//updateUIOLoadingState(false);
updateUIOLoadingState2(false);
}
///
/// 加载gif
///
///
//private void updateUIOLoadingState(Boolean loading)
//{
// if (loading)
// {
// this.loadSB.Visible = true;
// }
// else
// {
// this.loadSB.Visible = false;
// if (this.cmbDeviceList.Items.Count == 0)
// {
// //MsgManager.Show("没有加载到扫描仪");
// }
// }
//}
///
/// 加载gif
///
///
private void updateUIOLoadingState2(bool status)
{
this.onCheck_status = status;
}
///
/// 初始化扫描仪下拉框
///
private void InitScannerCombobox()
{
this.cmbDeviceList.SelectedIndexChanged -= new System.EventHandler(this.cmbDeviceList_SelectedIndexChanged);
this.cmbDeviceList.DataSource = null;
this.cmbDeviceList.DataSource = scanner_manager.Scanner_List;
if (this.cmbDeviceList.Items.Count > 0)
{
var scanner = scanner_manager.Scanner_List.FirstOrDefault(x => x.deviceName == Settings.Default.lastScanner);
if (scanner != null)
{
this.cmbDeviceList.SelectedItem = scanner;
}
else
{
this.cmbDeviceList.SelectedIndex = 0;
}
}
this.cmbDeviceList.SelectedIndexChanged += new System.EventHandler(this.cmbDeviceList_SelectedIndexChanged);
this.cmbDeviceList_SelectedIndexChanged(null, null);
}
///
/// 单面测试扫描,点击事件
///
///
///
private void lblTestA_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
try
{
//config_environment.scan_type = ScanType.Formal;
//config_environment.web_parameter = new subCmd_startScan();
//config_environment.web_parameter.uploadUrl = "http://localhost:3768/api/upload/pppp";
//var entity = new Database.tb_file_info();
//entity.fi_schema = 1;
//entity.fi_full_name = @"d:\1.txt";
//entity.fi_accountId = "lii";
//config_environment.web_parameter.token = "aabbcc22 " + DateTime.Now;
//var e_q = new upf() { entity = entity, result = new ResponseEntity() { Status = 1 }, seqNumber = 0 };
//new http_manager().Upload(e_q);
//return;
//biz_engine_side.active_3rd_form(this.Handle);
//return;
config_environment.scan_type = ScanType.Test_Panel_1_Side;
config_environment.use_source_ui = false;
config_environment.scan_ab = false;
config_environment.paper_size = PaperSize.A4;
test_scan();
}
catch (Exception ee)
{
LogManager.WriteLog(ee);
MsgManager.Error("扫描出错。");
}
}
///
/// 双面测试扫描,点击事件
///
///
///
private void lblTestAB_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//scanner_manager.set_current(-1);
//return;
try
{
config_environment.scan_type = ScanType.Test_Panel_2_Sides;
config_environment.use_source_ui = false;
config_environment.scan_ab = true;
config_environment.paper_size = PaperSize.A4;
test_scan();
}
catch (Exception ee)
{
LogManager.WriteLog(ee);
MsgManager.Error("扫描出错。");
}
}
///
/// 测试扫描业务
///
private async void test_scan()
{
var scanner = this.cmbDeviceList.SelectedItem as Device_Scanner;
if (scanner != null)
{
scanner = scanner_manager.Scanner_List.FirstOrDefault(x => x.dsIndex == scanner.dsIndex);
}
if (scanner != null)
{
var result = await engine.Scan(scanner);
if (result.Status != 1)
{
MsgManager.Warn(result.Message);
}
}
else
{
this.Invoke(new Action(() =>
{
MsgManager.Warn("请选择扫描设备");
}));
}
}
///
/// 修改目录,点击事件
///
///
///
private void lblChangeDir_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
changeDataDir();
this.toolTip1.SetToolTip(this.lblDataPath, this.lblDataPath.Text);
}
private void changeDataDir()
{
FolderBrowserDialog dialog = new FolderBrowserDialog();
dialog.Description = "请选择扫描数据存放位置";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
if (string.IsNullOrEmpty(dialog.SelectedPath))
{
MsgManager.Warn("存放位置不能为空");
}
else
{
Settings.Default.dataDir = dialog.SelectedPath;
Settings.Default.Save();
showDataDir();
}
}
}
///
/// 显示当前剩余空间和路径展示
///
private void showDataDir()
{
lblDataPath.Text = Settings.Default.dataDir;
lblDiskLeft.Text = biz_disk.getDataDirLeftSpace(Settings.Default.dataDir);
}
///
/// 窗体关闭按钮点击
///
///
///
private void but_close_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;
}
///
/// 窗体最小化按钮点击
///
///
///
private void but_min_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
Point mouseOff;
bool leftFlag = false;
///
/// 窗体移动相关
///
///
///
private void panel2_MouseMove(object sender, MouseEventArgs e)
{
if (leftFlag)
{
Point mouseSet = Control.MousePosition;
mouseSet.Offset(mouseOff.X, mouseOff.Y);
this.Location = mouseSet;
}
}
///
/// 窗体移动相关
///
///
///
private void panel2_MouseUp(object sender, MouseEventArgs e)
{
if (leftFlag)
{
leftFlag = false;
}
}
///
/// 窗体移动相关
///
///
///
private void panel2_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mouseOff = new Point(-e.X, -e.Y);
leftFlag = true;
}
}
///
/// 窗体关闭事件
///
///
///
private void frmMain2_FormClosing(object sender, FormClosingEventArgs e)
{
notifyIcon1.Dispose();
Environment.Exit(0);
}
///
/// 托盘右键 退出按钮
///
///
///
private void exit_Click(object sender, EventArgs e)
{
string msg = string.Empty;
if (config_environment.scan_state == true)
{
msg = "正在扫描中,您确定要退出吗?";
}
else if (!http_manager.check_is_queue_empty())
{
msg = "正在上传中,您确定要退出吗?";
}
else
{
msg = "您确定要退出吗?";
}
if (MsgManager.Ask(msg) == DialogResult.Yes)
{
Environment.Exit(0);
}
}
///
/// 托盘右键 打开按钮
///
///
///
private void open_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Normal;
this.ShowInTaskbar = true;
}
///
/// 扫描仪驱动下载 按钮点击
///
///
///
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start(Properties.Settings.Default.apiUrlBase + Properties.Settings.Default.DriverDownloadUrl);
}
///
/// 扫描仪列表,切换选择事件
///
///
///
private async void cmbDeviceList_SelectedIndexChanged(object sender, EventArgs e)
{
var scanner = this.cmbDeviceList.SelectedItem as Device_Scanner;
if (scanner != null)
{
scanner = scanner_manager.Scanner_List.FirstOrDefault(x => x.dsIndex == scanner.dsIndex);
}
//updateUIOLoadingState(true);
updateUIOLoadingState2(true);
show_status();
if (scanner != null)
{
biz_getScannerList.chosen_index = scanner.dsIndex;
}
var result = await engine.set_current(scanner);
if (result.Status == 1)
{
Settings.Default.lastScanner = scanner.deviceName;
Settings.Default.Save();
}
//updateUIOLoadingState(false);
updateUIOLoadingState2(false);
await FormTimer_Tick(null, null);
//auto_connect();
await connect_next();
}
///
/// 切换扫描仪业务
///
///
///
private async Task change_scanner(Device_Scanner scanner)
{
ResponseEntity response = new ResponseEntity() { Status = 1, Message = "ok" };
this.Invoke(new Action(() =>
{
this.cmbDeviceList.SelectedIndexChanged -= new System.EventHandler(this.cmbDeviceList_SelectedIndexChanged);
this.cmbDeviceList.SelectedValue = scanner.dsIndex;
biz_getScannerList.chosen_index = scanner.dsIndex;
this.cmbDeviceList.SelectedIndexChanged += new System.EventHandler(this.cmbDeviceList_SelectedIndexChanged);
//updateUIOLoadingState(true);
updateUIOLoadingState2(true);
}));
response = await engine.set_current(scanner);
this.Invoke(new Action(async () =>
{
if (response.Status == 1)
{
Settings.Default.lastScanner = scanner.deviceName;
Settings.Default.Save();
}
//updateUIOLoadingState(false);
updateUIOLoadingState2(false);
await FormTimer_Tick(null, null);
}));
return response;
}
///
/// 测试网速 按钮点击
///
///
///
private async void lblTestNet_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//pingTestAsync();
this.lblNetStatus.Text = "检查中...";
this.lblNetStatus.ForeColor = Color.Gray;
this.pl_net.BackgroundImage = Properties.Resources.Frame_15;
this.picStatus.Image = Properties.Resources._1;
//await checkAnswerCardServer();
await check_net_status();
show_status();
}
///
/// 测试网速业务
///
//private void pingTestAsync()
//{
// this.Invoke(new Action(() =>
// {
// lblNetStatus.Text = "测试中";
// lblNetStatus.ForeColor = Color.Gray;
// }));
// ThreadStart ts = new ThreadStart(ping);
// Thread thread = new Thread(ts);
// thread.Priority = ThreadPriority.Highest;
// //thread.IsBackground = true; //关闭窗体继续执行
// thread.Start();
//}
///
/// 测试网速业务
///
//private void ping()
//{
// var url = Properties.Settings.Default.pingUrl;
// float state = biz_ping.Test(Properties.Settings.Default.pingUrl);
// string msg = "测试中";
// Color color = Color.Gray;
// Image img = Properties.Resources.yes;
// this.net_status = 1;
// if (state < 1)
// {
// msg = "较差";
// color = Color.Red;
// img = Properties.Resources.错_2x;
// this.net_status = 2;
// }
// else if (state < 2.5)
// {
// msg = "一般";
// color = Color.Orange;
// }
// else if (state < 5)
// {
// msg = "良好";
// color = Color.Black;
// }
// else if (state < 15)
// {
// msg = "畅通";
// color = Color.DarkGreen;
// }
// else
// {
// msg = "极佳";
// color = Color.Green;
// }
// this.Invoke(new Action(() =>
// {
// picNetStatus.Image = img;
// lblNetStatus.Text = msg;
// lblNetStatus.ForeColor = color;
// show_status();
// }));
//}
///
/// 测试云端 按钮点击
///
///
///
private async void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
this.lblCloudStatus.ForeColor = Color.Gray;
this.lblCloudStatus.Text = "检查中...";
this.pl_cloud.BackgroundImage = Properties.Resources.Frame_15;
this.picStatus.Image = Properties.Resources._1;
await checkAnswerCardServer();
show_status();
}
///
/// 测试网络通畅 业务
///
///
private async Task check_net_status()
{
var isOk = await get_net_status();
await Task.Run(() => { Thread.Sleep(1000); });
this.Invoke(new Action(() =>
{
if (isOk)
{
picNetStatus.Image = Properties.Resources.对勾_1;
lblNetStatus.Text = "正常";
lblNetStatus.ForeColor = Color.Green;
this.net_status = 1;
}
else
{
picNetStatus.Image = Properties.Resources.错_2x;
lblNetStatus.Text = "无法连接,请联系客服";
lblNetStatus.ForeColor = Color.Orange;
this.net_status = 2;
}
}));
}
///
/// 测试云端 业务
///
///
private async Task checkAnswerCardServer()
{
var isOk = await getAnswerCardServer();
await Task.Run(() => { Thread.Sleep(1000); });
this.Invoke(new Action(() =>
{
if (isOk)
{
picCloudStatus.Image = Properties.Resources.对勾_1;
lblCloudStatus.Text = "正常";
lblCloudStatus.ForeColor = Color.Green;
//picNetStatus.Image = Properties.Resources.对勾_1;
//lblNetStatus.Text = "正常";
//lblNetStatus.ForeColor = Color.Green;
this.cloud_status = 1;
//this.net_status = 1;
}
else
{
picCloudStatus.Image = Properties.Resources.错_2x;
lblCloudStatus.Text = "无法连接,请联系客服";
lblCloudStatus.ForeColor = Color.Orange;
//picNetStatus.Image = Properties.Resources.错_2x;
//lblNetStatus.Text = "无法连接,请联系客服";
//lblNetStatus.ForeColor = Color.Orange;
this.cloud_status = 2;
//this.net_status = 2;
}
}));
}
///
/// 测试云端 业务
///
///
private async Task getAnswerCardServer()
{
Boolean isOk = false;
try
{
ServicePointManager.SecurityProtocol =
SecurityProtocolType.Ssl3 |
SecurityProtocolType.Tls |
SecurityProtocolType.Tls11 |
SecurityProtocolType.Tls12;
HttpClient httpClient = new HttpClient();
//String url = Properties.Settings.Default.apiUrlBase + Properties.Settings.Default.answerCardUrl;
//String url = Properties.Settings.Default.answerCardUrl;
//url = "https://dev3.k12100.net/teaching/api/v1/scanned_student/available";
//Dictionary data = new Dictionary();
//data.Add("test", "1");
//FormUrlEncodedContent content = new FormUrlEncodedContent(data);
//HttpResponseMessage response = await httpClient.PostAsync(url, content);
string url = ConfigManager.GetConfig("answerCardUrl");
HttpResponseMessage response = await httpClient.GetAsync(url);
response.EnsureSuccessStatusCode();
String result = await response.Content.ReadAsStringAsync();
JObject jsonData = (JObject)JsonConvert.DeserializeObject(result);
int code = Int32.Parse(jsonData["code"].ToString());
if (code == 200 || code == 500 || code == 401)
{
string dataStr = jsonData["data"].ToString();
//云端状态ok
isOk = true;
}
else
{
Console.WriteLine(DateTime.Now.ToString() + jsonData["msg"].ToString());
}
}
catch (Exception e)
{
Console.WriteLine(DateTime.Now.ToString() + e);
}
return isOk;
}
private async Task get_net_status()
{
Boolean isOk = false;
try
{
var url = "https://www.baidu.com";
HttpClient client = new HttpClient();
client.Timeout = TimeSpan.FromSeconds(2);
var response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
isOk = true;
}
catch (Exception ee)
{
isOk = false;
LogManager.WriteLog(ee);
}
return isOk;
}
///
/// 开机自启动
///
///
///
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
RegisterHelper.AutoStart(checkBox1.Checked);
}
///
/// 当http上传图片失败业务
///
private void on_net_broken()
{
config_environment.scan_state = false;
to_check_net = true;
}
///
/// http上传结果通知
///
private void on_http_notify(upf result)
{
try
{
result.entity = null;
var txt = JsonConvert.SerializeObject(result.result.Data);
biz_socketServer.Send(txt);
}
catch (Exception ee)
{
}
}
///
/// http上传结果通知2
///
private void on_http_notify2(string result)
{
try
{
biz_socketServer.Send(result);
}
catch (Exception ee)
{
}
}
///
/// 扫描开始通知
///
private void on_startScan(string url)
{
try
{
Uri uri = new Uri(url);
Properties.Settings.Default.answerCardUrl = url;
Properties.Settings.Default.pingUrl = uri.Host;
Properties.Settings.Default.Save();
}
catch (Exception ee)
{
}
}
private bool first_change = true;
///
/// 自动连接列表中下一台机器,在加入对usb的判断后,本方法已无意义
///
///
private async Task connect_next()
{
await Task.Run(() =>
{
Thread.Sleep(1000);
});
if (!first_change)
{
return;
}
try
{
if (scanner_manager.Scanner_List.Count > 0)
{
var count = scanner_manager.Scanner_List.Count(x => x.openSourceReady == true);
if (count == 0)
{
this.Invoke(new Action(() =>
{
var index = this.cmbDeviceList.SelectedIndex;
if (index + 1 >= scanner_manager.Scanner_List.Count)
{
first_change = false;
return;
index = 0;
}
else
{
index++;
}
this.cmbDeviceList.SelectedIndex = index;
}));
}
}
}
catch (Exception ee)
{
}
}
bool first_active = true;
///
/// 若第一次运行时发现没有设置目录,则弹出目录设置
///
///
///
private void frmMain2_Activated(object sender, EventArgs e)
{
if (first_active)
{
first_active = false;
if (string.IsNullOrEmpty(Settings.Default.dataDir))
{
lblChangeDir_LinkClicked(null, null);
}
this.TopMost = true;
this.TopMost = false;
}
}
///
/// 版本检查
///
private async void check_version()
{
//检查上次升级情况
var result = biz_version.read_updateInfo();
var version = ConfigManager.GetConfig("appVersion");
this.lblVersion.Text = "慧教研客户端 V" + version;
//版本检测
var entity = await biz_version.check();
//有升级进入升级流程,否则进入普通流程
if (entity != null && entity.code == 200 && entity.data.statusCode != 0 && entity.data.url.Length > 0)
{
//为1弹选择升级框,否则弹强制升级框
if (entity.data.statusCode == 1)
{
biz_mask.show_ask(this, entity);
}
else
{
biz_mask.show_force(this, entity);
}
}
else
{
//删除升级信息
var path = System.Windows.Forms.Application.StartupPath + @"\updateTemp";
if (Directory.Exists(path))
{
Directory.Delete(path, true);
}
if (result)
{
MsgManager.Show("已成功升级到 v" + version);
}
}
}
///
/// 初始化升级所需参数
///
private void init_environment()
{
//config_environment.environment = Custom_Environment.Test;
var environment = ConfigManager.GetConfig("environment");
if (environment == "1")
{
config_environment.url_base = ConfigManager.GetConfig("url_upgrade_formal");
}
else
{
config_environment.url_base = ConfigManager.GetConfig("url_upgrade_test");
}
}
///
/// 托盘 鼠标双击
///
///
///
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.WindowState = FormWindowState.Normal;
this.ShowInTaskbar = true;
this.TopMost = true;
this.TopMost = false;
}
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
notifyIcon1_MouseDoubleClick(null, null);
}
}
}