扫码枪

master
2 years ago
parent 03ca055b06
commit 4583eb27bb

@ -101,19 +101,19 @@ namespace Khd.Core.Wcs
//FiveFloorLine fiveFloorLine = new(_host, StaticData.PlcDic[0], FiveFloorLineEquip.floorNo.Value, FiveFloorLineEquip.equipNo); //FiveFloorLine fiveFloorLine = new(_host, StaticData.PlcDic[0], FiveFloorLineEquip.floorNo.Value, FiveFloorLineEquip.equipNo);
//fiveFloorLine.StartPoint(); //fiveFloorLine.StartPoint();
////五层CTU //五层CTU
//var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First(); var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First();
//FiveFloorCTU fiveFloorCTU = new(_host, StaticData.PlcDic[0], FiveFloorCTUEquip.floorNo.Value, FiveFloorCTUEquip.equipNo); FiveFloorCTU fiveFloorCTU = new(_host, StaticData.PlcDic[0], FiveFloorCTUEquip.floorNo.Value, FiveFloorCTUEquip.equipNo);
//fiveFloorCTU.StartPoint(); fiveFloorCTU.StartPoint();
////五层AGV ////五层AGV
//var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First(); //var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First();
//FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value, FifthFloorAgvEquip.equipNo); //FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value, FifthFloorAgvEquip.equipNo);
//fifthFloorAGV.StartPoint(); //fifthFloorAGV.StartPoint();
var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 11).First(); //var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 11).First();
FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[0], FifthFloorBearAgvEquip.floorNo.Value, FifthFloorBearAgvEquip.equipNo); //FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[0], FifthFloorBearAgvEquip.floorNo.Value, FifthFloorBearAgvEquip.equipNo);
fiveFloorBearAgv.StartPoint(); //fiveFloorBearAgv.StartPoint();
} }
catch (Exception ex) catch (Exception ex)
{ {

@ -167,7 +167,7 @@ namespace Khd.Core.Wcs.Wcs
new() new()
{ {
positionCode = wcsCmd.nextPointNo, positionCode = wcsCmd.nextPointNo,
type = "05" type = "00"
}, },
}, },
ctnrTyp = "1", ctnrTyp = "1",
@ -213,12 +213,12 @@ namespace Khd.Core.Wcs.Wcs
new() new()
{ {
positionCode = wcsCmd.currPointNo, positionCode = wcsCmd.currPointNo,
type = "0" type = "05"
}, },
new() new()
{ {
positionCode = wcsCmd.nextPointNo, positionCode = wcsCmd.nextPointNo,
type = "0" type = "05"
}, },
}, },
ctnrTyp = "1", ctnrTyp = "1",
@ -246,19 +246,45 @@ namespace Khd.Core.Wcs.Wcs
{ {
if (wcsCmd.cmdStatus == 3) if (wcsCmd.cmdStatus == 3)
{ {
var agvTask = new RequestAGVTaskDto var canOut = this._plc.Read("");
if (canOut != null && Convert.ToInt64(canOut) == 1)
{ {
reqCode = StaticData.SnowId.NextId().ToString(), if (item.taskType == 30)
taskCode = wcsCmd.taskCode {
}; var agvTask = new
string message = JsonConvert.SerializeObject(agvTask); {
string result = HttpHelper.HttpPost("http://172.16.12.24:8182/rcms/services/rest/hikRpcService/continueTask", message); reqCode = StaticData.SnowId.NextId().ToString(),
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); taskCode = wcsCmd.taskCode,
if (reponseMessage != null && reponseMessage.message == "成功") type = 2
{ };
wcsCmd.cmdStatus = 4; string message = JsonConvert.SerializeObject(agvTask);
dbContext.Update(wcsCmd); string result = HttpHelper.HttpPost("http://172.16.12.24:8182/rcms/services/rest/hikRpcService/boxApplyPass", message);
dbContext.SaveChanges(); ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
wcsCmd.cmdStatus = 4;
dbContext.Update(wcsCmd);
dbContext.SaveChanges();
}
}
else if(item.taskType ==29)
{
var agvTask = new
{
reqCode = StaticData.SnowId.NextId().ToString(),
taskCode = wcsCmd.taskCode,
type = 1
};
string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.HttpPost("http://172.16.12.24:8182/rcms/services/rest/hikRpcService/boxApplyPass", message);
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
wcsCmd.cmdStatus = 4;
dbContext.Update(wcsCmd);
dbContext.SaveChanges();
}
}
} }
} }
else if (wcsCmd.cmdStatus == 5) else if (wcsCmd.cmdStatus == 5)

@ -1,31 +1,21 @@
using Khd.Core.Domain.Models; using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Plc.S7.Types;
using Masuit.Tools.Logging;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.Win32;
using OfficeOpenXml;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.IO;
using System.Linq; using System.Linq;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Threading; using System.Windows.Threading;
using Thrift.Protocol;
using Thrift.Server;
using Thrift.Transport;
using ThriftService;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;
using Jc.SnowId;
using Masuit.Tools; using Masuit.Tools;
using System.Windows.Input; using System.Windows.Input;
using Khd.Core.Wpf.Scan;
using System.IO.Ports;
using System.Threading;
namespace Khd.Core.Wpf.Form namespace Khd.Core.Wpf.Form
{ {
@ -42,6 +32,8 @@ namespace Khd.Core.Wpf.Form
private DispatcherTimer ShowOrderMessage;//呈现PLC机柜信息 private DispatcherTimer ShowOrderMessage;//呈现PLC机柜信息
private object order_code; private object order_code;
private int UpState;//对应上件站点的状态,0为良好 1为损坏 private int UpState;//对应上件站点的状态,0为良好 1为损坏
private SerialPortModel serialPortModel;
private SerialPortHelper serialPortHelper;
List<BasePlcpoint> basePlcpoints = new List<BasePlcpoint>(); List<BasePlcpoint> basePlcpoints = new List<BasePlcpoint>();
object timerjilu; object timerjilu;
public class barcodeinfo public class barcodeinfo
@ -55,6 +47,37 @@ namespace Khd.Core.Wpf.Form
public List<barcodeinfo> barcodeLsit = new List<barcodeinfo>(); public List<barcodeinfo> barcodeLsit = new List<barcodeinfo>();
private void ScanMessage()
{
while (true)
{
try
{
if (SystemData.isUpdate)
{
if (!string.IsNullOrEmpty(SystemData.message))
{
Dispatcher.Invoke(() =>
{
var focusedElement = FocusManager.GetFocusedElement(this);
if (focusedElement is TextBox textBox)
{
textBox.Text = SystemData.message;
SystemData.isUpdate = false;
}
});
//检测到哪个文本框获取到了焦点
}
}
}
catch
{
}
Thread.Sleep(500);
}
}
private string selectedId; private string selectedId;
//FormShowSelect formSelect; //FormShowSelect formSelect;
// public static int WeekNo = CommonHelper.WeekOfYear(DateTime.Now, new System.Globalization.CultureInfo("zh-CN")); // public static int WeekNo = CommonHelper.WeekOfYear(DateTime.Now, new System.Globalization.CultureInfo("zh-CN"));
@ -79,6 +102,18 @@ namespace Khd.Core.Wpf.Form
MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight; MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
WindowState = WindowState.Maximized; WindowState = WindowState.Maximized;
} }
serialPortModel = new SerialPortModel();
serialPortModel.PortName = "COM7";
serialPortModel.BaudRate = 9600;
serialPortModel.DataBits = 8;
serialPortModel.Parity = Parity.None;
serialPortModel.StopBits = StopBits.One;
serialPortHelper = new SerialPortHelper();
serialPortHelper.OpenMyConn(serialPortModel);
Thread scanThread = new Thread(ScanMessage);
scanThread.IsBackground = true;
scanThread.Start();
//加载dategrid信息 //加载dategrid信息
//LoadMaterial_GetMessage(""); //LoadMaterial_GetMessage("");
//连接PLC判断 //连接PLC判断
@ -375,7 +410,6 @@ namespace Khd.Core.Wpf.Form
MessageBox.Show("请输入有效的数字"); MessageBox.Show("请输入有效的数字");
} }
} }
/// <summary> /// <summary>
/// 料箱扫描 /// 料箱扫描
/// </summary> /// </summary>

