Commit dd073a92 authored by leon.huang's avatar leon.huang

1.版本号更新为1.7.7.ε

2.增加注释
3.多个控件设定"是否滚动条"显示false
4.修改保存本地在mdibase里的引用,改为new三个(前中后)
5.修改ckvocupdata去除开启系统判断,实现全程基线绘制,增加时间超过600min重绘
6.更改第三方HW(实际是HL3000)传输频率与ZB相同(后面可能再修改成另外一种直接传输的逻辑)
7.注释开机等待10S再搜索HMI,这个是更早逻辑,后面有了认为设定"选项""最大搜索时长"后就无须这个逻辑
parent 081e9483
......@@ -42,7 +42,7 @@ namespace GcDevicePc
this.fid1ver.Text = this.FID1version;
this.fid2ver.Text = this.FID2version;
this.tcdver.Text = this.TCD1version;
this.PCver.Text = this.Hmiversion + "/1.7.7.γ";
this.PCver.Text = this.Hmiversion + "/1.7.7.ε";
}
}
}
......@@ -363,7 +363,7 @@ namespace GcDevicePc.Common
globaldata.m_signalbuffer.Channel1_Port.cdata = fidv[i];
globaldata.m_dpbuffer.ShowList.showDet.fDetValue = fidv[i] * 1000.0f;
//截止20211102检查,发现此方法不会被加载,所以暂时不用深究为什么只有Channel1_Port
globaldata.m_signalbuffer.Draw_Port.Add(globaldata.m_signalbuffer.Channel1_Port);
}
}
......
......@@ -40,6 +40,7 @@
this.datalist.HideSelection = false;
this.datalist.Name = "datalist";
this.datalist.OwnerDraw = true;
this.datalist.Scrollable = false;
this.datalist.UseCompatibleStateImageBehavior = false;
this.datalist.View = System.Windows.Forms.View.Details;
//
......
......@@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="&gt;&gt;datalist.Name" xml:space="preserve">
<value>datalist</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>WeifenLuo.WinFormsUI.Docking.DockContent, WeifenLuo.WinFormsUI.Docking, Version=2.9.0.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481</value>
</data>
......@@ -124,6 +127,37 @@
<value>GcDevicePc.ListViewNF, GcDevicePc, Version=1.0.0.1, Culture=neutral, PublicKeyToken=null</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="datalist.Size" type="System.Drawing.Size, System.Drawing">
<value>286, 330</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>284, 325</value>
</data>
<data name="&gt;&gt;datalist.Parent" xml:space="preserve">
<value>$this</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="datalist.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 12</value>
</data>
<data name="datalist.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>DataState</value>
</data>
<data name="datalist.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="&gt;&gt;datalist.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>GC 显示系统</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAA
......@@ -290,40 +324,6 @@
AAA=
</value>
</data>
<data name="datalist.Size" type="System.Drawing.Size, System.Drawing">
<value>286, 330</value>
</data>
<data name="&gt;&gt;datalist.Parent" xml:space="preserve">
<value>$this</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="datalist.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>284, 325</value>
</data>
<data name="datalist.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>DataState</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 12</value>
</data>
<data name="datalist.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="&gt;&gt;datalist.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>GC 显示系统</value>
</data>
<data name="&gt;&gt;datalist.Name" xml:space="preserve">
<value>datalist</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>宋体, 9pt</value>
</data>
......
......@@ -40,6 +40,7 @@
this.dockPanel1.Name = "dockPanel1";
this.dockPanel1.Size = new System.Drawing.Size(667, 589);
this.dockPanel1.TabIndex = 2;
this.dockPanel1.Resize += new System.EventHandler(this.dockPanel1_Resize);
//
// Formdebug
//
......
......@@ -28,6 +28,7 @@ namespace GcDevicePc
private bool bEnglishLanguage = (Thread.CurrentThread.CurrentUICulture == CultureInfo.GetCultureInfo("en")) ? true:false;
public Formdebug()
{
InitializeComponent();
}
......@@ -149,5 +150,10 @@ namespace GcDevicePc
{
}
private void dockPanel1_Resize(object sender, EventArgs e)
{
}
}
}
......@@ -9,7 +9,7 @@
<ErrorReportUrlHistory />
<FallbackCulture>en-US</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
<ProjectView>ShowAllFiles</ProjectView>
<ProjectView>ProjectFiles</ProjectView>
</PropertyGroup>
<PropertyGroup>
<EnableSecurityDebugging>false</EnableSecurityDebugging>
......
......@@ -81,6 +81,8 @@ namespace GcDevicePc
// ChannelDataSave2 mydatasave2 = new ChannelDataSave2();
// ChannelDataSave3 mydatasave3 = new ChannelDataSave3();
ChannelDataSaveSum mydatasaveSum = new ChannelDataSaveSum();
ChannelDataSaveSum mydatasaveSum2 = new ChannelDataSaveSum();
ChannelDataSaveSum mydatasaveSum3 = new ChannelDataSaveSum();
/// <summary>
/// 处理数据接口
......@@ -847,8 +849,8 @@ namespace GcDevicePc
/// 1.0.2.3 添加了周期完成后,重新绘图功能
private void timer1_Tick(object sender, EventArgs e)
{
this.Text = String.Format("{0}-1.7.7.γ{1}", globaldata.AppName,Formstr);
this.Text = String.Format("{0}-1.7.7.ε{1}", globaldata.AppName,Formstr);
HmiStatus.Text = bEnglishLanguage == false ? String.Format("状态:{0}", statestr) : String.Format("State:{0}", statestr);
timespan = System.DateTime.Now - startTime;
......@@ -1219,10 +1221,9 @@ namespace GcDevicePc
// mydatasave.ChannelDataStart();
// mydatasave2.ChannelDataStart();
// mydatasave3.ChannelDataStart();
mydatasaveSum.ChannelDataStart("Channel1","_前.hw","_A.hw", globaldata.m_signalbuffer.Save_Port);
mydatasaveSum.ChannelDataStart("Channel2","_中.hw","_B.hw", globaldata.m_signalbuffer.Save_Port2);
mydatasaveSum.ChannelDataStart("Channel3","_后.hw","_C.hw", globaldata.m_signalbuffer.Save_Port3);
mydatasaveSum2.ChannelDataStart("Channel2","_中.hw","_B.hw", globaldata.m_signalbuffer.Save_Port2);
mydatasaveSum3.ChannelDataStart("Channel3","_后.hw","_C.hw", globaldata.m_signalbuffer.Save_Port3);
}
if (!String.IsNullOrEmpty(globaldata.connection_ip))
{
......@@ -1575,7 +1576,9 @@ namespace GcDevicePc
}
}
/// <summary>
/// 改变软件上的开始按键为亮/暗
/// </summary>
void Menu_status()
{
if (globaldata.m_hmibuffer.gcinfo.hmistatus != 0)//已开启系统
......@@ -1596,7 +1599,7 @@ namespace GcDevicePc
globaldata.stopflag = true;
(this.title.Controls.Find("pictureMenu1", true)[0] as PictureMenu).PMOptbtnstatus = 4;//开始亮
}
else if(globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 4)
else if(globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 5)
{
globaldata.startflag = true;
globaldata.stopflag = false;
......
......@@ -8,7 +8,6 @@ using System.Diagnostics;
using GcDevicePc.IniParam;
using System.IO;
using System.Windows.Forms;
namespace GcDevicePc.ProThread
{
class CKvocUpdata
......@@ -18,7 +17,6 @@ namespace GcDevicePc.ProThread
int isstart = 0;
bool bNowStopFlag = globaldata.stopflag;
bool bBeforeStopFlag = globaldata.stopflag;
//批量更新
//用于更新记录数据
private void Monitor_DataList()
......@@ -27,7 +25,6 @@ namespace GcDevicePc.ProThread
{
double time = 0;
double value = 0;
//float dtime = 0.0f;
//float dvalue = 0.0f;
List<double[]> listPoint = new List<double[]>(); //临时数据区
......@@ -35,314 +32,270 @@ namespace GcDevicePc.ProThread
List<double[]> listRawTem = new List<double[]>(); //原始数据缓存
bool drbool = false;
UInt64 NowTimeOld = 0; //上一周期开始
while (!datamre.WaitOne(500))
{
drbool = false;
listPoint.Clear();
listRaw.Clear();
if ((globaldata.m_hmibuffer.gcinfo.methodstatus == 4 ||
globaldata.m_hmibuffer.gcinfo.methodstatus == 5) ||
globaldata.m_pcbuffer.gcpcinfo.pcworkinfo.system_Statue
) //判断HMI工作模式 0-空闲 1-2 准备 3准备就绪 4-5 运行(分保持和程升) 6-7结束后处理
// if(true)
{
#if(debug)
// if ((globaldata.m_hmibuffer.gcinfo.methodstatus == 4 ||
// globaldata.m_hmibuffer.gcinfo.methodstatus == 5) ||
// globaldata.m_pcbuffer.gcpcinfo.pcworkinfo.system_Statue
// ) //判断HMI工作模式 0-空闲 1-2 准备 3准备就绪 4-5 运行(分保持和程升) 6-7结束后处理
// if(true)
#region
// {
//改为全状态下绘制基线(之前是保存在临时,点击开启系统后一股脑丢出)
#if (debug)
Stopwatch st = new Stopwatch(); //计时
st.Reset(); //清零
#endif
//lock处断点,多次点击继续Draw_Port.Count=11,0,30,0,30,0,30,0,0,0,30,10```
lock (globaldata.m_signalbuffer.Draw_Port)
lock (globaldata.m_signalbuffer.Draw_Port)
{
bNowStopFlag = globaldata.stopflag;//停止按键标志位,默认false
if (globaldata.m_signalbuffer.Draw_Port.Count > 1)
{
bNowStopFlag = globaldata.stopflag;
if (globaldata.m_signalbuffer.Draw_Port.Count > 1)
#region
if (globaldata.startclear1)//清除开始按键之前的数据,默认false,从未进入
{
if (globaldata.startclear1)
CurveDisPlay.curdisp.cleardata();
globaldata.starttimer =
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[0]).ctimer;
time = 0;
globaldata.startclear1 = false;
}
else
{
if (globaldata.startimerIsSet1||time>600)
{
CurveDisPlay.curdisp.cleardata();
globaldata.starttimer =
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[0]).ctimer;
globaldata.starttimer = ((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[0]).ctimer;
time = 0;
globaldata.startclear1 = false;
}
else
{
if (globaldata.startimerIsSet1)
{
CurveDisPlay.curdisp.cleardata();
globaldata.starttimer =
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[0]).ctimer;
time = 0;
globaldata.startimerIsSet1 = false;
}
ushort timeend = globaldata.m_dpbuffer.ShowList.showtime.alltime;
timeend -= 5;
if (globaldata.starttimer == 0)
globaldata.starttimer =
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[0]).ctimer;
#if(debug)
globaldata.startimerIsSet1 = false;
}//是否清空绘图的标志,外部触发(物理按钮和无源输入)不会更新这个状态为true;或者累计时长大于600min
ushort timeend = globaldata.m_dpbuffer.ShowList.showtime.alltime;
timeend -= 5;//没有实际意义
if (globaldata.starttimer == 0)//成立时执行最近语句,反之不执行
globaldata.starttimer = ((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[0]).ctimer;
#if (debug)
st.Start(); //计时开始
#endif
for (int i = 0; i < globaldata.m_signalbuffer.Draw_Port.Count; i++)
for (int i = 0; i < globaldata.m_signalbuffer.Draw_Port.Count; i++)
{
if (globaldata.MethodRun_Statue == 4 || globaldata.MethodRun_Statue == 5)
// if (true)
{
if (globaldata.MethodRun_Statue == 4 || globaldata.MethodRun_Statue == 5)
// if (true)
if ((globaldata.m_hmibuffer.gcinfo.NowStartTime <=
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[0])
.ctimer) && isstart == 0 &&
(NowTimeOld != globaldata.m_hmibuffer.gcinfo.NowStartTime))
{
if ((globaldata.m_hmibuffer.gcinfo.NowStartTime <=
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[0])
.ctimer) && isstart == 0 &&
(NowTimeOld != globaldata.m_hmibuffer.gcinfo.NowStartTime))
if (CKVocAnalyzer.GlobalCKV.debugwork == 5)
{
if (CKVocAnalyzer.GlobalCKV.debugwork == 5)
{
CKVocAnalyzer.GlobalCKV.debugwork = 4;
isstart = 2;
time = 0;
drbool = false;
globaldata.starttimer = globaldata.m_hmibuffer.gcinfo.NowStartTime;
NowTimeOld = globaldata.m_hmibuffer.gcinfo.NowStartTime;
CurveDisPlay.curdisp.cleardata();
}
else
{
isstart = 2;
CurveDisPlay.curdisp.SetAxisX(
(double)globaldata.m_dpbuffer.ShowList.showtime
.alltime / 60.0);
time = 0;
drbool = false;
globaldata.starttimer = globaldata.m_hmibuffer.gcinfo.NowStartTime;
NowTimeOld = globaldata.m_hmibuffer.gcinfo.NowStartTime;
CurveDisPlay.curdisp.cleardata();
Trace.WriteLine(
globaldata.m_hmibuffer.gcinfo.NowStartTime.ToString(), "sys");
}
CKVocAnalyzer.GlobalCKV.dataFtime.FTime =
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
listPoint.Clear(); //清除记录
listRaw.Clear();
CKVocAnalyzer.GlobalCKV.debugwork = 4;
isstart = 2;
time = 0;
drbool = false;
globaldata.starttimer = globaldata.m_hmibuffer.gcinfo.NowStartTime;
NowTimeOld = globaldata.m_hmibuffer.gcinfo.NowStartTime;
CurveDisPlay.curdisp.cleardata();
}//从未进入
else
{
isstart = 2;
CurveDisPlay.curdisp.SetAxisX(
(double)globaldata.m_dpbuffer.ShowList.showtime
.alltime / 60.0);
time = 0;
drbool = false;
globaldata.starttimer = globaldata.m_hmibuffer.gcinfo.NowStartTime;
NowTimeOld = globaldata.m_hmibuffer.gcinfo.NowStartTime;
CurveDisPlay.curdisp.cleardata();
Trace.WriteLine(
globaldata.m_hmibuffer.gcinfo.NowStartTime.ToString(), "sys");
}
CKVocAnalyzer.GlobalCKV.dataFtime.FTime =
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
listPoint.Clear(); //清除记录
listRaw.Clear();
}
}
//数据回填
if (isstart == 0) //方法结束,缓存原始数据
//数据回填
if (isstart == 0) //方法结束,缓存原始数据
{
if (listRawTem.Count < 3000)
{
if (listRawTem.Count < 3000)
listRawTem.Add(new double[]
{
listRawTem.Add(new double[]
{
((SignalBuffer.Channel_XY) globaldata.m_signalbuffer.Draw_Port[i])
.ctimer,
Math.Round(
(((SignalBuffer.Channel_XY) globaldata.m_signalbuffer.Draw_Port[
i]).cdata * 1000.0f), 6)
});
}
else
{
listRawTem.Clear(); //缓存3000点,大于3000,重新开始
}
//TCP数据回传
lock (globaldata.m_signalbuffer.TCP_Port)
});
}
else
{
listRawTem.Clear(); //缓存3000点,大于3000,重新开始
}
//TCP数据回传
lock (globaldata.m_signalbuffer.TCP_Port)
{
if (globaldata.m_signalbuffer.TCP_Port.Count > 0)
{
if (globaldata.m_signalbuffer.TCP_Port.Count > 0)
Trace.WriteLine("TCP数据回传", "sys");
List<double[]> tcpraw = new List<double[]>();
for (int tcpi = 0;
tcpi < globaldata.m_signalbuffer.TCP_Port.Count;
tcpi++)
{
Trace.WriteLine("TCP数据回传", "sys");
List<double[]> tcpraw = new List<double[]>();
for (int tcpi = 0;
tcpi < globaldata.m_signalbuffer.TCP_Port.Count;
tcpi++)
tcpraw.Add(new double[]
{
tcpraw.Add(new double[]
{
((SignalBuffer.TCP_Channel) globaldata.m_signalbuffer
.TCP_Port[tcpi]).dettimer,
Math.Round(
((SignalBuffer.TCP_Channel) globaldata.m_signalbuffer
.TCP_Port[tcpi]).detdata1 * 1000.0f, 6)
});
}
if (tcpraw.Count > 0)
{
CurveDisPlay.curdisp.WriteTcp(tcpraw);
}
});
}
if (tcpraw.Count > 0)
{
CurveDisPlay.curdisp.WriteTcp(tcpraw);
}
globaldata.m_signalbuffer.TCP_Port.Clear();
}
globaldata.m_signalbuffer.TCP_Port.Clear();
}
if (isstart == 2 && listRawTem.Count > 0) //回填数据
}
if (isstart == 2 && listRawTem.Count > 0) //回填数据
{
int rami = listRawTem.FindIndex(s => s[0] >= globaldata.starttimer);
if (rami > -1) //有需要回填数据
{
int rami = listRawTem.FindIndex(s => s[0] >= globaldata.starttimer);
if (rami > -1) //有需要回填数据
for (; rami < listRawTem.Count; rami++)
{
for (; rami < listRawTem.Count; rami++)
time += (((UInt64)listRawTem[rami][0] - globaldata.starttimer) /
1000.0f / 60.0f);
if (time > 0xFFFF)
{
time += (((UInt64)listRawTem[rami][0] - globaldata.starttimer) /
1000.0f / 60.0f);
if(time > 0xFFFF)
{
Console.WriteLine("data err");
}
globaldata.starttimer = (UInt64)listRawTem[rami][0];
value = listRawTem[rami][1];
listPoint.Add(new double[]
{Math.Round(time, 4), Math.Round(value, 6)});
listRaw.Add(
new double[] { listRawTem[rami][0], Math.Round(value, 6) });
Console.WriteLine("data err");
}
globaldata.starttimer = (UInt64)listRawTem[rami][0];
value = listRawTem[rami][1];
listPoint.Add(new double[]
{Math.Round(time, 4), Math.Round(value, 6)});
listRaw.Add(new double[] { listRawTem[rami][0], Math.Round(value, 6) });
}
listRawTem.Clear();
}
if (globaldata.starttimer <=
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i]).ctimer &&
(((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i]).ctimer -
globaldata.starttimer) > 0)
listRawTem.Clear();
}
if (globaldata.starttimer <= ((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i]).ctimer && (((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i]).ctimer - globaldata.starttimer) > 0)
{
time += ((((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i]).ctimer - globaldata.starttimer) / 1000.0f / 60.0f);
if (time > 0xFFFF)
{
time += ((((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i])
.ctimer - globaldata.starttimer) / 1000.0f / 60.0f);
if(time > 0xFFFF)
{
Console.WriteLine("data err");
}
//time += 0.00083;
globaldata.starttimer =
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i])
.ctimer;
value = (((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i])
.cdata * 1000.0f);
if (time < 600)
// Console.WriteLine("data err");
File.AppendAllText(@"./timeErr.txt", time + "\t");//异常time
}
//time += 0.00083;
globaldata.starttimer =
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i])
.ctimer;
value = (((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i])
.cdata * 1000.0f);
if (time < 600)
{
listPoint.Add(new double[] { Math.Round(time, 4), Math.Round(value, 6) });
listRaw.Add(new double[]
{
listPoint.Add(new double[] { Math.Round(time, 4), Math.Round(value, 6) });
listRaw.Add(new double[]
{
((SignalBuffer.Channel_XY) globaldata.m_signalbuffer.Draw_Port[i])
.ctimer,
Math.Round(value, 6)
});
}
//时间判断终点
// if ((globaldata.MethodRun_Statue == 4 || globaldata.MethodRun_Statue == 5))
if (globaldata.m_hmibuffer.gcinfo.methodstatus < 4 ||
globaldata.m_hmibuffer.gcinfo.methodstatus > 5)
});
}
//时间判断终点
// if ((globaldata.MethodRun_Statue == 4 || globaldata.MethodRun_Statue == 5))
if (globaldata.m_hmibuffer.gcinfo.methodstatus < 4 ||
globaldata.m_hmibuffer.gcinfo.methodstatus > 5)
{
// File.AppendAllText(Application.StartupPath + "\\RAW.txt",$"{DateTime.Now} StartTime :{globaldata.m_hmibuffer.gcinfo.NowStartTime } EndTime:{globaldata.m_hmibuffer.gcinfo.NowEndTime} DrawPort:{((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i]).ctimer} Isstart:{isstart}" +"\r\n");//查看连续绘图原因
if ((globaldata.m_hmibuffer.gcinfo.NowStartTime <
globaldata.m_hmibuffer.gcinfo.NowEndTime) &&
(globaldata.m_hmibuffer.gcinfo.NowEndTime <=
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i])
.ctimer) && isstart == 2)
{
// File.AppendAllText(Application.StartupPath + "\\RAW.txt",$"{DateTime.Now} StartTime :{globaldata.m_hmibuffer.gcinfo.NowStartTime } EndTime:{globaldata.m_hmibuffer.gcinfo.NowEndTime} DrawPort:{((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i]).ctimer} Isstart:{isstart}" +"\r\n");//查看连续绘图原因
if ((globaldata.m_hmibuffer.gcinfo.NowStartTime <
globaldata.m_hmibuffer.gcinfo.NowEndTime) &&
(globaldata.m_hmibuffer.gcinfo.NowEndTime <=
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i])
.ctimer) && isstart == 2)
{
drbool = true;
isstart = 0;
break;
}
drbool = true;
isstart = 0;
break;
}
//停止按钮按下判断
if(bBeforeStopFlag != bNowStopFlag)
}
//已停止(运行)状态
if (bBeforeStopFlag != bNowStopFlag)
{
if (drbool == false && bBeforeStopFlag == false && bNowStopFlag == true)
{
if(drbool == false && bBeforeStopFlag == false && bNowStopFlag == true)
{
drbool = true;
isstart = 0;
}
bBeforeStopFlag = bNowStopFlag;
break;
drbool = true;
isstart = 0;
}
bBeforeStopFlag = bNowStopFlag;
break;
}
else
globaldata.starttimer =
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i])
.ctimer;
}
//读取数据完毕
globaldata.m_signalbuffer.Draw_Port.Clear();
else
globaldata.starttimer =
((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port[i])
.ctimer;
}
//读取数据完毕
// Console.WriteLine(globaldata.m_signalbuffer.Draw_Port.Count);
globaldata.m_signalbuffer.Draw_Port.Clear();
}
#endregion
}
#if(debug)
}
#if (debug)
st.Stop(); //计时终止
Trace.WriteLine("后处理更新时间:" + st.Elapsed.ToString(), "sys");
#endif
//if (CProfileDevice.m_DevParam.syspara.u16DetFront == 1)
//{
// for (int i = 0; i < listRaw.Count / CProfileDevice.m_DevParam.syspara.u16DetNum; i++)
// {
// lr.Add(listRaw[i]);
// }
// for (int i = 0; i < listPoint.Count / CProfileDevice.m_DevParam.syspara.u16DetNum; i++)
// {
// lp.Add(listPoint[i]);
// }
//}
CurveDisPlay.curdisp.addDataRaw(listRaw); //记录原始数据
CurveDisPlay.curdisp.addPoint(listPoint, drbool); //更新绘画区域
//lp.Clear();
//lr.Clear();
if (drbool)
{
time = 0;
CurveDisPlay.curdisp.cleardata();
}
// Console.WriteLine(string.Format("【{0}】读取个数结束 {1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), globaldata.m_signalbuffer.Draw_Port.Count));
#region 已注释
//if (CProfileDevice.m_DevParam.syspara.u16DetFront == 1)
//{
// for (int i = 0; i < listRaw.Count / CProfileDevice.m_DevParam.syspara.u16DetNum; i++)
// {
// lr.Add(listRaw[i]);
// }
// for (int i = 0; i < listPoint.Count / CProfileDevice.m_DevParam.syspara.u16DetNum; i++)
// {
// lp.Add(listPoint[i]);
// }
//}
#endregion
CurveDisPlay.curdisp.addDataRaw(listRaw); //记录原始数据
CurveDisPlay.curdisp.addPoint(listPoint, drbool); //更新绘画区域,停止系统后依旧处于累计状态
//lp.Clear();
//lr.Clear();
if (drbool)
{
time = 0;
CurveDisPlay.curdisp.cleardata();
}
if (globaldata.cancelflag1)
// Console.WriteLine(string.Format("【{0}】读取个数结束 {1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), globaldata.m_signalbuffer.Draw_Port.Count));
// }
#endregion
if (globaldata.cancelflag1)//取消按键标志
{
globaldata.cancelflag1 = false;
}
// Thread.Sleep(500);
}
// Trace.WriteLine("绘图线程退出!","sys");
}
catch (Exception ex)
......@@ -351,13 +304,10 @@ namespace GcDevicePc.ProThread
}
finally
{
}
}
//List<double[]> lr = new List<double[]>();
//List<double[]> lp = new List<double[]>();
public void CKvocUpdataStart()
{
if (datamre != null)
......@@ -369,11 +319,9 @@ namespace GcDevicePc.ProThread
t_DataSave.IsBackground = true;
t_DataSave.Start();
}
public void CKvocUpdataStop()
{
datamre.Set();
}
}
}
......@@ -40,9 +40,9 @@ namespace GcDevicePc.ProThread
drbool = false;
listPoint.Clear();
listRaw.Clear();
if ((globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 5) || globaldata.m_pcbuffer.gcpcinfo.pcworkinfo.system_Statue) //判断HMI工作模式 0-空闲 1-2 准备 3准备就绪 4-5 运行(分保持和程升) 6-7结束后处理
// if(true)
{
// if ((globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 5) || globaldata.m_pcbuffer.gcpcinfo.pcworkinfo.system_Statue) //判断HMI工作模式 0-空闲 1-2 准备 3准备就绪 4-5 运行(分保持和程升) 6-7结束后处理
// //改为全状态下绘制基线(之前是保存在临时,点击开启系统后一股脑丢出)
// {
#if(debug)
Stopwatch st = new Stopwatch(); //计时
st.Reset(); //清零
......@@ -68,7 +68,7 @@ namespace GcDevicePc.ProThread
else
{
if (globaldata.startimerIsSet2)
if (globaldata.startimerIsSet2||time>600)
{
CurveDisPlay2.curdisp2.cleardata();
starttimer = ((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port2[0]).ctimer;
......@@ -267,7 +267,7 @@ namespace GcDevicePc.ProThread
// Console.WriteLine(string.Format("【{0}】读取个数结束 {1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), globaldata.m_signalbuffer.Draw_Port2.Count));
}
//}
if (globaldata.cancelflag2)
{
......
......@@ -41,9 +41,9 @@ namespace GcDevicePc.ProThread
drbool = false;
listPoint.Clear();
listRaw.Clear();
if ((globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 5) || globaldata.m_pcbuffer.gcpcinfo.pcworkinfo.system_Statue) //判断HMI工作模式 0-空闲 1-2 准备 3准备就绪 4-5 运行(分保持和程升) 6-7结束后处理
// if(true)
{
// if ((globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 5) || globaldata.m_pcbuffer.gcpcinfo.pcworkinfo.system_Statue) //判断HMI工作模式 0-空闲 1-2 准备 3准备就绪 4-5 运行(分保持和程升) 6-7结束后处理
// //改为全状态下绘制基线(之前是保存在临时,点击开启系统后一股脑丢出)
// {
#if(debug)
Stopwatch st = new Stopwatch(); //计时
st.Reset(); //清零
......@@ -67,7 +67,7 @@ namespace GcDevicePc.ProThread
else
{
if (globaldata.startimerIsSet3)
if (globaldata.startimerIsSet3||time>600)
{
CurveDisPlay3.curdisp3.cleardata();
starttimer = ((SignalBuffer.Channel_XY)globaldata.m_signalbuffer.Draw_Port3[0]).ctimer;
......@@ -261,7 +261,7 @@ namespace GcDevicePc.ProThread
// Console.WriteLine(string.Format("【{0}】读取个数结束 {1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), globaldata.m_signalbuffer.Draw_Port3.Count));
}
// }
if (globaldata.cancelflag3)
{
......
......@@ -47,10 +47,10 @@ namespace GcDevicePc.ProThread
/// <param name="Save_PortSumList">检测器传原始数据的端口(Save_Port前检测,Save_Port2中检测,Save_Port3后检测)</param>
private void Monitor_Data(string ChannelSumList, string cur_filenameSumList,string EN_cur_filenameSumList,ArrayList Save_PortSumList)
{
#region 已注释代码段
string savefilename="";
double value = 0;
float dvalue = 0.0f;
float dvalue = 0.0f;
UInt64 starttimer = 0x7FFFFFFF;
UInt64 endtimer = 0x7FFFFFFF;
Boolean saveflag = false;
......@@ -58,7 +58,6 @@ namespace GcDevicePc.ProThread
List<float> savePoint = new List<float>();
List<UInt64> timePoint = new List<UInt64>();//临时数据区
#endregion
try
{
while (!datamre.WaitOne(500))
......@@ -80,13 +79,17 @@ namespace GcDevicePc.ProThread
#endregion
//保证在lock{}执行代码期间,被锁数组不会被干掉
lock (Save_PortSumList)
{
// Console.WriteLine(cur_filenameSumList+"开始lock");
if (Save_PortSumList.Count > 1)
{
#region HMI运行中时,采集端口发送过来的检测器数据,并保存为临时数据,最后将saveflagList变为真
if (globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 5)
{
//Console.WriteLine(cur_filenameSumList+"运行中");
//存在软件启动时,HMI就处于运行中,预创建文件夹放在这里,通过saveflagList来判断
if (saveflag== false)
......@@ -130,6 +133,7 @@ namespace GcDevicePc.ProThread
#region HMI处于就绪、运行中以外的时候(其实就是每次方法运行结束),且saveflagList为真时,将临时数据写入并创建谱图文件,最后将saveflagList变为假
else if (globaldata.m_hmibuffer.gcinfo.methodstatus < 3 || globaldata.m_hmibuffer.gcinfo.methodstatus > 5)
{
// Console.WriteLine(cur_filenameSumList+"运行结束");
starttimer = ((SignalBuffer.Channel_XY)Save_PortSumList[0]).ctimer;
Save_PortSumList.Clear();
//if (globaldata.m_hmibuffer.gcinfo.methodstatus > 5 && saveflag)
......@@ -155,10 +159,13 @@ namespace GcDevicePc.ProThread
savePoint = listPoint.GetRange(index1, index2 - index1);
TWFile twfile = new TWFile(savefilename);
twfile.TW_Open();
for (int j = 0; j < savePoint.Count; j++)
for (int j = 0; j < savePoint.Count; j++)
{
twfile.bw.Write((int)(savePoint[j] * 1000));
}
twfile.TW_Close(savePoint.Count);
}
......@@ -179,9 +186,10 @@ namespace GcDevicePc.ProThread
#region HMI已就绪时,清空临时数据,如果没有点击开始,清空HMI传过来的检测器数据,同时预创建谱图文件全路径保存为savefilenameList字符
#region HMI已就绪时,清空临时数据,如果没有点击开始,清空HMI传过来的检测器数据
else
{
// Console.WriteLine(cur_filenameSumList+"已就绪");
listPoint.Clear();
timePoint.Clear();
//Console.WriteLine("等待开始按钮!");
......@@ -195,7 +203,10 @@ namespace GcDevicePc.ProThread
}
}
#endregion
}
#region 取消功能
......
......@@ -98,7 +98,7 @@ namespace GcDevicePc.ProThread
try
{
ReadChannelData();
}
}
catch (Exception ex)
{
......
......@@ -29,6 +29,7 @@ namespace GcDevicePc.ProThread
try
{
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//socket = socket()需要在for循环里面,因为TCP的套接字描述符不能重用,需要在每个TCP的connect创建连接之前重新创建一个新的套接字描述符。后期验证
// int id = Thread.CurrentThread.ManagedThreadId;
// Console.WriteLine("当前线程{0:X}", id);
......
......@@ -11,6 +11,7 @@ namespace GcDevicePc.ProThread
public class GcDataTh
{
#region 变量
public struct stTemp
{
public ushort usCurTemp_Word1;
......@@ -153,7 +154,7 @@ namespace GcDevicePc.ProThread
break;
k = n;
}
#region 无意义
if (useflag == 0)
{
if ((Int32)(arr[0] - fDetMax_Time) < -100000)
......@@ -175,15 +176,16 @@ namespace GcDevicePc.ProThread
//bDetMax_Time = arr[0];
}
}
#endregion
}
#region 三通道数据获取
#region 通道1
private UInt32 BeforeMaxTime1 = 0;
private ushort OverTimes1 = 0;
private bool bOverTimes1 = false;
private bool bFirstMaxTim1 = true;
// ivate bool bOver
private ushort OverTimes1 = 0;
private bool bOverTimes1 = false;
private bool bFirstMaxTim1 = true;
// ivate bool bOver
/// <summary>
/// 获取通道数据
/// </summary>
......@@ -201,12 +203,14 @@ namespace GcDevicePc.ProThread
UInt32[] timev = new UInt32[30];
float[] fidv = new float[30];
if (this.setflag)
if (this.setflag)//联机后执行
{
ret = m_modbus.ReadHoldingReg(address, num, this.strIP, this.netPost, ref dest);
#region 通过能否读到继电器来决定是否继续
if (ret == 0)
{
//Console.WriteLine(dest);
//获取信号值放入fidv集合(30个)
for (int start = 0, i = 0; start < num;)
{
tmp = dest[start + 1];
......@@ -220,13 +224,14 @@ namespace GcDevicePc.ProThread
start += 4;
i++;
}
//依据dest排序
BubbleSort(ref timev, ref fidv, num / 4, 0);
{
for (int i = 0; i < num / 4; i++)
{
tmp = timev[i];
//(16)0xFFFFFF00=(10)4294967040
if (fDetMax_Time > 0xFFFFFF00 && tmp < 0xFFFFF000)
{
bOverTimes1 = true;
......@@ -234,6 +239,7 @@ namespace GcDevicePc.ProThread
fDetMax_Time = 0;
//Console.WriteLine("Date Over\r\n");
}
//(16)0x00FFFFFF=(10)16777215
if ((tmp > fDetMax_Time && Math.Abs(tmp - fDetMax_Time) < 0x00FFFFFF) || bFirstMaxTim1 == true)
{
// Console.WriteLine($"MaxTime is {string.Format("{0:X}", fDetMax_Time)}: Temp is :{string.Format("{0:X}", tmp)}");
......@@ -253,28 +259,33 @@ namespace GcDevicePc.ProThread
#region 实时绘图原始数据
lock (globaldata.m_signalbuffer.Draw_Port)
{
if (globaldata.m_signalbuffer.Draw_Port.Count < globaldata.MAX_ARRAY_LEN)
{
globaldata.m_signalbuffer.Draw_Port.Add(globaldata.m_signalbuffer.Channel1_Port);
}
Thread.Sleep(1);
//缓存信号值,最大5120,最大后重置
if (globaldata.m_signalbuffer.Draw_Port.Count < globaldata.MAX_ARRAY_LEN)
{
globaldata.m_signalbuffer.Draw_Port.Add(globaldata.m_signalbuffer.Channel1_Port);
}
else
{
globaldata.m_signalbuffer.Draw_Port.Clear();
}
}
#endregion
#region 本地hw谱图原始数据(具体传输在ChannelDataSaveSum子类中)
lock (globaldata.m_signalbuffer.Save_Port)
{
{ Thread.Sleep(1);
if (globaldata.m_signalbuffer.Save_Port.Count < globaldata.MAX_ARRAY_LEN)
{
globaldata.m_signalbuffer.Save_Port.Add(globaldata.m_signalbuffer.Channel1_Port);
globaldata.m_signalbuffer.Save_Port.Add(globaldata.m_signalbuffer.Channel1_Port);
}
else
{
globaldata.m_signalbuffer.Save_Port.Clear();
}
}
#endregion
......@@ -326,20 +337,17 @@ namespace GcDevicePc.ProThread
}
}
}
else
{
Log.Info("前检测信号卡死\t"+"ret!=0"+"\taddress:"+address+"\tnum:" +num+"\tthis.strIP:"+ this.strIP+"\tthis.netPost:" +this.netPost+"\tdest:" +dest +"\t"+DateTime.Now.ToString());
}
#endregion
}
}
#endregion
#region 通道2
private bool bOverTimes2 = false;
private ushort OverTimes2 = 0;
private bool bOverTimes2 = false;
private ushort OverTimes2 = 0;
private bool bFirstMaxTim2 = true;
private void Get_Channel2_Data(ushort address, ushort num)
{
UInt32 tmp;
......@@ -374,10 +382,10 @@ namespace GcDevicePc.ProThread
for (int i = 0; i < num / 4; i++)
{
tmp = timev[i];
if(iDetMax_Time > 0xFFFFF000 && tmp < 0x00FFFFFF)
if (iDetMax_Time > 0xFFFFF000 && tmp < 0x00FFFFFF)
{
bOverTimes2 = true;
OverTimes2 ++;
OverTimes2++;
iDetMax_Time = 0;
}
if ((tmp > iDetMax_Time && Math.Abs(tmp - iDetMax_Time) < 0x00FFFFFF) || bFirstMaxTim2 == true)
......@@ -386,15 +394,15 @@ namespace GcDevicePc.ProThread
bFirstMaxTim2 = false;
//globaldata.m_signalbuffer.Channel2_Port.ctimer = tmp;
globaldata.m_signalbuffer.Channel2_Port.ctimer = tmp + (ulong)(0x100000000 * OverTimes2);
globaldata.m_signalbuffer.Channel2_Port.cdata = fidv[i];
globaldata.m_dpbuffer.ShowList.showDet.iDetValue = fidv[i] * 1000.0f;
if (globaldata.m_signalbuffer.Draw_Port2.Count < globaldata.MAX_ARRAY_LEN)
{
globaldata.m_signalbuffer.Draw_Port2.Add(globaldata.m_signalbuffer.Channel2_Port);
}
if(globaldata.m_signalbuffer.Save_Port2.Count < globaldata.MAX_ARRAY_LEN)
{
if (globaldata.m_signalbuffer.Save_Port2.Count < globaldata.MAX_ARRAY_LEN)
{
globaldata.m_signalbuffer.Save_Port2.Add(globaldata.m_signalbuffer.Channel2_Port);
}
......@@ -438,9 +446,9 @@ namespace GcDevicePc.ProThread
}
}
}
else
else
{
Log.Info("中检测信号卡死\t"+"ret!=0"+"\taddress:"+address+"\tnum:" +num+"\tthis.strIP:"+ this.strIP+"\tthis.netPost:" +this.netPost+"\tdest:" +dest +"\t"+DateTime.Now.ToString());
Log.Info("中检测信号卡死\t" + "ret!=0" + "\taddress:" + address + "\tnum:" + num + "\tthis.strIP:" + this.strIP + "\tthis.netPost:" + this.netPost + "\tdest:" + dest + "\t" + DateTime.Now.ToString());
}
}
......@@ -448,9 +456,9 @@ namespace GcDevicePc.ProThread
#endregion
#region 通道3
private ushort OverTimes3 = 0;
private bool bOverTimes3 = false;
private bool bFirstMaxTim3 = true;
private ushort OverTimes3 = 0;
private bool bOverTimes3 = false;
private bool bFirstMaxTim3 = true;
private void Get_Channel3_Data(ushort address, ushort num)
{
UInt32 tmp;
......@@ -485,10 +493,10 @@ namespace GcDevicePc.ProThread
for (int i = 0; i < num / 4; i++)
{
tmp = timev[i];
if(bDetMax_Time > 0xFFFFFF00 && tmp < 0x000FFFFF)
if (bDetMax_Time > 0xFFFFFF00 && tmp < 0x000FFFFF)
{
bOverTimes3 = true;
OverTimes3 ++;
OverTimes3++;
bDetMax_Time = 0;
}
if ((tmp > bDetMax_Time && Math.Abs(tmp - bDetMax_Time) < 0x00FFFFFF) || bFirstMaxTim3 == true)
......@@ -497,7 +505,7 @@ namespace GcDevicePc.ProThread
bFirstMaxTim3 = false;
// globaldata.m_signalbuffer.Channel3_Port.ctimer = tmp;
globaldata.m_signalbuffer.Channel3_Port.ctimer = tmp + (ulong)(0x100000000 * OverTimes3);
globaldata.m_signalbuffer.Channel3_Port.cdata = fidv[i];
globaldata.m_dpbuffer.ShowList.showDet.bDetValue = fidv[i] * 1000.0f;
......@@ -505,8 +513,8 @@ namespace GcDevicePc.ProThread
{
globaldata.m_signalbuffer.Draw_Port3.Add(globaldata.m_signalbuffer.Channel3_Port);
}
if(globaldata.m_signalbuffer.Save_Port3.Count < globaldata.MAX_ARRAY_LEN)
{
if (globaldata.m_signalbuffer.Save_Port3.Count < globaldata.MAX_ARRAY_LEN)
{
globaldata.m_signalbuffer.Save_Port3.Add(globaldata.m_signalbuffer.Channel3_Port);
}
......@@ -527,7 +535,7 @@ namespace GcDevicePc.ProThread
}
}
}
else if(globaldata.m_pcbuffer.gcpcinfo.pcworkinfo.sendtoZb)
else if (globaldata.m_pcbuffer.gcpcinfo.pcworkinfo.sendtoZb)
{
lock (globaldata.channelA_C)
{
......@@ -548,9 +556,9 @@ namespace GcDevicePc.ProThread
}
}
}
else
else
{
Log.Info("后检测信号卡死\t"+"ret!=0"+"\taddress:"+address+"\tnum:" +num+"\tthis.strIP:"+ this.strIP+"\tthis.netPost:" +this.netPost+"\tdest:" +dest +"\t"+DateTime.Now.ToString());
Log.Info("后检测信号卡死\t" + "ret!=0" + "\taddress:" + address + "\tnum:" + num + "\tthis.strIP:" + this.strIP + "\tthis.netPost:" + this.netPost + "\tdest:" + dest + "\t" + DateTime.Now.ToString());
}
}
}
......@@ -583,7 +591,7 @@ namespace GcDevicePc.ProThread
int ret = -1;
if (this.setflag)
{
ret = m_modbus.ReadHoldingReg(address, num, this.strIP, this.netPost, ref state);
ret = m_modbus.ReadHoldingReg(address, num, this.strIP, this.netPost, ref state);
}
return ret;
......@@ -911,7 +919,7 @@ namespace GcDevicePc.ProThread
ushort[] firestatus = new ushort[4] { 0, 0, 0, 0 };
ushort[] dacstatus = new ushort[6] { 0, 0, 0, 0, 0, 0 };
ushort[] hmiabnormal = new ushort[4];
ushort[] hmipower = new ushort[6] { 0,0,0,0,0,0};
ushort[] hmipower = new ushort[6] { 0, 0, 0, 0, 0, 0 };
//ushort[] epcdata = new ushort[36];
ushort[] epc1 = new ushort[6];
......@@ -1214,7 +1222,7 @@ namespace GcDevicePc.ProThread
bool ret = false;
UInt16[] hmistate = new UInt16[9];
UInt16[] epcdata = new UInt16[16];
ret = GetHMIState(ref hmistate);
ret = GetHMIState(ref hmistate);
if (ret)
{
......@@ -1235,10 +1243,10 @@ namespace GcDevicePc.ProThread
//获取开始时间
if (globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 5)
{
UInt64 StartTime = Get_Method_StartTime();
if((HMIStartBeforeTime > 0xFFF00000 && StartTime < 0x00FFFFF) || (HMIStartOverTimes == 0 && (bOverTimes1 == true || bOverTimes2 == true || bOverTimes3 == true)))
UInt64 StartTime = Get_Method_StartTime();
if ((HMIStartBeforeTime > 0xFFF00000 && StartTime < 0x00FFFFF) || (HMIStartOverTimes == 0 && (bOverTimes1 == true || bOverTimes2 == true || bOverTimes3 == true)))
{
HMIStartOverTimes ++;
HMIStartOverTimes++;
}
globaldata.m_hmibuffer.gcinfo.NowStartTime = StartTime + (ulong)(0x100000000 * HMIStartOverTimes);
HMIStartBeforeTime = StartTime;
......@@ -1246,16 +1254,16 @@ namespace GcDevicePc.ProThread
//获取结束时间
if (globaldata.m_hmibuffer.gcinfo.methodstatus <= 3 || globaldata.m_hmibuffer.gcinfo.methodstatus > 5)
{
UInt64 EndTime = Get_Method_EndTime();
if ((HMIEndBeforeTime > 0xFFF00000 && EndTime < 0x000FFFFF) || (HMIEndOverTimes == 0 && (bOverTimes1 == true || bOverTimes2 == true || bOverTimes3 == true)))
{
UInt64 EndTime = Get_Method_EndTime();
if ((HMIEndBeforeTime > 0xFFF00000 && EndTime < 0x000FFFFF) || (HMIEndOverTimes == 0 && (bOverTimes1 == true || bOverTimes2 == true || bOverTimes3 == true)))
{
HMIEndOverTimes ++;
HMIEndOverTimes++;
}
globaldata.m_hmibuffer.gcinfo.NowEndTime = EndTime + (ulong)(0x100000000 * HMIEndOverTimes);
HMIEndBeforeTime = EndTime;
}
}
ret = GetEPCStatusData(ref epcdata);
......@@ -1357,17 +1365,20 @@ namespace GcDevicePc.ProThread
{
try
{
while (!channelmre.WaitOne(500))
{
try
{
lock (globaldata.m_signalbuffer.Draw_Port)
{
//20211104注释lock,注释后前检测实时绘图耗时由50~300降为0
//lock (globaldata.m_signalbuffer.Draw_Port)
// {
update_channeldata();
}
// }
}
catch (Exception e)
{
{
Log.Error("update_channeldata() ERROR:" + e.Message);
File.AppendAllText(Application.StartupPath + "\\log.txt", "update_channeldata() ERROR:" + e.Message + "\r\n");//查看通讯中断的原因
}
......@@ -1391,7 +1402,7 @@ namespace GcDevicePc.ProThread
{
hmimre.Reset();
}
t_GetStatusData = new Thread(HmiStatueProc);
t_GetStatusData = new Thread(HmiStatueProc);
t_GetStatusData.IsBackground = true;
t_GetStatusData.Start();
}
......
......@@ -78,13 +78,13 @@ using System.Collections.Generic;
//}
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in nics)
{
if (adapter.OperationalStatus == OperationalStatus.Up) //&& (adapter.Name == Meshport || string.IsNullOrEmpty(Meshport)))
{
bool pd1 = (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet || adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211); //判断是否是以太网连接
bool pd1 = (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet || adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211); //判断是否是以太网连接或者WIFI
if (pd1)
{
IPInterfaceProperties ip = adapter.GetIPProperties(); //IP配置信息
......@@ -95,13 +95,13 @@ using System.Collections.Generic;
{
this._localip.Add(ipadd.Address.ToString());//获取ip
this._localmask.Add(ipadd.IPv4Mask.ToString());//获取子网掩码
this._adapter.Add(adapter.Name.ToString());
this._adapter.Add(adapter.Name.ToString());//网口名称
}
}
}
}
}
if (_adapter.Contains(Meshport) == true)
if (_adapter.Contains(Meshport) == true)//网口是否已存在_adapter集合
{
int sIndex = _adapter.IndexOf(Meshport);
string strLocalip = _localip[sIndex];
......
......@@ -405,6 +405,7 @@ namespace GcDevicePc.ProThread
while (!datamre.WaitOne(500))
{
if ((globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 5) && methodconfig != null && run_stop != true&&(methodconfig.signal.u16ChannelA == 1 || methodconfig.signal.u16ChannelB == 1))
//&&(methodconfig.signal.u16ChannelA == 1 || methodconfig.signal.u16ChannelB == 1)可以避免没有勾选AB通道下执行不必要代码
//if ((globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 5) && globaldata.m_hmibuffer.gcinfo.hmistatus == 4 && run_stop != true)
{
int saveB = 0;
......@@ -895,10 +896,6 @@ namespace GcDevicePc.ProThread
StartTimeB = DateTime.Now;
}
}
if (recordA==0||recordB==0)
{
Console.ReadKey();
}
}
catch
......
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
......@@ -296,6 +297,8 @@ namespace GcDevicePc.ProThread
public static GCMethodConfig methodconfig { get; set; }
private void SendToHW_Draw()
{
Stopwatch sw = new Stopwatch();//获取两次循环的间隔时间,单位毫秒
Stopwatch sw2 = new Stopwatch();//hz测试
DateTime StartTimeA;
DateTime StartTimeB;
DateTime EndTimeA;
......@@ -313,7 +316,7 @@ namespace GcDevicePc.ProThread
bool runflag = false;
while (!datamre.WaitOne(500))
{
if ((globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 5) && methodconfig != null && run_stop != true)
if ((globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 5) && methodconfig != null && run_stop != true&&(methodconfig.signal.u16ChannelA == 1 || methodconfig.signal.u16ChannelB == 1))
//if ((globaldata.m_hmibuffer.gcinfo.methodstatus == 4 || globaldata.m_hmibuffer.gcinfo.methodstatus == 5) && globaldata.m_hmibuffer.gcinfo.hmistatus == 4 && run_stop != true)
{
int saveB = 0;
......@@ -353,384 +356,458 @@ namespace GcDevicePc.ProThread
int StepA = 0;
int StepB = 0;
StartTimeA = DateTime.Now;
StartTimeB = DateTime.Now;
int mydataA = 0;
int mydataB = 0;
int hz = 0;
bool bhz = true;
sw.Restart();
while (hz <= 20)
{
StartTimeA = DateTime.Now;
StartTimeB = DateTime.Now;
int mydataA = 0;
int mydataB = 0;
while (true)
upab(ref StartTimeA, ref StartTimeB, out EndTimeA, out EndTimeB, out tsA, out tsB, out secA, out secB, offetA, offetB, SendNumA, SendNumB, ref saveB, ref recordB, ref recordA, ref saveA, ref onea, ref oneb, ref ackoneA, ref ackoneB, ref StepA, ref StepB, ref mydataA, ref mydataB);
if (StepB >= SendNumB && StepA >= SendNumA)
{
run_stop = true;
sw.Stop();
sw2.Stop();
break;
}
if ((globaldata.m_hmibuffer.gcinfo.methodstatus != 4 && globaldata.m_hmibuffer.gcinfo.methodstatus != 5))
{
EndTimeA = DateTime.Now;
tsA = StartTimeA.Subtract(EndTimeA).Duration();
secA = (int)tsA.TotalSeconds;
EndTimeB = DateTime.Now;
tsB = StartTimeB.Subtract(EndTimeB).Duration();
secB = (int)tsB.TotalSeconds;
try
//LogHelper.I("methodstatus", "stop");
run_stop = true;
sw.Stop();
sw2.Stop();
break;
}
//写入AB
if (StepA < SendNumA || StepB < SendNumB)
{
if (hz == 20 || sw2.ElapsedMilliseconds >= 1000)
{
if (StepA < SendNumA)
//发送20次,但是没有到1S,进入等待,凑足1S。测试发现基本是没到1S
if (hz == 20)
{
if (secA <= methodconfig.signal.u16DetTimeLengthA[StepA])
while (sw2.ElapsedMilliseconds <= 1000)
{
int mydataA_old;
//Console.WriteLine("总共:" + SendNumA.ToString() + " 阶段,现在是第" + StepA.ToString() + "个阶段:" + secA.ToString() + "/" + methodconfig.signal.u16DetTimeLengthA[StepA].ToString());
switch (methodconfig.signal.uDetA[StepA])
{
case 1:
if (globaldata.channelA_A.Count >= 1)
{
//if (changeA_flag)
//{
// offetA = Int32.Parse(globaldata.channelA_A[0].ToString()) - mydataA_old;
// changeA_flag = false;
//}
Int32 lParseDate;
if (globaldata.channelA_A[0] != null && Int32.TryParse(globaldata.channelA_A[0].ToString(), out lParseDate) == true)//防止globaldata.channelA_A[0] = null
{
mydataA = lParseDate - offetA;
if (ackoneA)
{
onea = mydataA;
ackoneA = false;
}
//if (onea > saveA)
//{
// mydataA = mydataA - (onea - saveA);
//}
//else if (onea < saveA)
{
mydataA = mydataA + (saveA - onea);
}
mydataA_old = mydataA;
}
}
break;
case 2:
if (globaldata.channelA_B.Count >= 1)
{
//if (changeA_flag)
//{
// offetA = Int32.Parse(globaldata.channelA_B[0].ToString()) - mydataA_old;
// changeA_flag = false;
//}
Int32 lParseDate;
if (globaldata.channelA_B[0] != null && Int32.TryParse(globaldata.channelA_B[0].ToString(), out lParseDate) == true)//防止globaldata.channelA_B[0] = null
{
mydataA = lParseDate - offetA;
if (ackoneA)
{
onea = mydataA;
ackoneA = false;
}
//if (onea > saveA)
//{
// mydataA = mydataA - (onea - saveA);
//}
//else if (onea < saveA)
{
mydataA = mydataA + (saveA - onea);
}
mydataA_old = mydataA;
}
}
break;
case 3:
if (globaldata.channelA_C.Count >= 1)
{
//if (changeA_flag)
//{
// offetA = Int32.Parse(globaldata.channelA_C[0].ToString()) - mydataA_old;
// changeA_flag = false;
//}
Int32 lParseDate;
if (globaldata.channelA_C[0] != null && Int32.TryParse(globaldata.channelA_C[0].ToString(), out lParseDate) == true)//防止globaldata.channelA_C[0] = null
{
mydataA = lParseDate - offetA;
if (ackoneA)
{
onea = mydataA;
ackoneA = false;
}
//if (onea > saveA)
//{
// mydataA = mydataA - (onea - saveA);
//}
//else if (onea < saveA)
{
mydataA = mydataA + (saveA - onea);
}
mydataA_old = mydataA;
}
}
break;
}
if (globaldata.channelA_A.Count >= 1)
{
lock (globaldata.channelA_A)
{
globaldata.channelA_A.RemoveAt(0);
}
}
if (globaldata.channelA_B.Count >= 1)
{
lock (globaldata.channelA_B)
{
globaldata.channelA_B.RemoveAt(0);
}
}
if (globaldata.channelA_C.Count >= 1)
{
lock (globaldata.channelA_C)
{
globaldata.channelA_C.RemoveAt(0);
}
}
recordA = mydataA;
}
else
}
//到了1S但是次数不足够20,补齐20
else
{
// Console.WriteLine("到了1S但是次数不足够20,补齐20");
for (int i = 0; i < 20 - hz; i++)
{
// LogHelper.I("StepA++ ", StepA.ToString() + " " + SendNumA.ToString());
saveA = recordA;
ackoneA = true;
StepA++;
StartTimeA = DateTime.Now;
upab(ref StartTimeA, ref StartTimeB, out EndTimeA, out EndTimeB, out tsA, out tsB, out secA, out secB, offetA, offetB, SendNumA, SendNumB, ref saveB, ref recordB, ref recordA, ref saveA, ref onea, ref oneb, ref ackoneA, ref ackoneB, ref StepA, ref StepB, ref mydataA, ref mydataB);
SendDataToHW_AB(mydataA, mydataB);
}
}
hz = 0;
sw.Restart();
sw2.Restart();
continue;
}
if (sw.ElapsedMilliseconds == 0 || sw.ElapsedMilliseconds > 50)
{
sw.Restart();
SendDataToHW_AB(mydataA, mydataB);
if (bhz == true)
{
sw2.Restart();
bhz = false;
}
hz++;
Thread.Sleep(1);
continue;
}
else
{
Thread.Sleep(50 - (int)sw.ElapsedMilliseconds);
sw.Restart();
SendDataToHW_AB(mydataA, mydataB);
if (bhz == true)
{
sw2.Restart();
bhz = false;
}
hz++;
continue;
}
}
}
#region 已注释
//写入A
/*
if (StepA < SendNumA && StepB >= SendNumB)
{
// LogHelper.I("SendDataToHW_A", secA.ToString());
SendDataToHW_A(mydataA);
Thread.Sleep(50);
}
//写入B
if (StepB < SendNumB && StepA >= SendNumA)
{
// LogHelper.I("SendDataToHW_B", secB.ToString());
SendDataToHW_B(mydataB);
Thread.Sleep(50);
}
*/
//if ((globaldata.m_hmibuffer.gcinfo.methodstatus != 4 && globaldata.m_hmibuffer.gcinfo.methodstatus != 5))
//{
// break;
//}
#endregion
}
}
if ((globaldata.m_hmibuffer.gcinfo.methodstatus != 4 && globaldata.m_hmibuffer.gcinfo.methodstatus != 5) || run_stop)
{
if (runflag)
{
StopSendDataToHW();
CleanAllToHWData();
runflag = false;
run_stop = false;
}
}
}
}
private static void upab(ref DateTime StartTimeA, ref DateTime StartTimeB, out DateTime EndTimeA, out DateTime EndTimeB, out TimeSpan tsA, out TimeSpan tsB, out int secA, out int secB, int offetA, int offetB, ushort SendNumA, ushort SendNumB, ref int saveB, ref int recordB, ref int recordA, ref int saveA, ref int onea, ref int oneb, ref bool ackoneA, ref bool ackoneB, ref int StepA, ref int StepB, ref int mydataA, ref int mydataB)
{
EndTimeA = DateTime.Now;
tsA = StartTimeA.Subtract(EndTimeA).Duration();
secA = (int)tsA.TotalSeconds;
EndTimeB = DateTime.Now;
tsB = StartTimeB.Subtract(EndTimeB).Duration();
secB = (int)tsB.TotalSeconds;
try
{
if (methodconfig.signal.u16ChannelA == 1)
{
if (StepA < SendNumA)
{
if (secA <= methodconfig.signal.u16DetTimeLengthA[StepA])
{
int mydataA_old;
//Console.WriteLine("总共:" + SendNumA.ToString() + " 阶段,现在是第" + StepA.ToString() + "个阶段:" + secA.ToString() + "/" + methodconfig.signal.u16DetTimeLengthA[StepA].ToString());
if (StepB < SendNumB)
switch (methodconfig.signal.uDetA[StepA])
{
case 1:
if (globaldata.channelA_A.Count >= 1)
{
//if (changeA_flag)
//{
// offetA = Int32.Parse(globaldata.channelA_A[0].ToString()) - mydataA_old;
// changeA_flag = false;
//}
Int32 lParseDate;
if (globaldata.channelA_A[0] != null && Int32.TryParse(globaldata.channelA_A[0].ToString(), out lParseDate) == true)//防止globaldata.channelA_A[0] = null
{
if (secB <= methodconfig.signal.u16DetTimeLengthB[StepB])
mydataA = lParseDate - offetA;
if (ackoneA)
{
int mydataB_old;
//Console.WriteLine("总共:" + SendNumB.ToString() + " 阶段,现在是第" + StepB.ToString() + "个阶段:" + secB.ToString() + "/" + methodconfig.signal.u16DetTimeLengthB[i].ToString());
switch (methodconfig.signal.uDetB[StepB])
{
case 1:
if (globaldata.channelB_A.Count >= 1)
{
//if (changeB_flag)
//{
// offetB = Int32.Parse(globaldata.channelB_A[0].ToString()) - mydataB_old;
// changeB_flag = false;
//}
Int32 lParseDate;
if (globaldata.channelB_A[0] != null && Int32.TryParse(globaldata.channelB_A[0].ToString(), out lParseDate) == true)//防止globaldata.channelB_A[0] = null
{
mydataB = lParseDate - offetB;
if (ackoneB)
{
oneb = mydataB;
ackoneB = false;
}
//if (oneb > saveB)
//{
// mydataB = mydataB - (oneb - saveB);
//}
//else if (oneb < saveB)
{
mydataB = mydataB + (saveB - oneb);
}
mydataB_old = mydataB;
}
}
break;
case 2:
if (globaldata.channelB_B.Count >= 1)
{
//if (changeB_flag)
//{
// offetB = Int32.Parse(globaldata.channelB_B[0].ToString()) - mydataB_old;
// changeB_flag = false;
//}
Int32 lParseDate;
if (globaldata.channelB_B[0] != null && Int32.TryParse(globaldata.channelB_B[0].ToString(), out lParseDate) == true)//防止globaldata.channelB_B[0] = null
{
mydataB = lParseDate - offetB;
if (ackoneB)
{
oneb = mydataB;
ackoneB = false;
}
//if (oneb > saveB)
//{
// mydataB = mydataB - (oneb - saveB);
//}
//else if (oneb < saveB)
{
mydataB = mydataB + (saveB - oneb);
}
mydataB_old = mydataB;
}
}
break;
case 3:
if (globaldata.channelB_C.Count >= 1)
{
//if (changeB_flag)
//{
// offetB = Int32.Parse(globaldata.channelB_C[0].ToString()) - mydataB_old;
// changeB_flag = false;
//}
Int32 lParseDate;
if (globaldata.channelB_C[0] != null && Int32.TryParse(globaldata.channelB_C[0].ToString(), out lParseDate) == true)//防止globaldata.channelB_C[0] = null
{
mydataB = lParseDate - offetB;
if (ackoneB)
{
oneb = mydataB;
ackoneB = false;
}
//if (oneb > saveB)
//{
// mydataB = mydataB - (oneb - saveB);
//}
//else if (oneb < saveB)
{
mydataB = mydataB + (saveB - oneb);
}
mydataB_old = mydataB;
}
}
break;
}
if (globaldata.channelB_A.Count >= 1)
{
lock (globaldata.channelB_A)
{
globaldata.channelB_A.RemoveAt(0);
}
}
if (globaldata.channelB_B.Count >= 1)
{
lock (globaldata.channelB_B)
{
globaldata.channelB_B.RemoveAt(0);
}
}
if (globaldata.channelB_C.Count >= 1)
{
lock (globaldata.channelB_C)
{
globaldata.channelB_C.RemoveAt(0);
}
}
recordB = mydataB;
onea = mydataA;
ackoneA = false;
}
else
//if (onea > saveA)
//{
// mydataA = mydataA - (onea - saveA);
//}
//else if (onea < saveA)
{
// LogHelper.I("StepB ", StepB.ToString() + " " + SendNumB.ToString());
saveB = recordB;
ackoneB = true;
StepB++;
StartTimeB = DateTime.Now;
mydataA = mydataA + (saveA - onea);
}
mydataA_old = mydataA;
}
}
catch(Exception ex)
break;
case 2:
if (globaldata.channelA_B.Count >= 1)
{
File.AppendAllText(Application.StartupPath + "\\HW.txt",ex.Message + "\r\n");//查看HW基线持平原因
}
//if (changeA_flag)
//{
// offetA = Int32.Parse(globaldata.channelA_B[0].ToString()) - mydataA_old;
// changeA_flag = false;
//}
Int32 lParseDate;
if (globaldata.channelA_B[0] != null && Int32.TryParse(globaldata.channelA_B[0].ToString(), out lParseDate) == true)//防止globaldata.channelA_B[0] = null
{
mydataA = lParseDate - offetA;
if (ackoneA)
{
onea = mydataA;
ackoneA = false;
}
//写入AB
if (StepA < SendNumA && StepB < SendNumB)
{
//Console.WriteLine("SendDataToHW A B", secA.ToString() + " "+ secB.ToString());
SendDataToHW_AB(mydataA, mydataB);
// File.AppendAllText(Application.StartupPath + "\\HW.txt",$"{DateTime.Now}:SendDataToHW A:{mydataA} B:{mydataB} ChannelA_A Count:{globaldata.channelA_A.Count} ChannelB_A Count:{globaldata.channelB_A.Count}\r\n");//查看HW基线持平原因
Thread.Sleep(50);
}
//if (onea > saveA)
//{
// mydataA = mydataA - (onea - saveA);
//写入A
if (StepA < SendNumA && StepB >= SendNumB)
{
// LogHelper.I("SendDataToHW_A", secA.ToString());
SendDataToHW_A(mydataA);
//}
//else if (onea < saveA)
{
mydataA = mydataA + (saveA - onea);
Thread.Sleep(50);
}
}
mydataA_old = mydataA;
}
//写入B
if (StepB < SendNumB && StepA >= SendNumA)
}
break;
case 3:
if (globaldata.channelA_C.Count >= 1)
{
// LogHelper.I("SendDataToHW_B", secB.ToString());
SendDataToHW_B(mydataB);
//if (changeA_flag)
//{
// offetA = Int32.Parse(globaldata.channelA_C[0].ToString()) - mydataA_old;
// changeA_flag = false;
//}
Int32 lParseDate;
if (globaldata.channelA_C[0] != null && Int32.TryParse(globaldata.channelA_C[0].ToString(), out lParseDate) == true)//防止globaldata.channelA_C[0] = null
{
mydataA = lParseDate - offetA;
Thread.Sleep(50);
}
if (ackoneA)
{
onea = mydataA;
ackoneA = false;
}
if (StepB >= SendNumB && StepA >= SendNumA)
{
run_stop = true;
break;
}
//if (onea > saveA)
//{
// mydataA = mydataA - (onea - saveA);
//}
//else if (onea < saveA)
{
mydataA = mydataA + (saveA - onea);
}
mydataA_old = mydataA;
}
if ((globaldata.m_hmibuffer.gcinfo.methodstatus != 4 && globaldata.m_hmibuffer.gcinfo.methodstatus != 5))
{
//LogHelper.I("methodstatus", "stop");
run_stop = true;
break;
}
break;
}
if (globaldata.channelA_A.Count >= 1)
{
lock (globaldata.channelA_A)
{
globaldata.channelA_A.RemoveAt(0);
}
}
//if ((globaldata.m_hmibuffer.gcinfo.methodstatus != 4 && globaldata.m_hmibuffer.gcinfo.methodstatus != 5))
//{
// break;
//}
if (globaldata.channelA_B.Count >= 1)
{
lock (globaldata.channelA_B)
{
globaldata.channelA_B.RemoveAt(0);
}
}
if (globaldata.channelA_C.Count >= 1)
{
lock (globaldata.channelA_C)
{
globaldata.channelA_C.RemoveAt(0);
}
}
}
recordA = mydataA;
}
else
{
// LogHelper.I("StepA++ ", StepA.ToString() + " " + SendNumA.ToString());
saveA = recordA;
ackoneA = true;
StepA++;
StartTimeA = DateTime.Now;
}
}
}
if ((globaldata.m_hmibuffer.gcinfo.methodstatus != 4 && globaldata.m_hmibuffer.gcinfo.methodstatus != 5) || run_stop)
if ( methodconfig.signal.u16ChannelB == 1)
{
if (StepB < SendNumB)
{
if (runflag)
if (secB <= methodconfig.signal.u16DetTimeLengthB[StepB])
{
StopSendDataToHW();
CleanAllToHWData();
runflag = false;
run_stop = false;
}
int mydataB_old;
//Console.WriteLine("总共:" + SendNumB.ToString() + " 阶段,现在是第" + StepB.ToString() + "个阶段:" + secB.ToString() + "/" + methodconfig.signal.u16DetTimeLengthB[i].ToString());
switch (methodconfig.signal.uDetB[StepB])
{
case 1:
if (globaldata.channelB_A.Count >= 1)
{
//if (changeB_flag)
//{
// offetB = Int32.Parse(globaldata.channelB_A[0].ToString()) - mydataB_old;
// changeB_flag = false;
//}
Int32 lParseDate;
if (globaldata.channelB_A[0] != null && Int32.TryParse(globaldata.channelB_A[0].ToString(), out lParseDate) == true)//防止globaldata.channelB_A[0] = null
{
mydataB = lParseDate - offetB;
if (ackoneB)
{
oneb = mydataB;
ackoneB = false;
}
//if (oneb > saveB)
//{
// mydataB = mydataB - (oneb - saveB);
//}
//else if (oneb < saveB)
{
mydataB = mydataB + (saveB - oneb);
}
mydataB_old = mydataB;
}
}
break;
case 2:
if (globaldata.channelB_B.Count >= 1)
{
//if (changeB_flag)
//{
// offetB = Int32.Parse(globaldata.channelB_B[0].ToString()) - mydataB_old;
// changeB_flag = false;
//}
Int32 lParseDate;
if (globaldata.channelB_B[0] != null && Int32.TryParse(globaldata.channelB_B[0].ToString(), out lParseDate) == true)//防止globaldata.channelB_B[0] = null
{
mydataB = lParseDate - offetB;
if (ackoneB)
{
oneb = mydataB;
ackoneB = false;
}
//if (oneb > saveB)
//{
// mydataB = mydataB - (oneb - saveB);
//}
//else if (oneb < saveB)
{
mydataB = mydataB + (saveB - oneb);
}
mydataB_old = mydataB;
}
}
break;
case 3:
if (globaldata.channelB_C.Count >= 1)
{
//if (changeB_flag)
//{
// offetB = Int32.Parse(globaldata.channelB_C[0].ToString()) - mydataB_old;
// changeB_flag = false;
//}
Int32 lParseDate;
if (globaldata.channelB_C[0] != null && Int32.TryParse(globaldata.channelB_C[0].ToString(), out lParseDate) == true)//防止globaldata.channelB_C[0] = null
{
mydataB = lParseDate - offetB;
if (ackoneB)
{
oneb = mydataB;
ackoneB = false;
}
//if (oneb > saveB)
//{
// mydataB = mydataB - (oneb - saveB);
//}
//else if (oneb < saveB)
{
mydataB = mydataB + (saveB - oneb);
}
mydataB_old = mydataB;
}
}
break;
}
if (globaldata.channelB_A.Count >= 1)
{
lock (globaldata.channelB_A)
{
globaldata.channelB_A.RemoveAt(0);
}
}
if (globaldata.channelB_B.Count >= 1)
{
lock (globaldata.channelB_B)
{
globaldata.channelB_B.RemoveAt(0);
}
}
if (globaldata.channelB_C.Count >= 1)
{
lock (globaldata.channelB_C)
{
globaldata.channelB_C.RemoveAt(0);
}
}
recordB = mydataB;
}
else
{
// LogHelper.I("StepB ", StepB.ToString() + " " + SendNumB.ToString());
saveB = recordB;
ackoneB = true;
StepB++;
StartTimeB = DateTime.Now;
}
}
}
}
catch (Exception ex)
{
File.AppendAllText(Application.StartupPath + "\\HW.txt", ex.Message + "\r\n");//查看HW基线持平原因
}
}
......
......@@ -236,7 +236,7 @@ namespace GcDevicePc
}));
break;
}
}
}//如果没有从集合找到可连接IP,进入下一步
if (bCanFindBindHMI == true)
{
break;
......@@ -332,7 +332,7 @@ namespace GcDevicePc
{
try
{
globaldata.connection_ip = ((globaldata.DeviceInfo)globaldata.DeviceList[HMIMACComboBox1.SelectedIndex]).IpAddr;
globaldata.connection_ip = ((globaldata.DeviceInfo)globaldata.DeviceList[HMIMACComboBox1.SelectedIndex]).IpAddr;//ip和mac绑定
bBindOK = true;
this.label3.Text = "";
HMIMACComboBox1.Visible = false;
......@@ -353,12 +353,12 @@ namespace GcDevicePc
private void vSearch_HMI_Poll()
{
Thread.Sleep(10000); //延时10S等待HMI开机
// Thread.Sleep(10000); //延时10S等待HMI开机,改为用户指定(选项)
HMISearch mysearch = new HMISearch(globaldata.m_pcbuffer.gcpcinfo.pcworkinfo.hmimac);
mysearch.bSearch_Bind_HMI();
bStartSearchOK = true;
mysearch.ThStart();
mysearch.ThStart();
// mysearch.ThStart();
if (globaldata.DeviceList.Count < 1)
{
......
......@@ -24,7 +24,7 @@ AppName=
Name=admin
Password=0
[SendData]
Thirdparty=1
Thirdparty=0
Foreign=1
[SaveData]
ZBSaveData=1
......
No preview for this file type
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment