Commit 8ff99d2c LN

扫码更新为最新版本。

1 个父辈 859314a0
......@@ -1301,7 +1301,9 @@ namespace OnlineStore.AssemblyLine
}
private void chbDisMove_CheckedChanged(object sender, EventArgs e)
{
Test();
//Test();
if (!LoadOk)
{
return;
......
......@@ -17,64 +17,78 @@ using System.Xml.Serialization;
public class RemoteDecodeHelper
{
static int webclienttimeout = 30 * 1000;
static Process p = new Process();
private static string serverhost = ConfigAppSettings.GetValue("ScanCodeServer");
private static int webclienttimeout = 30000;
private static Process p = new Process();
private const string serverhost = "http://127.0.0.1:58137/";
public static List<CodeInfo> DecodeRequest(HObject hoimg, RemoteDecodeParam remoteDecodeParam)
{
if (serverhost.Trim().Equals(""))
{
serverhost = "http://127.0.0.1:58137/";
}
{
byte[] requestdata;
lock (hoimg)
{
using (MemoryStream mStream = new MemoryStream())
using (MemoryStream memoryStream = new MemoryStream())
{
hoimg.Serialize(mStream);
requestdata = mStream.ToArray();
mStream.Close();
hoimg.Serialize(memoryStream);
requestdata = memoryStream.ToArray();
memoryStream.Close();
}
}
return DecodeRequest(requestdata, remoteDecodeParam,true);
return DecodeRequest(requestdata, remoteDecodeParam, isHObject: true);
}
public static List<CodeInfo> DecodeRequest(Bitmap bitmap, RemoteDecodeParam remoteDecodeParam)
{
if (bitmap == null)
{
return null;
}
byte[] requestdata;
lock (bitmap)
{
using (MemoryStream mStream = new MemoryStream())
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(mStream, bitmap);
requestdata = mStream.ToArray();
mStream.Close();
using (MemoryStream memoryStream = new MemoryStream())
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, bitmap);
requestdata = memoryStream.ToArray();
memoryStream.Close();
}
}
return DecodeRequest(requestdata, remoteDecodeParam);
}
static List<CodeInfo> DecodeRequest(byte[] requestdata, RemoteDecodeParam remoteDecodeParam,bool isHObject=false)
private static List<CodeInfo> DecodeRequest(byte[] requestdata, RemoteDecodeParam remoteDecodeParam, bool isHObject = false)
{
CheckAndRunServer();
string param;
using (MemoryStream mStreamparam = new MemoryStream())
string text;
using (MemoryStream memoryStream = new MemoryStream())
{
XmlSerializer xf = new XmlSerializer(typeof(RemoteDecodeParam));
xf.Serialize(mStreamparam, remoteDecodeParam);
param = base64UrlEncode(mStreamparam.ToArray());
mStreamparam.Close();
XmlSerializer xmlSerializer = new XmlSerializer(typeof(RemoteDecodeParam));
xmlSerializer.Serialize(memoryStream, remoteDecodeParam);
text = base64UrlEncode(memoryStream.ToArray());
memoryStream.Close();
}
string url = serverhost+"ProcessBitmap?param=";
string text2 = "http://127.0.0.1:58137/ProcessBitmap?param=";
if (isHObject)
url = serverhost+"Process?param=";
byte[] resp;
{
text2 = "http://127.0.0.1:58137/Process?param=";
}
byte[] bytes;
try
{
MyWebClient webClient = new MyWebClient(webclienttimeout);
resp = webClient.UploadData(url + param, requestdata);
webClient.Dispose();
MyWebClient myWebClient = new MyWebClient(webclienttimeout);
bytes = myWebClient.UploadData(text2 + text, requestdata);
requestdata = null;
myWebClient.Dispose();
}
catch(WebException we)
catch (WebException)
{
return null;
}
......@@ -83,52 +97,62 @@ public class RemoteDecodeHelper
return null;
}
var ss = Encoding.UTF8.GetString(resp).Trim().Trim('"');
var bb = Convert.FromBase64String(ss);
List<CodeInfo> codeInfos;
using (MemoryStream mStreamResult = new MemoryStream(bb))
List<CodeInfo> result = null;
string text3 = Encoding.UTF8.GetString(bytes).Trim().Trim('"');
text3 = text3.Replace("\\/", "/");
try
{
byte[] buffer = Convert.FromBase64String(text3);
using (MemoryStream stream = new MemoryStream(buffer))
{
XmlSerializer xmlSerializer2 = new XmlSerializer(typeof(List<CodeInfo>));
result = (List<CodeInfo>)xmlSerializer2.Deserialize(stream);
}
}
catch
{
XmlSerializer xff = new XmlSerializer(typeof(List<CodeInfo>));
codeInfos = (List<CodeInfo>)xff.Deserialize(mStreamResult);
throw new Exception(text3);
}
return codeInfos;
return result;
}
/// <summary>
/// 在url中传递base64字符串需要替换加号等符号
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
static string base64UrlEncode(byte[] input)
private static string base64UrlEncode(byte[] input)
{
return Convert.ToBase64String(input).Replace('+', '-').Replace('/', '_');
}
/// <summary>
/// 检查并自动启动服务器
/// </summary>
static void CheckAndRunServer()
private static void CheckAndRunServer()
{
lock (p)
{
var pss = Process.GetProcessesByName("ScanCodeServer");
if (pss.Length > 0)
Process[] processesByName = Process.GetProcessesByName("ScanCodeServer");
if (processesByName.Length != 0)
{
return;
}
var f = "ScanCodeServer\\ScanCodeServer.exe";
if (!File.Exists(f))
string text = "ScanCodeServer\\ScanCodeServer.exe";
if (!File.Exists(text))
{
throw new Exception("找不到扫码服务器文件");
p.StartInfo = new ProcessStartInfo(f);
}
p.StartInfo = new ProcessStartInfo(text);
p.Start();
int checkcount = 5;
while (checkcount > 0)
int num = 5;
while (num > 0)
{
checkcount--;
num--;
Thread.Sleep(500);
MyWebClient webClient = new MyWebClient(webclienttimeout);
var s = webClient.DownloadString(serverhost + "alive");
if (s.Trim() == "\"1\"")
MyWebClient myWebClient = new MyWebClient(webclienttimeout);
string text2 = myWebClient.DownloadString("http://127.0.0.1:58137/alive");
if (text2.Trim() == "\"1\"")
{
return;
}
}
throw new Exception("扫码服务器打开失败");
}
}
......@@ -137,24 +161,27 @@ public class RemoteDecodeHelper
public struct RemoteDecodeParam
{
public string[] codeTypeList;
public int codeCount;
public int timeout;
}
public class MyWebClient : WebClient
{
private int _timeout;
public MyWebClient(int timeout)
{
this._timeout = timeout;
_timeout = timeout;
}
protected override WebRequest GetWebRequest(Uri address)
{
var result = base.GetWebRequest(address);
result.Timeout = this._timeout;
return result;
WebRequest webRequest = base.GetWebRequest(address);
webRequest.Timeout = _timeout;
return webRequest;
}
}
}
using CodeLibrary;
using HalconDotNet;
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Serialization;
public class RemoteDecodeHelperO
{
static int webclienttimeout = 30 * 1000;
static Process p = new Process();
private static string serverhost = ConfigAppSettings.GetValue("ScanCodeServer");
public static List<CodeInfo> DecodeRequest(HObject hoimg, RemoteDecodeParam remoteDecodeParam)
{
if (serverhost.Trim().Equals(""))
{
serverhost = "http://127.0.0.1:58137/";
}
byte[] requestdata;
lock (hoimg)
{
using (MemoryStream mStream = new MemoryStream())
{
hoimg.Serialize(mStream);
requestdata = mStream.ToArray();
mStream.Close();
}
}
return DecodeRequest(requestdata, remoteDecodeParam,true);
}
public static List<CodeInfo> DecodeRequest(Bitmap bitmap, RemoteDecodeParam remoteDecodeParam)
{
byte[] requestdata;
lock (bitmap)
{
using (MemoryStream mStream = new MemoryStream())
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(mStream, bitmap);
requestdata = mStream.ToArray();
mStream.Close();
}
}
return DecodeRequest(requestdata, remoteDecodeParam);
}
static List<CodeInfo> DecodeRequest(byte[] requestdata, RemoteDecodeParam remoteDecodeParam,bool isHObject=false)
{
CheckAndRunServer();
string param;
using (MemoryStream mStreamparam = new MemoryStream())
{
XmlSerializer xf = new XmlSerializer(typeof(RemoteDecodeParam));
xf.Serialize(mStreamparam, remoteDecodeParam);
param = base64UrlEncode(mStreamparam.ToArray());
mStreamparam.Close();
}
string url = serverhost+"ProcessBitmap?param=";
if (isHObject)
url = serverhost+"Process?param=";
byte[] resp;
try
{
MyWebClient webClient = new MyWebClient(webclienttimeout);
resp = webClient.UploadData(url + param, requestdata);
webClient.Dispose();
}
catch(WebException we)
{
return null;
}
catch
{
return null;
}
var ss = Encoding.UTF8.GetString(resp).Trim().Trim('"');
var bb = Convert.FromBase64String(ss);
List<CodeInfo> codeInfos;
using (MemoryStream mStreamResult = new MemoryStream(bb))
{
XmlSerializer xff = new XmlSerializer(typeof(List<CodeInfo>));
codeInfos = (List<CodeInfo>)xff.Deserialize(mStreamResult);
}
return codeInfos;
}
/// <summary>
/// 在url中传递base64字符串需要替换加号等符号
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
static string base64UrlEncode(byte[] input)
{
return Convert.ToBase64String(input).Replace('+', '-').Replace('/', '_');
}
/// <summary>
/// 检查并自动启动服务器
/// </summary>
static void CheckAndRunServer()
{
lock (p)
{
var pss = Process.GetProcessesByName("ScanCodeServer");
if (pss.Length > 0)
return;
var f = "ScanCodeServer\\ScanCodeServer.exe";
if (!File.Exists(f))
throw new Exception("找不到扫码服务器文件");
p.StartInfo = new ProcessStartInfo(f);
p.Start();
int checkcount = 5;
while (checkcount > 0)
{
checkcount--;
Thread.Sleep(500);
MyWebClient webClient = new MyWebClient(webclienttimeout);
var s = webClient.DownloadString(serverhost + "alive");
if (s.Trim() == "\"1\"")
return;
}
throw new Exception("扫码服务器打开失败");
}
}
[Serializable]
public struct RemoteDecodeParam
{
public string[] codeTypeList;
public int codeCount;
public int timeout;
}
public class MyWebClient : WebClient
{
private int _timeout;
public MyWebClient(int timeout)
{
this._timeout = timeout;
}
protected override WebRequest GetWebRequest(Uri address)
{
var result = base.GetWebRequest(address);
result.Timeout = this._timeout;
return result;
}
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!