@ -34,8 +34,8 @@ namespace Khd.Core.Wpf
public static int UpFlagNum { get; set; } public static int UpFlagNum { get; set; }
} }
public static class Global public static class Global
{ {
public static JcSnowId SnowId = new JcSnowId(); public static JcSnowId SnowId = new JcSnowId();
} }
} }

@ -141,6 +141,7 @@
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="6.32.3" /> <PackageReference Include="Microsoft.IdentityModel.Tokens" Version="6.32.3" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.32.3" /> <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.32.3" />
<PackageReference Include="Jc.SnowId" Version="1.0.2" /> <PackageReference Include="Jc.SnowId" Version="1.0.2" />
<PackageReference Include="System.IO.Ports" Version="6.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Khd.Core.Domain\Khd.Core.Domain.csproj" /> <ProjectReference Include="..\Khd.Core.Domain\Khd.Core.Domain.csproj" />

@ -0,0 +1,103 @@
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Khd.Core.Wpf.Scan
{
/// <summary>
/// 串口帮助类
/// </summary>
public class SerialPortHelper
{
/// <summary>
/// 定义委托
/// </summary>
/// <param name="info"></param>
public delegate void ShowMesgDelegate(string info);
public string message = "";
//缓冲信息
public string ReceiveData = "";
private SerialPort myCom = new SerialPort();//串口对象
/// <summary>
/// 串口属性
/// </summary>
public SerialPort MyCom
{
get
{
return myCom;
}
set
{
myCom = value;
}
}
private byte myReceiveByte = 0;//接收字节
private byte[] bData = new byte[1024];//接收的字节数组
private int index = 0;
/// <summary>
/// 打开串口
/// </summary>
/// <param name="entiry"></param>
public void OpenMyConn(SerialPortModel entiry)
{
if (myCom.IsOpen)
{
myCom.Close();//关闭
}
myCom.PortName = entiry.PortName;//串口名称
myCom.BaudRate = entiry.BaudRate;//波特率
myCom.DataBits = entiry.DataBits;//数据位
myCom.StopBits = entiry.StopBits;//停止位
myCom.Parity = entiry.Parity;//校验位
myCom.ReceivedBytesThreshold = 1;//设置串口缓冲区的字节数
myCom.DataReceived += MyCom_DataReceived;//串口接收数据事件
myCom.Open();//打开串口
}
/// <summary>
/// 串口接收事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MyCom_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//读取串口缓冲区的字节数据,分两次传递结果
byte[] result = new byte[MyCom.BytesToRead];
MyCom.Read(result, 0, MyCom.BytesToRead);
ReceiveData += Encoding.UTF8.GetString(result);
if (ReceiveData.Contains("\r"))
{
message = ReceiveData;
SystemData.message = message;
ReceiveData = "";
}
SystemData.isUpdate = true;
}
/// <summary>
/// 关闭串口
/// </summary>
public void CloseMycom()
{
if (MyCom.IsOpen)
{
MyCom.Close();//关闭
}
}
}
public class SerialPortModel
{
public string PortName { get; set; }
public int BaudRate { get; set; }
public int DataBits { get; set; }
public Parity Parity { get; set; }
public StopBits StopBits { get; set; }
}
}

@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Khd.Core.Wpf
{
public class SystemData
{
public static string _message { get; set; }
public static object _lock = new object();
public static string message
{
get
{
lock (_lock)
{
return _message;
}
}
set
{
lock (_lock)
{
_message = value;
}
}
}
public static bool _isUpdate { get; set; }
public static object _updateLock = new object();
public static bool isUpdate
{
get
{
lock (_updateLock)
{
return _isUpdate;
}
}
set
{
lock (_updateLock)
{
_isUpdate = value;
}
}
}
}
}
Loading…
Cancel
Save