初始化提交

This commit is contained in:
lq
2026-09-09 18:42:38 +08:00
commit 40a6cb3baf
2461 changed files with 2778202 additions and 0 deletions
Binary file not shown.
+512
View File
@@ -0,0 +1,512 @@
{
"Version": 1,
"WorkspaceRootPath": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.controlcenter\\controlcenter_plc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|solutionrelative:jinyuan.controlcenter\\controlcenter_plc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|f:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.controlcenter\\controlcenter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|solutionrelative:jinyuan.controlcenter\\controlcenter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{530B6426-08E7-461C-91DC-787F876620FC}|JinYuan.MES\\JinYuan.MES.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.mes\\mesdataprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{530B6426-08E7-461C-91DC-787F876620FC}|JinYuan.MES\\JinYuan.MES.csproj|solutionrelative:jinyuan.mes\\mesdataprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmhistory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmhistory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\bin\\Debug\\LargeSquareOne.exe.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:LargeSquareOne\\bin\\Debug\\LargeSquareOne.exe.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{530B6426-08E7-461C-91DC-787F876620FC}|JinYuan.MES\\JinYuan.MES.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.mes\\imes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{530B6426-08E7-461C-91DC-787F876620FC}|JinYuan.MES\\JinYuan.MES.csproj|solutionrelative:jinyuan.mes\\imes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.controlcenter\\controlcenter_total.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|solutionrelative:jinyuan.controlcenter\\controlcenter_total.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{2AB7E380-7795-448A-933C-0F6A081B5E7E}|JinYuan.VirtualDataLibrary\\JinYuan.VirtualDataLibrary.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.virtualdatalibrary\\dbsql.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{2AB7E380-7795-448A-933C-0F6A081B5E7E}|JinYuan.VirtualDataLibrary\\JinYuan.VirtualDataLibrary.csproj|solutionrelative:jinyuan.virtualdatalibrary\\dbsql.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmdatamonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmdatamonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{4C0BCB84-5CD7-4846-8363-C4C10D46E391}|JinYuan.Models\\JinYuan.Models.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.models\\dataturnover.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C0BCB84-5CD7-4846-8363-C4C10D46E391}|JinYuan.Models\\JinYuan.Models.csproj|solutionrelative:jinyuan.models\\dataturnover.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\config\\configure.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\config\\configure.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.controlcenter\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|solutionrelative:jinyuan.controlcenter\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmmonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmmonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\Language\\LanguageManager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmmonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmmonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}|PLC\\PLC.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\plc\\base\\plcreadwritebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}|PLC\\PLC.csproj|solutionrelative:plc\\base\\plcreadwritebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}|PLC\\PLC.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\plc\\plclibrary\\omroncipnet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}|PLC\\PLC.csproj|solutionrelative:plc\\plclibrary\\omroncipnet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}|Language\\Language.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\language\\languages.resx||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
"RelativeMoniker": "D:0:0:{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}|Language\\Language.csproj|solutionrelative:language\\languages.resx||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\viewmodel\\viewmodelbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\viewmodel\\viewmodelbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmdatamonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmdatamonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmloginmes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmloginmes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{530B6426-08E7-461C-91DC-787F876620FC}|JinYuan.MES\\JinYuan.MES.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.mes\\mesapihelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{530B6426-08E7-461C-91DC-787F876620FC}|JinYuan.MES\\JinYuan.MES.csproj|solutionrelative:jinyuan.mes\\mesapihelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\JinYuan.ControlCenter\\ControlCenter_Total.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\LargeSquareOne\\FrmMonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmparamset.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmparamset.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmloginmes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmloginmes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmparamset.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmparamset.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\variableeditform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\variableeditform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 7,
"Children": [
{
"$type": "Document",
"DocumentIndex": 9,
"Title": "Program.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\Program.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\Program.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\Program.cs",
"RelativeToolTip": "LargeSquareOne\\Program.cs",
"ViewState": "AgIAAEcAAAAAAAAAAAAWwFcAAAAmAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-10T09:06:30.624Z"
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "DBSQL.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.VirtualDataLibrary\\DBSQL.cs",
"RelativeDocumentMoniker": "JinYuan.VirtualDataLibrary\\DBSQL.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.VirtualDataLibrary\\DBSQL.cs",
"RelativeToolTip": "JinYuan.VirtualDataLibrary\\DBSQL.cs",
"ViewState": "AgIAAJICAAAAAAAAAAA6wKMCAABlAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-03-02T08:52:08.091Z"
},
{
"$type": "Document",
"DocumentIndex": 7,
"Title": "ControlCenter_Total.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\ControlCenter_Total.cs",
"RelativeDocumentMoniker": "JinYuan.ControlCenter\\ControlCenter_Total.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\ControlCenter_Total.cs",
"RelativeToolTip": "JinYuan.ControlCenter\\ControlCenter_Total.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAUBAAAIAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-02-08T06:32:33.986Z"
},
{
"$type": "Document",
"DocumentIndex": 10,
"Title": "FrmDataMonitor.cs [\u8BBE\u8BA1]",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmDataMonitor.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmDataMonitor.cs",
"ToolTip": "D:\\\u4E0A\u4F4D\u673A\u7A0B\u5E8F\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A\\LargeSquareOne\\FrmDataMonitor.cs [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-02-08T06:46:15.24Z"
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "IMes.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.MES\\IMes.cs",
"RelativeDocumentMoniker": "JinYuan.MES\\IMes.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.MES\\IMes.cs",
"RelativeToolTip": "JinYuan.MES\\IMes.cs",
"ViewState": "AgIAAFMAAAAAAAAAAAA6wGIAAABTAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-09T00:28:23.512Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "MesDataProcess.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.MES\\MesDataProcess.cs",
"RelativeDocumentMoniker": "JinYuan.MES\\MesDataProcess.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.MES\\MesDataProcess.cs",
"RelativeToolTip": "JinYuan.MES\\MesDataProcess.cs",
"ViewState": "AgIAAAYAAAAAAAAAAADwv+4EAAAIAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-14T03:07:38.75Z"
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "ControlCenter.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\ControlCenter.cs",
"RelativeDocumentMoniker": "JinYuan.ControlCenter\\ControlCenter.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\ControlCenter.cs",
"RelativeToolTip": "JinYuan.ControlCenter\\ControlCenter.cs",
"ViewState": "AgIAAGQAAAAAAAAAAAAAwHgAAAAJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-11T02:11:13.486Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "ControlCenter_Plc.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\ControlCenter_Plc.cs",
"RelativeDocumentMoniker": "JinYuan.ControlCenter\\ControlCenter_Plc.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\ControlCenter_Plc.cs",
"RelativeToolTip": "JinYuan.ControlCenter\\ControlCenter_Plc.cs",
"ViewState": "AgIAADIGAAAAAAAAAAAkwDgGAAAfAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-03-02T05:55:34.116Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "FrmMain.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMain.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmMain.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMain.cs",
"RelativeToolTip": "LargeSquareOne\\FrmMain.cs",
"ViewState": "AgIAAGcAAAAAAAAAAAAgwHIAAAApAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-11T02:46:07.051Z"
},
{
"$type": "Document",
"DocumentIndex": 17,
"Title": "FrmMonitor.cs [\u8BBE\u8BA1]",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMonitor.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmMonitor.cs",
"ToolTip": "D:\\\u4E0A\u4F4D\u673A\u7A0B\u5E8F\\S1095-17\u8D28\u8C31\u68C0\u6F0F\u673A0811\\LargeSquareOne\\FrmMonitor.cs [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-05T01:47:15.627Z"
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "FrmHistory.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmHistory.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmHistory.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmHistory.cs",
"RelativeToolTip": "LargeSquareOne\\FrmHistory.cs",
"ViewState": "AgIAANgAAAAAAAAAAAAqwN8AAABEAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-14T03:12:00.066Z"
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "LargeSquareOne.exe.config",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\bin\\Debug\\LargeSquareOne.exe.config",
"RelativeDocumentMoniker": "LargeSquareOne\\bin\\Debug\\LargeSquareOne.exe.config",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\bin\\Debug\\LargeSquareOne.exe.config",
"RelativeToolTip": "LargeSquareOne\\bin\\Debug\\LargeSquareOne.exe.config",
"ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|",
"WhenOpened": "2026-06-11T08:42:27.05Z"
},
{
"$type": "Document",
"DocumentIndex": 12,
"Title": "App.config",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\App.config",
"RelativeDocumentMoniker": "LargeSquareOne\\App.config",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\App.config",
"RelativeToolTip": "LargeSquareOne\\App.config",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAIAAAAUAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|",
"WhenOpened": "2025-12-18T11:36:22.116Z"
},
{
"$type": "Document",
"DocumentIndex": 16,
"Title": "LanguageManager.cs",
"DocumentMoniker": "D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\Language\\LanguageManager.cs",
"ToolTip": "D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\Language\\LanguageManager.cs",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-05T01:52:47.313Z"
},
{
"$type": "Document",
"DocumentIndex": 14,
"Title": "app.config",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\app.config",
"RelativeDocumentMoniker": "JinYuan.ControlCenter\\app.config",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\app.config",
"RelativeToolTip": "JinYuan.ControlCenter\\app.config",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|",
"WhenOpened": "2026-02-11T00:40:47.274Z"
},
{
"$type": "Document",
"DocumentIndex": 11,
"Title": "DataTurnover.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.Models\\DataTurnover.cs",
"RelativeDocumentMoniker": "JinYuan.Models\\DataTurnover.cs",
"ToolTip": "D:\\\u4E0A\u4F4D\u673A\u7A0B\u5E8F\\2026-3-2\\S1095-17\u8D28\u8C31\u68C0\u6F0F\u673A0811\\JinYuan.Models\\DataTurnover.cs*",
"ViewState": "AgIAAAgAAAAAAAAAAAAowCcAAAARAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-19T07:41:00.23Z"
},
{
"$type": "Document",
"DocumentIndex": 18,
"Title": "FrmMain.cs [\u8BBE\u8BA1]",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMain.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmMain.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMain.cs [\u8BBE\u8BA1]",
"RelativeToolTip": "LargeSquareOne\\FrmMain.cs [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-01-05T08:43:03.532Z"
},
{
"$type": "Document",
"DocumentIndex": 13,
"Title": "Configure.xml",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\Config\\Configure.xml",
"RelativeDocumentMoniker": "LargeSquareOne\\Config\\Configure.xml",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\Config\\Configure.xml",
"RelativeToolTip": "LargeSquareOne\\Config\\Configure.xml",
"ViewState": "AgIAAA8AAAAAAAAAAAAAAC8AAAAUAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003576|",
"WhenOpened": "2026-02-26T08:51:36.338Z"
},
{
"$type": "Document",
"DocumentIndex": 15,
"Title": "FrmMonitor.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMonitor.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmMonitor.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMonitor.cs",
"RelativeToolTip": "LargeSquareOne\\FrmMonitor.cs",
"ViewState": "AgIAABQBAAAAAAAAAAAQwC4BAABGAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-01-05T02:18:00.018Z"
},
{
"$type": "Document",
"DocumentIndex": 19,
"Title": "PlcReadWriteBase.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\PLC\\Base\\PlcReadWriteBase.cs",
"RelativeDocumentMoniker": "PLC\\Base\\PlcReadWriteBase.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\PLC\\Base\\PlcReadWriteBase.cs",
"RelativeToolTip": "PLC\\Base\\PlcReadWriteBase.cs",
"ViewState": "AgIAAKMAAAAAAAAAAAD4v7QAAAAhAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-02-08T06:51:10.775Z"
},
{
"$type": "Document",
"DocumentIndex": 20,
"Title": "OmronCipNet.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\PLC\\PlcLibrary\\OmronCipNet.cs",
"RelativeDocumentMoniker": "PLC\\PlcLibrary\\OmronCipNet.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\PLC\\PlcLibrary\\OmronCipNet.cs",
"RelativeToolTip": "PLC\\PlcLibrary\\OmronCipNet.cs",
"ViewState": "AgIAAGEBAAAAAAAAAAAMwGsBAAAhAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-02-08T06:51:14.3Z"
},
{
"$type": "Document",
"DocumentIndex": 24,
"Title": "FrmLoginMes.cs [\u8BBE\u8BA1]",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmLoginMes.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmLoginMes.cs",
"ToolTip": "D:\\\u4E0A\u4F4D\u673A\u7A0B\u5E8F\\S1095-17\u8D28\u8C31\u68C0\u6F0F\u673A0811\\LargeSquareOne\\FrmLoginMes.cs [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-01-05T01:50:01.489Z"
},
{
"$type": "Document",
"DocumentIndex": 22,
"Title": "ViewModelBase.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\ViewModel\\ViewModelBase.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\ViewModel\\ViewModelBase.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\ViewModel\\ViewModelBase.cs",
"RelativeToolTip": "LargeSquareOne\\ViewModel\\ViewModelBase.cs",
"ViewState": "AgIAADQAAAAAAAAAAABQwDcAAAAWAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-01-05T02:17:15.593Z"
},
{
"$type": "Document",
"DocumentIndex": 21,
"Title": "Languages.resx",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\Language\\Languages.resx",
"RelativeDocumentMoniker": "Language\\Languages.resx",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\Language\\Languages.resx",
"RelativeToolTip": "Language\\Languages.resx",
"ViewState": "AgIAALcCAAAAAAAAAAAowM0CAAANAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|",
"WhenOpened": "2025-12-18T11:37:21.559Z"
},
{
"$type": "Document",
"DocumentIndex": 23,
"Title": "FrmDataMonitor.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmDataMonitor.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmDataMonitor.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmDataMonitor.cs",
"RelativeToolTip": "LargeSquareOne\\FrmDataMonitor.cs",
"ViewState": "AgIAABwAAAAAAAAAAABQwB8AAAAVAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-11T02:46:07.392Z"
},
{
"$type": "Document",
"DocumentIndex": 27,
"Title": "FrmMonitor.cs",
"DocumentMoniker": "D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\LargeSquareOne\\FrmMonitor.cs",
"ToolTip": "D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\LargeSquareOne\\FrmMonitor.cs",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-05T01:53:05.446Z"
},
{
"$type": "Document",
"DocumentIndex": 25,
"Title": "MESApiHelper.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.MES\\MESApiHelper.cs",
"RelativeDocumentMoniker": "JinYuan.MES\\MESApiHelper.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.MES\\MESApiHelper.cs",
"RelativeToolTip": "JinYuan.MES\\MESApiHelper.cs",
"ViewState": "AgIAAA4AAAAAAAAAAAAIwAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-09T00:28:26.261Z"
},
{
"$type": "Document",
"DocumentIndex": 26,
"Title": "ControlCenter_Total.cs",
"DocumentMoniker": "D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\JinYuan.ControlCenter\\ControlCenter_Total.cs",
"ToolTip": "D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\JinYuan.ControlCenter\\ControlCenter_Total.cs",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-05T01:54:25.297Z"
},
{
"$type": "Document",
"DocumentIndex": 28,
"Title": "FrmParamSet.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmParamSet.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmParamSet.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmParamSet.cs",
"RelativeToolTip": "LargeSquareOne\\FrmParamSet.cs",
"ViewState": "AgIAAMwCAAAAAAAAAABQwM8CAAAIAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-11T04:50:20.923Z"
},
{
"$type": "Document",
"DocumentIndex": 29,
"Title": "FrmLoginMes.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmLoginMes.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmLoginMes.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmLoginMes.cs",
"RelativeToolTip": "LargeSquareOne\\FrmLoginMes.cs",
"ViewState": "AgIAAAsAAAAAAAAAAADwvzsAAAB6AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-11T02:45:13.474Z"
},
{
"$type": "Document",
"DocumentIndex": 31,
"Title": "VariableEditForm.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\VariableEditForm.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\VariableEditForm.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\VariableEditForm.cs",
"RelativeToolTip": "LargeSquareOne\\VariableEditForm.cs",
"ViewState": "AgIAAAAAAAAAAAAAAABAwAEAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-07T05:31:38.948Z"
},
{
"$type": "Document",
"DocumentIndex": 30,
"Title": "FrmParamSet.cs [\u8BBE\u8BA1]",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmParamSet.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmParamSet.cs",
"ToolTip": "D:\\\u4E0A\u4F4D\u673A\u7A0B\u5E8F\\S1095-17\u8D28\u8C31\u68C0\u6F0F\u673A0811\\LargeSquareOne\\FrmParamSet.cs [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-02-19T05:49:38.263Z"
}
]
}
]
}
]
}
+512
View File
@@ -0,0 +1,512 @@
{
"Version": 1,
"WorkspaceRootPath": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.controlcenter\\controlcenter_plc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|solutionrelative:jinyuan.controlcenter\\controlcenter_plc.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|f:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.controlcenter\\controlcenter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|solutionrelative:jinyuan.controlcenter\\controlcenter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{530B6426-08E7-461C-91DC-787F876620FC}|JinYuan.MES\\JinYuan.MES.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.mes\\mesdataprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{530B6426-08E7-461C-91DC-787F876620FC}|JinYuan.MES\\JinYuan.MES.csproj|solutionrelative:jinyuan.mes\\mesdataprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmhistory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmhistory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\bin\\Debug\\LargeSquareOne.exe.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:LargeSquareOne\\bin\\Debug\\LargeSquareOne.exe.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{530B6426-08E7-461C-91DC-787F876620FC}|JinYuan.MES\\JinYuan.MES.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.mes\\imes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{530B6426-08E7-461C-91DC-787F876620FC}|JinYuan.MES\\JinYuan.MES.csproj|solutionrelative:jinyuan.mes\\imes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.controlcenter\\controlcenter_total.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|solutionrelative:jinyuan.controlcenter\\controlcenter_total.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{2AB7E380-7795-448A-933C-0F6A081B5E7E}|JinYuan.VirtualDataLibrary\\JinYuan.VirtualDataLibrary.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.virtualdatalibrary\\dbsql.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{2AB7E380-7795-448A-933C-0F6A081B5E7E}|JinYuan.VirtualDataLibrary\\JinYuan.VirtualDataLibrary.csproj|solutionrelative:jinyuan.virtualdatalibrary\\dbsql.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmdatamonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmdatamonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{4C0BCB84-5CD7-4846-8363-C4C10D46E391}|JinYuan.Models\\JinYuan.Models.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.models\\dataturnover.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C0BCB84-5CD7-4846-8363-C4C10D46E391}|JinYuan.Models\\JinYuan.Models.csproj|solutionrelative:jinyuan.models\\dataturnover.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\config\\configure.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\config\\configure.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.controlcenter\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}|JinYuan.ControlCenter\\JinYuan.ControlCenters.csproj|solutionrelative:jinyuan.controlcenter\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmmonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmmonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\Language\\LanguageManager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmmonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmmonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}|PLC\\PLC.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\plc\\base\\plcreadwritebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}|PLC\\PLC.csproj|solutionrelative:plc\\base\\plcreadwritebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}|PLC\\PLC.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\plc\\plclibrary\\omroncipnet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}|PLC\\PLC.csproj|solutionrelative:plc\\plclibrary\\omroncipnet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}|Language\\Language.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\language\\languages.resx||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
"RelativeMoniker": "D:0:0:{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}|Language\\Language.csproj|solutionrelative:language\\languages.resx||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\viewmodel\\viewmodelbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\viewmodel\\viewmodelbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmdatamonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmdatamonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmloginmes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmloginmes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{530B6426-08E7-461C-91DC-787F876620FC}|JinYuan.MES\\JinYuan.MES.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\jinyuan.mes\\mesapihelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{530B6426-08E7-461C-91DC-787F876620FC}|JinYuan.MES\\JinYuan.MES.csproj|solutionrelative:jinyuan.mes\\mesapihelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\JinYuan.ControlCenter\\ControlCenter_Total.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\LargeSquareOne\\FrmMonitor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmparamset.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmparamset.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmloginmes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmloginmes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\frmparamset.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\frmparamset.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\largesquareone\\variableeditform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{29E1F0D0-43DC-4077-A136-F25477E56881}|LargeSquareOne\\LargeSquareOne.csproj|solutionrelative:largesquareone\\variableeditform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 7,
"Children": [
{
"$type": "Document",
"DocumentIndex": 9,
"Title": "Program.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\Program.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\Program.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\Program.cs",
"RelativeToolTip": "LargeSquareOne\\Program.cs",
"ViewState": "AgIAAEcAAAAAAAAAAAAWwFcAAAAmAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-10T09:06:30.624Z"
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "DBSQL.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.VirtualDataLibrary\\DBSQL.cs",
"RelativeDocumentMoniker": "JinYuan.VirtualDataLibrary\\DBSQL.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.VirtualDataLibrary\\DBSQL.cs",
"RelativeToolTip": "JinYuan.VirtualDataLibrary\\DBSQL.cs",
"ViewState": "AgIAAJICAAAAAAAAAAA6wKMCAABlAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-03-02T08:52:08.091Z"
},
{
"$type": "Document",
"DocumentIndex": 7,
"Title": "ControlCenter_Total.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\ControlCenter_Total.cs",
"RelativeDocumentMoniker": "JinYuan.ControlCenter\\ControlCenter_Total.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\ControlCenter_Total.cs",
"RelativeToolTip": "JinYuan.ControlCenter\\ControlCenter_Total.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAUBAAAIAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-02-08T06:32:33.986Z"
},
{
"$type": "Document",
"DocumentIndex": 10,
"Title": "FrmDataMonitor.cs [\u8BBE\u8BA1]",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmDataMonitor.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmDataMonitor.cs",
"ToolTip": "D:\\\u4E0A\u4F4D\u673A\u7A0B\u5E8F\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A\\LargeSquareOne\\FrmDataMonitor.cs [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-02-08T06:46:15.24Z"
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "IMes.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.MES\\IMes.cs",
"RelativeDocumentMoniker": "JinYuan.MES\\IMes.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.MES\\IMes.cs",
"RelativeToolTip": "JinYuan.MES\\IMes.cs",
"ViewState": "AgIAAFMAAAAAAAAAAAA6wGIAAABTAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-09T00:28:23.512Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "MesDataProcess.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.MES\\MesDataProcess.cs",
"RelativeDocumentMoniker": "JinYuan.MES\\MesDataProcess.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.MES\\MesDataProcess.cs",
"RelativeToolTip": "JinYuan.MES\\MesDataProcess.cs",
"ViewState": "AgIAAAYAAAAAAAAAAADwv+4EAAAIAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-14T03:07:38.75Z"
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "ControlCenter.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\ControlCenter.cs",
"RelativeDocumentMoniker": "JinYuan.ControlCenter\\ControlCenter.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\ControlCenter.cs",
"RelativeToolTip": "JinYuan.ControlCenter\\ControlCenter.cs",
"ViewState": "AgIAAGQAAAAAAAAAAAAAwHgAAAAJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-11T02:11:13.486Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "ControlCenter_Plc.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\ControlCenter_Plc.cs",
"RelativeDocumentMoniker": "JinYuan.ControlCenter\\ControlCenter_Plc.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\ControlCenter_Plc.cs",
"RelativeToolTip": "JinYuan.ControlCenter\\ControlCenter_Plc.cs",
"ViewState": "AgIAADIGAAAAAAAAAAAkwDgGAAAfAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-03-02T05:55:34.116Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "FrmMain.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMain.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmMain.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMain.cs",
"RelativeToolTip": "LargeSquareOne\\FrmMain.cs",
"ViewState": "AgIAAGcAAAAAAAAAAAAgwHIAAAApAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-11T02:46:07.051Z"
},
{
"$type": "Document",
"DocumentIndex": 17,
"Title": "FrmMonitor.cs [\u8BBE\u8BA1]",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMonitor.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmMonitor.cs",
"ToolTip": "D:\\\u4E0A\u4F4D\u673A\u7A0B\u5E8F\\S1095-17\u8D28\u8C31\u68C0\u6F0F\u673A0811\\LargeSquareOne\\FrmMonitor.cs [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-05T01:47:15.627Z"
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "FrmHistory.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmHistory.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmHistory.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmHistory.cs",
"RelativeToolTip": "LargeSquareOne\\FrmHistory.cs",
"ViewState": "AgIAANgAAAAAAAAAAAAqwN8AAABEAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-14T03:12:00.066Z"
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "LargeSquareOne.exe.config",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\bin\\Debug\\LargeSquareOne.exe.config",
"RelativeDocumentMoniker": "LargeSquareOne\\bin\\Debug\\LargeSquareOne.exe.config",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\bin\\Debug\\LargeSquareOne.exe.config",
"RelativeToolTip": "LargeSquareOne\\bin\\Debug\\LargeSquareOne.exe.config",
"ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|",
"WhenOpened": "2026-06-11T08:42:27.05Z"
},
{
"$type": "Document",
"DocumentIndex": 12,
"Title": "App.config",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\App.config",
"RelativeDocumentMoniker": "LargeSquareOne\\App.config",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\App.config",
"RelativeToolTip": "LargeSquareOne\\App.config",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAIAAAAUAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|",
"WhenOpened": "2025-12-18T11:36:22.116Z"
},
{
"$type": "Document",
"DocumentIndex": 16,
"Title": "LanguageManager.cs",
"DocumentMoniker": "D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\Language\\LanguageManager.cs",
"ToolTip": "D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\Language\\LanguageManager.cs",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-05T01:52:47.313Z"
},
{
"$type": "Document",
"DocumentIndex": 14,
"Title": "app.config",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\app.config",
"RelativeDocumentMoniker": "JinYuan.ControlCenter\\app.config",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.ControlCenter\\app.config",
"RelativeToolTip": "JinYuan.ControlCenter\\app.config",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|",
"WhenOpened": "2026-02-11T00:40:47.274Z"
},
{
"$type": "Document",
"DocumentIndex": 11,
"Title": "DataTurnover.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.Models\\DataTurnover.cs",
"RelativeDocumentMoniker": "JinYuan.Models\\DataTurnover.cs",
"ToolTip": "D:\\\u4E0A\u4F4D\u673A\u7A0B\u5E8F\\2026-3-2\\S1095-17\u8D28\u8C31\u68C0\u6F0F\u673A0811\\JinYuan.Models\\DataTurnover.cs*",
"ViewState": "AgIAAAgAAAAAAAAAAAAowCcAAAARAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-19T07:41:00.23Z"
},
{
"$type": "Document",
"DocumentIndex": 18,
"Title": "FrmMain.cs [\u8BBE\u8BA1]",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMain.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmMain.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMain.cs [\u8BBE\u8BA1]",
"RelativeToolTip": "LargeSquareOne\\FrmMain.cs [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-01-05T08:43:03.532Z"
},
{
"$type": "Document",
"DocumentIndex": 13,
"Title": "Configure.xml",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\Config\\Configure.xml",
"RelativeDocumentMoniker": "LargeSquareOne\\Config\\Configure.xml",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\Config\\Configure.xml",
"RelativeToolTip": "LargeSquareOne\\Config\\Configure.xml",
"ViewState": "AgIAAA8AAAAAAAAAAAAAAC8AAAAUAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003576|",
"WhenOpened": "2026-02-26T08:51:36.338Z"
},
{
"$type": "Document",
"DocumentIndex": 15,
"Title": "FrmMonitor.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMonitor.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmMonitor.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmMonitor.cs",
"RelativeToolTip": "LargeSquareOne\\FrmMonitor.cs",
"ViewState": "AgIAABQBAAAAAAAAAAAQwC4BAABGAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-01-05T02:18:00.018Z"
},
{
"$type": "Document",
"DocumentIndex": 19,
"Title": "PlcReadWriteBase.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\PLC\\Base\\PlcReadWriteBase.cs",
"RelativeDocumentMoniker": "PLC\\Base\\PlcReadWriteBase.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\PLC\\Base\\PlcReadWriteBase.cs",
"RelativeToolTip": "PLC\\Base\\PlcReadWriteBase.cs",
"ViewState": "AgIAAKMAAAAAAAAAAAD4v7QAAAAhAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-02-08T06:51:10.775Z"
},
{
"$type": "Document",
"DocumentIndex": 20,
"Title": "OmronCipNet.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\PLC\\PlcLibrary\\OmronCipNet.cs",
"RelativeDocumentMoniker": "PLC\\PlcLibrary\\OmronCipNet.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\PLC\\PlcLibrary\\OmronCipNet.cs",
"RelativeToolTip": "PLC\\PlcLibrary\\OmronCipNet.cs",
"ViewState": "AgIAAGEBAAAAAAAAAAAMwGsBAAAhAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-02-08T06:51:14.3Z"
},
{
"$type": "Document",
"DocumentIndex": 24,
"Title": "FrmLoginMes.cs [\u8BBE\u8BA1]",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmLoginMes.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmLoginMes.cs",
"ToolTip": "D:\\\u4E0A\u4F4D\u673A\u7A0B\u5E8F\\S1095-17\u8D28\u8C31\u68C0\u6F0F\u673A0811\\LargeSquareOne\\FrmLoginMes.cs [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-01-05T01:50:01.489Z"
},
{
"$type": "Document",
"DocumentIndex": 22,
"Title": "ViewModelBase.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\ViewModel\\ViewModelBase.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\ViewModel\\ViewModelBase.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\ViewModel\\ViewModelBase.cs",
"RelativeToolTip": "LargeSquareOne\\ViewModel\\ViewModelBase.cs",
"ViewState": "AgIAADQAAAAAAAAAAABQwDcAAAAWAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-01-05T02:17:15.593Z"
},
{
"$type": "Document",
"DocumentIndex": 21,
"Title": "Languages.resx",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\Language\\Languages.resx",
"RelativeDocumentMoniker": "Language\\Languages.resx",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\Language\\Languages.resx",
"RelativeToolTip": "Language\\Languages.resx",
"ViewState": "AgIAALcCAAAAAAAAAAAowM0CAAANAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|",
"WhenOpened": "2025-12-18T11:37:21.559Z"
},
{
"$type": "Document",
"DocumentIndex": 23,
"Title": "FrmDataMonitor.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmDataMonitor.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmDataMonitor.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmDataMonitor.cs",
"RelativeToolTip": "LargeSquareOne\\FrmDataMonitor.cs",
"ViewState": "AgIAABwAAAAAAAAAAABQwB8AAAAVAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-11T02:46:07.392Z"
},
{
"$type": "Document",
"DocumentIndex": 27,
"Title": "FrmMonitor.cs",
"DocumentMoniker": "D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\LargeSquareOne\\FrmMonitor.cs",
"ToolTip": "D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\LargeSquareOne\\FrmMonitor.cs",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-05T01:53:05.446Z"
},
{
"$type": "Document",
"DocumentIndex": 25,
"Title": "MESApiHelper.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.MES\\MESApiHelper.cs",
"RelativeDocumentMoniker": "JinYuan.MES\\MESApiHelper.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\JinYuan.MES\\MESApiHelper.cs",
"RelativeToolTip": "JinYuan.MES\\MESApiHelper.cs",
"ViewState": "AgIAAA4AAAAAAAAAAAAIwAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-09T00:28:26.261Z"
},
{
"$type": "Document",
"DocumentIndex": 26,
"Title": "ControlCenter_Total.cs",
"DocumentMoniker": "D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\JinYuan.ControlCenter\\ControlCenter_Total.cs",
"ToolTip": "D:\\workspaces\\upper\\\u5206\u6863\\1258-13\\\u6E90\u7801\\JinYuan.ControlCenter\\ControlCenter_Total.cs",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-12-05T01:54:25.297Z"
},
{
"$type": "Document",
"DocumentIndex": 28,
"Title": "FrmParamSet.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmParamSet.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmParamSet.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmParamSet.cs",
"RelativeToolTip": "LargeSquareOne\\FrmParamSet.cs",
"ViewState": "AgIAAMwCAAAAAAAAAABQwM8CAAAIAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-11T04:50:20.923Z"
},
{
"$type": "Document",
"DocumentIndex": 29,
"Title": "FrmLoginMes.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmLoginMes.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmLoginMes.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmLoginMes.cs",
"RelativeToolTip": "LargeSquareOne\\FrmLoginMes.cs",
"ViewState": "AgIAAAsAAAAAAAAAAADwvzsAAAB6AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-11T02:45:13.474Z"
},
{
"$type": "Document",
"DocumentIndex": 31,
"Title": "VariableEditForm.cs",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\VariableEditForm.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\VariableEditForm.cs",
"ToolTip": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\VariableEditForm.cs",
"RelativeToolTip": "LargeSquareOne\\VariableEditForm.cs",
"ViewState": "AgIAAAAAAAAAAAAAAABAwAEAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-07T05:31:38.948Z"
},
{
"$type": "Document",
"DocumentIndex": 30,
"Title": "FrmParamSet.cs [\u8BBE\u8BA1]",
"DocumentMoniker": "F:\\workspaces\\\u8D28\u8C31\u4EEA\\431-1398-17-\u8D28\u8C31\u68C0\u6F0F\u673A0904\\LargeSquareOne\\FrmParamSet.cs",
"RelativeDocumentMoniker": "LargeSquareOne\\FrmParamSet.cs",
"ToolTip": "D:\\\u4E0A\u4F4D\u673A\u7A0B\u5E8F\\S1095-17\u8D28\u8C31\u68C0\u6F0F\u673A0811\\LargeSquareOne\\FrmParamSet.cs [\u8BBE\u8BA1]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-02-19T05:49:38.263Z"
}
]
}
]
}
]
}
Binary file not shown.
Binary file not shown.
+134
View File
@@ -0,0 +1,134 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.33530.505
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JinYuan.Helper", "JinYuan.Helper\JinYuan.Helper.csproj", "{258D0AB7-2B4F-4D8F-A3CD-7A8CB4A85360}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JinYuan.VirtualDataLibrary", "JinYuan.VirtualDataLibrary\JinYuan.VirtualDataLibrary.csproj", "{2AB7E380-7795-448A-933C-0F6A081B5E7E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JinYuan.Models", "JinYuan.Models\JinYuan.Models.csproj", "{4C0BCB84-5CD7-4846-8363-C4C10D46E391}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JinYuan.ControlCenters", "JinYuan.ControlCenter\JinYuan.ControlCenters.csproj", "{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JinYuan.DAL", "JinYuan.DAL\JinYuan.DAL.csproj", "{114AA012-29C9-418C-A2D6-3173C5341F51}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JinYuan.MES", "JinYuan.MES\JinYuan.MES.csproj", "{530B6426-08E7-461C-91DC-787F876620FC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LargeSquareOne", "LargeSquareOne\LargeSquareOne.csproj", "{29E1F0D0-43DC-4077-A136-F25477E56881}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PLC", "PLC\PLC.csproj", "{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JinYuan.ControlLib", "JinYuan.ControlLib\JinYuan.ControlLib.csproj", "{1BB7ED33-D2CB-4CDD-AB39-F7F9AE948CA2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Language", "Language\Language.csproj", "{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IOT.Services", "IOT.Services\IOT.Services.csproj", "{242400F4-9B01-4AEE-A6F7-05083757FCDD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{258D0AB7-2B4F-4D8F-A3CD-7A8CB4A85360}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{258D0AB7-2B4F-4D8F-A3CD-7A8CB4A85360}.Debug|Any CPU.Build.0 = Debug|Any CPU
{258D0AB7-2B4F-4D8F-A3CD-7A8CB4A85360}.Debug|x64.ActiveCfg = Debug|Any CPU
{258D0AB7-2B4F-4D8F-A3CD-7A8CB4A85360}.Debug|x64.Build.0 = Debug|Any CPU
{258D0AB7-2B4F-4D8F-A3CD-7A8CB4A85360}.Release|Any CPU.ActiveCfg = Release|Any CPU
{258D0AB7-2B4F-4D8F-A3CD-7A8CB4A85360}.Release|Any CPU.Build.0 = Release|Any CPU
{258D0AB7-2B4F-4D8F-A3CD-7A8CB4A85360}.Release|x64.ActiveCfg = Release|Any CPU
{258D0AB7-2B4F-4D8F-A3CD-7A8CB4A85360}.Release|x64.Build.0 = Release|Any CPU
{2AB7E380-7795-448A-933C-0F6A081B5E7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2AB7E380-7795-448A-933C-0F6A081B5E7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2AB7E380-7795-448A-933C-0F6A081B5E7E}.Debug|x64.ActiveCfg = Debug|Any CPU
{2AB7E380-7795-448A-933C-0F6A081B5E7E}.Debug|x64.Build.0 = Debug|Any CPU
{2AB7E380-7795-448A-933C-0F6A081B5E7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2AB7E380-7795-448A-933C-0F6A081B5E7E}.Release|Any CPU.Build.0 = Release|Any CPU
{2AB7E380-7795-448A-933C-0F6A081B5E7E}.Release|x64.ActiveCfg = Release|Any CPU
{2AB7E380-7795-448A-933C-0F6A081B5E7E}.Release|x64.Build.0 = Release|Any CPU
{4C0BCB84-5CD7-4846-8363-C4C10D46E391}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4C0BCB84-5CD7-4846-8363-C4C10D46E391}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4C0BCB84-5CD7-4846-8363-C4C10D46E391}.Debug|x64.ActiveCfg = Debug|Any CPU
{4C0BCB84-5CD7-4846-8363-C4C10D46E391}.Debug|x64.Build.0 = Debug|Any CPU
{4C0BCB84-5CD7-4846-8363-C4C10D46E391}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4C0BCB84-5CD7-4846-8363-C4C10D46E391}.Release|Any CPU.Build.0 = Release|Any CPU
{4C0BCB84-5CD7-4846-8363-C4C10D46E391}.Release|x64.ActiveCfg = Release|Any CPU
{4C0BCB84-5CD7-4846-8363-C4C10D46E391}.Release|x64.Build.0 = Release|Any CPU
{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}.Debug|x64.ActiveCfg = Debug|Any CPU
{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}.Debug|x64.Build.0 = Debug|Any CPU
{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}.Release|Any CPU.Build.0 = Release|Any CPU
{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}.Release|x64.ActiveCfg = Release|Any CPU
{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}.Release|x64.Build.0 = Release|Any CPU
{114AA012-29C9-418C-A2D6-3173C5341F51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{114AA012-29C9-418C-A2D6-3173C5341F51}.Debug|Any CPU.Build.0 = Debug|Any CPU
{114AA012-29C9-418C-A2D6-3173C5341F51}.Debug|x64.ActiveCfg = Debug|Any CPU
{114AA012-29C9-418C-A2D6-3173C5341F51}.Debug|x64.Build.0 = Debug|Any CPU
{114AA012-29C9-418C-A2D6-3173C5341F51}.Release|Any CPU.ActiveCfg = Release|Any CPU
{114AA012-29C9-418C-A2D6-3173C5341F51}.Release|Any CPU.Build.0 = Release|Any CPU
{114AA012-29C9-418C-A2D6-3173C5341F51}.Release|x64.ActiveCfg = Release|Any CPU
{114AA012-29C9-418C-A2D6-3173C5341F51}.Release|x64.Build.0 = Release|Any CPU
{530B6426-08E7-461C-91DC-787F876620FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{530B6426-08E7-461C-91DC-787F876620FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{530B6426-08E7-461C-91DC-787F876620FC}.Debug|x64.ActiveCfg = Debug|Any CPU
{530B6426-08E7-461C-91DC-787F876620FC}.Debug|x64.Build.0 = Debug|Any CPU
{530B6426-08E7-461C-91DC-787F876620FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{530B6426-08E7-461C-91DC-787F876620FC}.Release|Any CPU.Build.0 = Release|Any CPU
{530B6426-08E7-461C-91DC-787F876620FC}.Release|x64.ActiveCfg = Release|Any CPU
{530B6426-08E7-461C-91DC-787F876620FC}.Release|x64.Build.0 = Release|Any CPU
{29E1F0D0-43DC-4077-A136-F25477E56881}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{29E1F0D0-43DC-4077-A136-F25477E56881}.Debug|Any CPU.Build.0 = Debug|Any CPU
{29E1F0D0-43DC-4077-A136-F25477E56881}.Debug|x64.ActiveCfg = Debug|Any CPU
{29E1F0D0-43DC-4077-A136-F25477E56881}.Debug|x64.Build.0 = Debug|Any CPU
{29E1F0D0-43DC-4077-A136-F25477E56881}.Release|Any CPU.ActiveCfg = Release|Any CPU
{29E1F0D0-43DC-4077-A136-F25477E56881}.Release|Any CPU.Build.0 = Release|Any CPU
{29E1F0D0-43DC-4077-A136-F25477E56881}.Release|x64.ActiveCfg = Release|Any CPU
{29E1F0D0-43DC-4077-A136-F25477E56881}.Release|x64.Build.0 = Release|Any CPU
{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}.Debug|x64.ActiveCfg = Debug|Any CPU
{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}.Debug|x64.Build.0 = Debug|Any CPU
{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}.Release|Any CPU.Build.0 = Release|Any CPU
{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}.Release|x64.ActiveCfg = Release|Any CPU
{486AECD0-C2BF-43C5-B7D7-88E565ADE4B7}.Release|x64.Build.0 = Release|Any CPU
{1BB7ED33-D2CB-4CDD-AB39-F7F9AE948CA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1BB7ED33-D2CB-4CDD-AB39-F7F9AE948CA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1BB7ED33-D2CB-4CDD-AB39-F7F9AE948CA2}.Debug|x64.ActiveCfg = Debug|x64
{1BB7ED33-D2CB-4CDD-AB39-F7F9AE948CA2}.Debug|x64.Build.0 = Debug|x64
{1BB7ED33-D2CB-4CDD-AB39-F7F9AE948CA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1BB7ED33-D2CB-4CDD-AB39-F7F9AE948CA2}.Release|Any CPU.Build.0 = Release|Any CPU
{1BB7ED33-D2CB-4CDD-AB39-F7F9AE948CA2}.Release|x64.ActiveCfg = Release|x64
{1BB7ED33-D2CB-4CDD-AB39-F7F9AE948CA2}.Release|x64.Build.0 = Release|x64
{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}.Debug|x64.ActiveCfg = Debug|Any CPU
{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}.Debug|x64.Build.0 = Debug|Any CPU
{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}.Release|Any CPU.Build.0 = Release|Any CPU
{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}.Release|x64.ActiveCfg = Release|Any CPU
{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}.Release|x64.Build.0 = Release|Any CPU
{242400F4-9B01-4AEE-A6F7-05083757FCDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{242400F4-9B01-4AEE-A6F7-05083757FCDD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{242400F4-9B01-4AEE-A6F7-05083757FCDD}.Debug|x64.ActiveCfg = Debug|Any CPU
{242400F4-9B01-4AEE-A6F7-05083757FCDD}.Debug|x64.Build.0 = Debug|Any CPU
{242400F4-9B01-4AEE-A6F7-05083757FCDD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{242400F4-9B01-4AEE-A6F7-05083757FCDD}.Release|Any CPU.Build.0 = Release|Any CPU
{242400F4-9B01-4AEE-A6F7-05083757FCDD}.Release|x64.ActiveCfg = Release|Any CPU
{242400F4-9B01-4AEE-A6F7-05083757FCDD}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E8421996-BAC4-4509-9C3E-BC424197F2D8}
RESX_NeutralResourcesLanguage = zh-Hans
RESX_SortFileContentOnSave = True
RESX_AutoCreateNewLanguageFiles = False
EndGlobalSection
EndGlobal
File diff suppressed because one or more lines are too long
+62
View File
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<appSettings>
<!--//日志配置 开启日志-->
<add key="EnableLogging" value="true" />
<!--//日志配置 日志存储周期 默认30天-->
<add key="LogRetentionDays" value="30" />
<!--//日志配置 日志存储路径 暂未使用,存储在跟目录-->
<add key="LogDirectory" value="D:\APILog\MQTTService" />
<!--//日志配置 按日存储-->
<add key="LogSplitStrategy" value="ByDay" />
<!--//日志配置 存储文件大小-->
<add key="MaxLogFileSizeBytes" value="10485760" />
<!--//PLC IP地址 192.168.1.50-->
<add key="PlcIpAddress" value="192.168.1.50" />
<!--//PLC 端口-->
<add key="PlcPort" value="9600" />
<!--//MQTT服务器IP地址 10.22.160.144-->
<add key="MQTTServerAddress" value="10.22.160.144" />
<!--//MQTT服务器端口-->
<add key="MQTTServerPort" value="1883" />
<!--//MQTT服务器发布ID-->
<add key="ClientId" value="601UPW01" />
<!--//MQTT服务发布主题PPM-->
<add key="Topic" value="EVE/60J/EQP/NEW_PPM/601UPW01" />
<!--PPM其他数据-->
<add key="Topic1" value="eve/60J/EQP/601UPW01"/>
<!--直角坐标机械臂-->
<add key="LRobotTopic" value="EVE/60J/LRobot/601PWM01_LUR01"/>
<!--关节机械臂-->
<add key="JRobotTopic" value="EVE/60J/JRobot/601PWM01_STR01"/>
<!--//参数设置 事业部-->
<add key="BU_id" value="EVE2BU" />
<!--//参数设置 地区-->
<add key="District_id" value="JM" />
<!--//参数设置 工厂-->
<add key="Factory_id" value="60J" />
<!--//参数设置 线体号-->
<add key="Production_line_id" value="MW-601" />
<!--//参数设置 设备编号-->
<add key="Device_name" value="601UPW01" />
<!--//线程循环间隔 ms单位-->
<add key="ThreadInterval" value="50" />
<add key="SwitchLog" value="True" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration>
File diff suppressed because it is too large Load Diff
+129
View File
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{242400F4-9B01-4AEE-A6F7-05083757FCDD}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>IOT.Services</RootNamespace>
<AssemblyName>IOT.Services</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<LangVersion>10.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DataConvertLib, Version=6.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Lib\DataConvertLib.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=3.0.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.3.0.0\lib\net462\log4net.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Lib\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="PLCCommunication, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>Lib\PLCCommunication.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Core" />
<Reference Include="System.Management" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.ServiceProcess" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Logger.cs" />
<Compile Include="Models.cs" />
<Compile Include="MqttClientWrapper.cs" />
<Compile Include="MqttDataService.cs" />
<Compile Include="PLCDataReader.cs" />
<Compile Include="PLCWrapper.cs" />
<Compile Include="Service1.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Service1.Designer.cs">
<DependentUpon>Service1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="StationDataComparer.cs" />
<Compile Include="XmlConfigReader.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="log4net.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="Lib\DataConvertLib.dll" />
<Content Include="Lib\Newtonsoft.Json.dll" />
<Content Include="Lib\PLCCommunication.dll" />
<Content Include="Config.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.8 %28x86 和 x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ProjectFiles</ProjectView>
<PublishUrlHistory>publish\</PublishUrlHistory>
<InstallUrlHistory />
<SupportUrlHistory />
<UpdateUrlHistory />
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>zh-CN</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
</PropertyGroup>
</Project>
Binary file not shown.
Binary file not shown.
+126
View File
@@ -0,0 +1,126 @@
using System;
using System.IO;
using System.Timers;
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
public class Logger
{
private static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
private static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
private static readonly log4net.ILog logmqtt = log4net.LogManager.GetLogger("logmqtt");
private static readonly Timer cleanupTimer;
private const int MAX_DAYS = 7;
private const string LOG_BASE_PATH = "Log";
static Logger()
{
try
{
// 创建一个每天执行一次的定时器
cleanupTimer = new Timer(24 * 60 * 60 * 1000); // 24小时
cleanupTimer.Elapsed += CleanupOldLogs;
cleanupTimer.Start();
// 启动时执行一次清理
CleanupOldLogs(null, null);
}
catch (Exception ex)
{
WriteError("Failed to initialize logger cleanup timer", ex);
}
}
public static void WriteInfo(string info)
{
if (loginfo.IsInfoEnabled)
{
loginfo.Info(info);
}
}
public static void WriteMqtt(string info)
{
if (logmqtt.IsInfoEnabled)
{
logmqtt.Info(info);
}
}
public static void WriteError(string error)
{
if (logerror.IsErrorEnabled)
{
logerror.Error(error);
}
}
public static void WriteError(string info, Exception ex)
{
if (logerror.IsErrorEnabled)
{
logerror.Error(info, ex);
}
}
private static void CleanupOldLogs(object sender, ElapsedEventArgs e)
{
try
{
if (!Directory.Exists(LOG_BASE_PATH))
return;
string[] logTypes = { "LogError", "LogInfo", "LogMqtt" };
DateTime cutoffDate = DateTime.Now.AddDays(-MAX_DAYS);
foreach (string logType in logTypes)
{
string logTypeDir = Path.Combine(LOG_BASE_PATH, logType);
if (!Directory.Exists(logTypeDir))
continue;
// 获取所有日期文件夹
string[] dateDirs = Directory.GetDirectories(logTypeDir);
foreach (string dateDir in dateDirs)
{
string dirName = Path.GetFileName(dateDir);
if (DateTime.TryParseExact(dirName, "yyyyMMdd", null,
System.Globalization.DateTimeStyles.None, out DateTime dirDate))
{
if (dirDate < cutoffDate)
{
try
{
Directory.Delete(dateDir, true);
WriteInfo($"Deleted old log directory: {dateDir}");
}
catch (Exception ex)
{
WriteError($"Failed to delete log directory: {dateDir}", ex);
}
}
}
}
}
}
catch (Exception ex)
{
WriteError("Error during log cleanup", ex);
}
}
// 提供手动清理方法
public static void ForceCleanupOldLogs()
{
CleanupOldLogs(null, null);
}
// 在应用程序退出时调用此方法
public static void Shutdown()
{
if (cleanupTimer != null)
{
cleanupTimer.Stop();
cleanupTimer.Dispose();
}
}
}
+88
View File
@@ -0,0 +1,88 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsService1
{
#region 1、系统内部
public enum AcquisitionType
{
PPM,
Axis,
Cylinder,
LRobot
}
public enum PLCDataType
{
Short,
Float
}
public class StationData
{
public string Name { get; set; }
public object MainValue { get; set; }
public DateTime Timestamp { get; set; }
}
public class TypeConfig
{
public string Name { get; set; }
public string Address { get; set; }
public string DataType { get; set; }
}
public class CollectionGroupConfig
{
public string Name { get; set; }
public string StartAddress { get; set; }
public int Length { get; set; }
public string DefaultDataType { get; set; }
public Dictionary<string, TypeConfig> Types { get; set; }
}
#endregion
#region 2、PPM点位
#endregion
#region 3、预测性点位
#endregion
#region 4、机械臂
//直角坐标机械臂
public class LRobot
{
public string bu_id { get; set; }
public string district_id { get; set; }
public string factory_id { get; set; }
public string production_line_id { get; set; }
public string production_processes_id { get; set; }
public string work_center_id { get; set; }
public string station_id { get; set; }
public string device_name { get; set; } = "601PWM01";
public string robot_name { get; set; }
public List<Taglist> taglist { get; set; }
}
public class Taglist
{
public string device_time { get; set; }
public Collection collections_items { get; set; }
}
public class Collection
{
public string robot_status { get; set; } = "1";
public string x_value { get; set; }
public string y_value { get; set; }
public string z_value { get; set; }
public string time_span { get; set; } = "2.5";
public string hand_status { get; set; } = "1";
}
#endregion
}
+380
View File
@@ -0,0 +1,380 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PLCCommunication;
using PLCCommunication.LogNet;
using PLCCommunication.MQTT;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace WindowsService1
{
public class MqttClientWrapper
{
private MqttClient mqttClient;
private bool mqttIsConnected;
private const int MaxReconnectAttempts = 5;
private const int ReconnectDelay = 5000; // 5 seconds
private MqttConnectionOptions options;
public event Action<string, string, string> OnMessageReceived;
public long ReceiveCount { get; private set; }
public PLCCommunication.LogNet.ILogNet LogNet = new LogNetDateTime("D:\\APILog\\Logs\\MQTTLogs", GenerateMode.ByEveryDay, 20);
public enum MessageFormat
{
Binary,
Text,
Xml,
Json
}
public MqttClientWrapper(string ipAddress, int port, string clientId, MqttCredential credentials)
{
InitializeMqttOptions(ipAddress, port, clientId, credentials);
}
private void InitializeMqttOptions(string ipAddress, int port, string clientId, MqttCredential credentials)
{
options = new MqttConnectionOptions
{
IpAddress = ipAddress,
Port = port,
ClientId = clientId,
Credentials = credentials,
UseRSAProvider = false,
CleanSession = false,
UseSSL = false,
SSLSecure = false,
CertificateFile = "",
KeepAlivePeriod = TimeSpan.FromSeconds(30),
KeepAliveSendInterval = TimeSpan.FromSeconds(10),
ConnectTimeout = 5,
WillMessage = null
};
}
public async Task InitializeAndConnectAsync()
{
try
{
mqttClient = new MqttClient(options);
Logger.WriteMqtt("MQTT 初始化成功");
await ConnectMqttAsync();
}
catch (Exception ex)
{
Logger.WriteError($"MQTT 初始化失败: {ex.Message}");
}
}
private async Task ConnectMqttAsync()
{
try
{
JYResult connect = await mqttClient.ConnectServerAsync();
if (connect.IsSuccess)
{
mqttIsConnected = true;
Logger.WriteMqtt("MQTT 连接服务器成功");
}
else
{
Logger.WriteError("MQTT 无法连接到服务器");
}
}
catch (Exception ex)
{
Logger.WriteError($"MQTT 无法连接到服务器: {ex.Message}");
}
}
public async Task SendMessageAsync(string source, string publishTopic, string type, JObject messageObj)
{
if (!mqttClient.IsConnected)
{
mqttIsConnected = false;
Logger.WriteMqtt("客户端未连接到服务器。正在尝试重新连接...");
await ReconnectWithRetry();
if (!mqttClient.IsConnected)
{
throw new InvalidOperationException("无法与 MQTT 代理建立连接.");
}
}
try
{
if (messageObj != null)
{
string json = messageObj.ToString();
//string json = JsonConvert.SerializeObject(messageObj);
JYResult result = await mqttClient.PublishMessageAsync(new MqttApplicationMessage
{
Topic = publishTopic,
QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce,
Payload = Encoding.UTF8.GetBytes(json),
Retain = false,
});
if (result.IsSuccess)
{
if (Service1.SwitchLog)
{
Logger.WriteMqtt($"线程 [{source}] 发送 [{type}] 消息到主题 [{publishTopic}]: {json}");
}
}
else
{
Logger.WriteMqtt($"线程 [{source}] 发送 [{type}] 消息到主题 [{publishTopic}] 失败: {result.Message}");
}
}
}
catch (Exception ex)
{
Logger.WriteError($"发送消息错误: {ex.Message}");
}
}
public async Task SendMessageAsync(string source, string publishTopic, string type, string messageObj)
{
if (!mqttClient.IsConnected)
{
mqttIsConnected = false;
Logger.WriteMqtt("客户端未连接到服务器。正在尝试重新连接...");
await ReconnectWithRetry();
if (!mqttClient.IsConnected)
{
throw new InvalidOperationException("无法与 MQTT 代理建立连接.");
}
}
try
{
if (messageObj != null)
{
JYResult result = await mqttClient.PublishMessageAsync(new MqttApplicationMessage
{
Topic = publishTopic,
QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce,
Payload = Encoding.UTF8.GetBytes(messageObj),
Retain = false,
});
if (result.IsSuccess)
{
if (Service1.SwitchLog)
{
Logger.WriteMqtt($"线程 [{source}] 发送 [{type}] 消息到主题 [{publishTopic}]: {messageObj}");
}
}
else
{
Logger.WriteMqtt($"线程 [{source}] 发送 [{type}] 消息到主题 [{publishTopic}] 失败: {result.Message}");
}
}
}
catch (Exception ex)
{
Logger.WriteError($"发送消息错误: {ex.Message}");
}
}
public void SubscribeMessage(string topic, MessageFormat format = MessageFormat.Text, bool truncateLongMessage = false)
{
if (!mqttIsConnected)
{
ConnectMqttAsync().Wait();
}
try
{
JYResult operateResult = mqttClient.SubscribeMessage(new string[] { topic });
if (!operateResult.IsSuccess)
{
Logger.WriteMqtt($"订阅消息失败: {operateResult.Message}");
return;
}
SubscribeTopic subscribeTopic = mqttClient.GetSubscribeTopic(topic);
if (subscribeTopic != null)
{
subscribeTopic.OnMqttMessageReceived += (sender, args) =>
{
HandleReceivedMessage(args.Topic, args.Payload, format, truncateLongMessage);
};
Logger.WriteMqtt($"成功订阅主题: {topic}");
}
else
{
Logger.WriteMqtt($"无法获取订阅主题 {topic}");
}
}
catch (Exception ex)
{
Logger.WriteError($"订阅主题时出错 {topic}: {ex.Message}");
}
}
private void HandleReceivedMessage(string topic, byte[] payload, MessageFormat format, bool truncateLongMessage)
{
ReceiveCount++;
string text = string.Empty;
try
{
switch (format)
{
case MessageFormat.Binary:
text = BitConverter.ToString(payload).Replace("-", " ");
break;
case MessageFormat.Text:
text = Encoding.UTF8.GetString(payload);
break;
case MessageFormat.Xml:
try
{
text = XElement.Parse(Encoding.UTF8.GetString(payload)).ToString();
}
catch
{
text = Encoding.UTF8.GetString(payload);
}
break;
case MessageFormat.Json:
try
{
text = JObject.Parse(Encoding.UTF8.GetString(payload)).ToString();
}
catch
{
text = Encoding.UTF8.GetString(payload);
}
break;
}
//if (Service1.SwitchLog)
//{
// LogNet.WriteDebug($"收到主题 {topic}: {text}");
//}
//if (truncateLongMessage && text.Length > 200)
//{
// text = text.Substring(0, 200) + "...";
//}
string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
OnMessageReceived?.Invoke(timestamp, topic, text);
}
catch (Exception ex)
{
Logger.WriteError($"处理收到的消息时出错: {ex.Message}");
}
}
public void UnsubscribeMessage(string topic)
{
try
{
JYResult operateResult = mqttClient.UnSubscribeMessage(new string[] { topic });
if (operateResult.IsSuccess)
{
Logger.WriteMqtt($"成功取消订阅主题: {topic}");
}
else
{
Logger.WriteMqtt($"取消订阅主题失败 {topic}: {operateResult.Message}");
}
}
catch (Exception ex)
{
Logger.WriteError($"取消订阅主题时出错 {topic}: {ex.Message}");
}
}
/// <summary>
/// 重连
/// </summary>
/// <returns></returns>
private async Task ReconnectWithRetry()
{
int attempts = 0;
while (!mqttClient.IsConnected && attempts < MaxReconnectAttempts)
{
try
{
await mqttClient.ConnectServerAsync();
Logger.WriteMqtt("重新连接成功.");
return;
}
catch (Exception ex)
{
attempts++;
Logger.WriteMqtt($"重新连接尝试 {attempts} 失败的: {ex.Message}");
await Task.Delay(ReconnectDelay);
}
}
if (!mqttClient.IsConnected)
{
Logger.WriteMqtt("尝试次数达到上限后仍无法重新连接.");
}
}
private async Task ReconnectAsync()
{
Logger.WriteMqtt("正在尝试重新连接...");
mqttIsConnected = false;
int retryCount = 0;
const int maxRetries = 5;
const int retryDelayMs = 5000;
while (!mqttIsConnected && retryCount < maxRetries)
{
try
{
await ConnectMqttAsync();
if (mqttIsConnected)
{
Logger.WriteMqtt("重新连接成功");
return;
}
}
catch (Exception ex)
{
Logger.WriteMqtt($"重新连接尝试 {retryCount + 1} 失败的: {ex.Message}");
}
retryCount++;
await Task.Delay(retryDelayMs);
}
if (!mqttIsConnected)
{
Logger.WriteMqtt("多次尝试后仍无法重新连接");
}
}
public async Task Disconnect()
{
await mqttClient.ConnectCloseAsync();
mqttIsConnected = false;
Logger.WriteMqtt("与 MQTT服务端断开连接!!!");
}
}
}
+732
View File
@@ -0,0 +1,732 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsService1
{
public class MqttDataService
{
public static string BU_id;
public static string District_id;
public static string Factory_id;
public static string Production_line_id;
public static string Device_name;
public static string Topic;
public static string Work_Center_id;
public class OperationData
{
public int Item_Value { get; set; }
public string Start_Time { get; set; }
public string End_Time { get; set; }
}
public class MqttMessage
{
public string bu_id { get; set; }
public string district_id { get; set; }
public string factory_id { get; set; }
public string production_line_id { get; set; }
public string production_processes_id { get; set; }
public string work_center_id { get; set; }
public string station_id { get; set; }
public string device_name { get; set; }
public List<TagList> taglist { get; set; }
}
public class TagList
{
public string device_time { get; set; }
public Dictionary<string, OperationData> collection_items { get; set; }
}
/// <summary>
///
/// </summary>
/// <param name="source"></param>
/// <param name="type"></param>
/// <param name="processedValues"></param>
/// <param name="_plcAddresses"></param>
/// <param name="_collectionGroups"></param>
/// <returns></returns>
public static MqttMessage CreateMqttMessage(string source, AcquisitionType type, List<StationData> processedValues,
Dictionary<AcquisitionType, Dictionary<string, string>> _plcAddresses,
Dictionary<AcquisitionType, CollectionGroupConfig> _collectionGroups)
{
try
{
Logger.WriteInfo($"开始创建 MQTT 消息, 类型: {type}, 数据点数量: {processedValues?.Count ?? 0}");
if (processedValues == null || processedValues.Count == 0)
{
Logger.WriteInfo("没有需要处理的数据,返回 null");
return null;
}
var addresses = _plcAddresses[type];
var config = _collectionGroups[type];
var collectionItems = new Dictionary<string, OperationData>();
// 获取当前时间作为设备时间
var currentTime = DateTime.Now;
var deviceTimeStr = currentTime.ToString("yyyy-MM-dd HH:mm:ss.fff");
Logger.WriteInfo($"处理数据类型: {type}, 当前时间: {deviceTimeStr}");
switch (type)
{
case AcquisitionType.PPM:
ProcessPPMData(processedValues, addresses, config, collectionItems);
break;
case AcquisitionType.Axis:
case AcquisitionType.Cylinder:
ProcessFloatData(processedValues, addresses, config, currentTime, collectionItems);
break;
default:
Logger.WriteError($"未知的数据类型: {type}");
return null;
}
if (collectionItems.Count == 0)
{
Logger.WriteInfo("没有有效的采集项,返回 null");
return null;
}
var message = new MqttMessage
{
bu_id = BU_id,
district_id = District_id,
factory_id = Factory_id,
production_line_id = Production_line_id,
production_processes_id = string.Empty,
work_center_id = Work_Center_id,
station_id = "1",
device_name = Device_name,
taglist = new List<TagList>
{
new TagList
{
device_time = deviceTimeStr,
collection_items = collectionItems
}
}
};
// 记录创建的消息内容
Logger.WriteInfo($"MQTT 消息创建完成: {JsonConvert.SerializeObject(message, Formatting.None)}");
return message;
}
catch (Exception ex)
{
Logger.WriteError($"创建 MQTT 消息时发生错误: {ex.Message}");
return null;
}
}
/// <summary>
/// PPM点位数据
/// </summary>
/// <param name="processedValues"></param>
/// <param name="addresses"></param>
/// <param name="config"></param>
/// <param name="collectionItems"></param>
///
// 添加静态字段来存储上次发送的数据
private static Dictionary<string, OperationData> _lastSentData = new Dictionary<string, OperationData>();
public static void ProcessPPMData(List<StationData> processedValues, Dictionary<string, string> addresses, CollectionGroupConfig config, Dictionary<string, OperationData> collectionItems)
{
try
{
Logger.WriteInfo($"开始处理 PPM 数据,数据点数量: {processedValues.Count}");
// 创建临时字典存储当前所有数据点
var tempItems = new Dictionary<string, OperationData>();
foreach (var value in processedValues)
{
var addressPair = addresses.FirstOrDefault(x => x.Key == value.Name);
if (!string.IsNullOrEmpty(addressPair.Key))
{
int itemValue = Convert.ToInt32(ConvertToIntegerWithThreeDecimals(value.MainValue));
// 计算开始时间 (结束时间 - 时长)
var startTime = value.Timestamp.AddMilliseconds(-itemValue);
var operationData = new OperationData
{
Item_Value = itemValue,
Start_Time = startTime.ToString("yyyy-MM-dd HH:mm:ss.fff"),
End_Time = value.Timestamp.ToString("yyyy-MM-dd HH:mm:ss.fff")
};
// 检查数据是否发生变化
bool shouldAdd = true;
// 检查是否与上次发送的数据重复
if (_lastSentData.TryGetValue(addressPair.Key, out var lastData))
{
var currentEndTime = operationData.End_Time.ToString();
var lastEndTime = lastData.End_Time.ToString();
if (string.Equals(lastEndTime, currentEndTime, StringComparison.OrdinalIgnoreCase))
{
shouldAdd = false;
Logger.WriteInfo($"跳过重复数据点: {addressPair.Key}");
continue;
}
}
if (shouldAdd)
{
tempItems[addressPair.Key] = operationData;
Logger.WriteInfo($"处理数据点: {addressPair.Key}, 值: {itemValue}, " +
$"开始时间: {startTime:yyyy-MM-dd HH:mm:ss.fff}, " +
$"结束时间: {operationData.End_Time}");
}
//if (shouldAdd)
//{
// // 检查是否与当前批次的其他数据有重复的结束时间
// var duplicateEndTimeItem = tempItems.FirstOrDefault(x =>
// string.Equals(x.Value.End_Time.ToString(), operationData.End_Time.ToString(), StringComparison.OrdinalIgnoreCase));
// if (duplicateEndTimeItem.Key != null)
// {
// Logger.WriteError($"检测到结束时间重复: {operationData.End_Time} 对应地址: {addressPair.Key}, " +
// $"与地址 {duplicateEndTimeItem.Key} 的数据重复");
// // 根据地址的字母顺序决定哪个需要调整时间,确保调整的一致性
// if (string.Compare(addressPair.Key, duplicateEndTimeItem.Key) > 0)
// {
// operationData.End_Time = value.Timestamp.AddMilliseconds(1).ToString("yyyy-MM-dd HH:mm:ss.fff");
// Logger.WriteInfo($"调整后的结束时间: {operationData.End_Time}");
// }
// }
// tempItems[addressPair.Key] = operationData;
// Logger.WriteInfo($"处理数据点: {addressPair.Key}, 值: {itemValue}, " +
// $"开始时间: {startTime:yyyy-MM-dd HH:mm:ss.fff}, " +
// $"结束时间: {operationData.End_Time}");
//}
}
else
{
Logger.WriteError($"未找到数据点 {value.Name} 对应的地址配置");
}
}
// 将处理后的数据添加到最终结果并更新上次发送的数据
foreach (var item in tempItems)
{
collectionItems[item.Key] = item.Value;
_lastSentData[item.Key] = item.Value; // 更新上次发送的数据
}
Logger.WriteInfo($"PPM 数据处理完成,处理后的数据点数量: {collectionItems.Count}");
}
catch (Exception ex)
{
Logger.WriteError($"处理 PPM 数据时出错: {ex.Message}");
throw;
}
}
private static bool IsDataEqual(OperationData data1, OperationData data2, string addressKey)
{
if (data1 == null || data2 == null)
return false;
bool isEqual = data1.Item_Value == data2.Item_Value &&
data1.Start_Time == data2.Start_Time &&
data1.End_Time == data2.End_Time;
if (isEqual)
{
Logger.WriteInfo($"检测到重复数据 - 地址: {addressKey}, " +
$"值: {data1.Item_Value}, " +
$"开始时间: {data1.Start_Time}, " +
$"结束时间: {data1.End_Time}");
}
return isEqual;
}
/// <summary>
/// 预测性点位
/// </summary>
/// <param name="processedValues"></param>
/// <param name="addresses"></param>
/// <param name="config"></param>
/// <param name="endTime"></param>
/// <param name="collectionItems"></param>
public static void ProcessFloatData(List<StationData> processedValues, Dictionary<string, string> addresses, CollectionGroupConfig config, DateTime endTime, Dictionary<string, OperationData> collectionItems)
{
for (int i = 0; i < processedValues.Count && i < config.Length; i++)
{
string address = $"D{int.Parse(config.StartAddress.Substring(1)) + i * 2}";
if (addresses.ContainsValue(address))
{
var key = addresses.FirstOrDefault(x => x.Value == address).Key;
int itemValue = Convert.ToInt32(ConvertToIntegerWithThreeDecimals(processedValues[i].MainValue));
// 计算开始时间 (结束时间 - 时长)
//var startTime = endTime.AddMilliseconds(-itemValue);
collectionItems[key] = new OperationData
{
Item_Value = (int)itemValue,
Start_Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
End_Time = endTime.ToString("yyyy-MM-dd HH:mm:ss.fff")
};
}
}
}
/// <summary>
/// 机械臂数据
/// </summary>
/// <param name="source"></param>
/// <param name="type"></param>
/// <param name="processedValues"></param>
/// <param name="_plcAddresses"></param>
/// <param name="_collectionGroups"></param>
/// <returns></returns>
public static LRobot LRobotMessage(string source, AcquisitionType type, List<StationData> processedValues, Dictionary<AcquisitionType, Dictionary<string, string>> _plcAddresses,
Dictionary<AcquisitionType, CollectionGroupConfig> _collectionGroups)
{
if (processedValues == null || processedValues.Count == 0)
{
return null;
}
var addresses = _plcAddresses[type];
var config = _collectionGroups[type];
return new LRobot()
{
bu_id = BU_id,
district_id = District_id,
factory_id = Factory_id,
production_line_id = Production_line_id,
production_processes_id = "",
work_center_id = "",
station_id = "",
device_name = "601PWM01",
robot_name = "LUR01",
taglist = new List<Taglist>
{
new Taglist//上料动子1
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[0].MainValue.ToString(),
y_value="0",
z_value=processedValues[1].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//上料动子2
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[2].MainValue.ToString(),
y_value="0",
z_value=processedValues[3].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//上料动子3
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[4].MainValue.ToString(),
y_value="0",
z_value=processedValues[5].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//上料动子4
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[6].MainValue.ToString(),
y_value="0",
z_value=processedValues[7].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//上料动子5
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[8].MainValue.ToString(),
y_value="0",
z_value=processedValues[9].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//上料动子6
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[10].MainValue.ToString(),
y_value="0",
z_value=processedValues[11].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//上料动子7
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[13].MainValue.ToString(),
y_value="0",
z_value=processedValues[14].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//上料动子8
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[16].MainValue.ToString(),
y_value="0",
z_value=processedValues[17].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//上料动子9
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[18].MainValue.ToString(),
y_value="0",
z_value=processedValues[19].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//焊机1
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[20].MainValue.ToString(),
y_value=processedValues[21].MainValue.ToString(),
z_value=processedValues[22].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//焊机2
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[23].MainValue.ToString(),
y_value=processedValues[24].MainValue.ToString(),
z_value=processedValues[25].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//焊机3
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[26].MainValue.ToString(),
y_value=processedValues[27].MainValue.ToString(),
z_value=processedValues[28].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//焊机4
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[29].MainValue.ToString(),
y_value=processedValues[30].MainValue.ToString(),
z_value=processedValues[31].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//焊机5
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[32].MainValue.ToString(),
y_value=processedValues[33].MainValue.ToString(),
z_value=processedValues[34].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//焊机6
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[35].MainValue.ToString(),
y_value=processedValues[36].MainValue.ToString(),
z_value=processedValues[37].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//焊机7
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[38].MainValue.ToString(),
y_value=processedValues[39].MainValue.ToString(),
z_value=processedValues[40].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//焊机8
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[41].MainValue.ToString(),
y_value=processedValues[42].MainValue.ToString(),
z_value=processedValues[43].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//焊机9
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[44].MainValue.ToString(),
y_value=processedValues[45].MainValue.ToString(),
z_value=processedValues[46].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//焊机10
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[47].MainValue.ToString(),
y_value=processedValues[48].MainValue.ToString(),
z_value=processedValues[49].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//焊机11
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[50].MainValue.ToString(),
y_value=processedValues[51].MainValue.ToString(),
z_value=processedValues[52].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//焊机12
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[53].MainValue.ToString(),
y_value=processedValues[54].MainValue.ToString(),
z_value=processedValues[55].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//下料动子1
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[56].MainValue.ToString(),
y_value="0",
z_value=processedValues[57].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//下料动子2
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[58].MainValue.ToString(),
y_value="0",
z_value=processedValues[59].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//下料动子3
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[61].MainValue.ToString(),
y_value="0",
z_value=processedValues[62].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//下料动子4
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[63].MainValue.ToString(),
y_value="0",
z_value=processedValues[64].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//下料动子5
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[65].MainValue.ToString(),
y_value="0",
z_value=processedValues[66].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
},
new Taglist//下料动子6
{
device_time=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),
collections_items=new Collection()
{
robot_status = "1",
x_value=processedValues[67].MainValue.ToString(),
y_value="0",
z_value=processedValues[68].MainValue.ToString(),
time_span="2.5",
hand_status="1",
}
}
}
};
}
// 辅助方法
private static List<short> ConvertToShortList(object[] data)
{
return data.Select(x => Convert.ToInt16(x)).ToList();
}
private static List<float> ConvertToFloatList(object[] data)
{
return data.Select(x => Convert.ToSingle(x)).ToList();
}
private static object ConvertToIntegerWithThreeDecimals(object value)
{
try
{
if (value == null) return 0;
if (value is float floatValue)
{
return (int)Math.Round(floatValue * 1000);
}
else if (value is double doubleValue)
{
return (int)Math.Round(doubleValue * 1000);
}
else if (value is decimal decimalValue)
{
return (int)Math.Round(decimalValue * 1000);
}
else
{
// 尝试转换其他类型
float converted = Convert.ToSingle(value);
return (int)Math.Round(converted * 1000);
}
}
catch (Exception ex)
{
Logger.WriteError($"转换值到整数时出错: {ex.Message}, 值: {value}");
return 0;
}
}
}
}
+158
View File
@@ -0,0 +1,158 @@
using JinYuan.DataConvertLib;
using log4net.Core;
using PLCCommunication.PLCType.Omron;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsService1
{
/// <summary>
/// 定义每个数据读取请求的参数。
/// </summary>
public class PLCDataReadRequest
{
/// <summary>
/// PLC起始地址
/// </summary>
public string StartAddress { get; set; }
/// <summary>
/// 读取长度
/// </summary>
public ushort Length { get; set; }
/// <summary>
/// 读取区域名称
/// </summary>
public string StorageName { get; set; }
/// <summary>
/// 读取数据类型
/// </summary>
public PLCDataType DataType { get; set; }
}
/// <summary>
/// 存储每次读取操作的结果。
/// </summary>
public class PLCDataResult
{
/// <summary>
/// 读取区域名称
/// </summary>
public string StorageName { get; set; }
/// <summary>
/// 读取数据类型
/// </summary>
public PLCDataType DataType { get; set; }
/// <summary>
/// 数据
/// </summary>
public byte[] Data { get; set; }
/// <summary>
/// 是否读取成功
/// </summary>
public bool IsSuccess { get; set; }
/// <summary>
/// 读取失败的错误信息
/// </summary>
public string ErrorMessage { get; set; }
}
public class PLCDataReader
{
private readonly OmronFinsNet _plc;
public PLCDataReader(OmronFinsNet plc)
{
_plc = plc ?? throw new ArgumentNullException(nameof(plc));
}
public async Task<PLCDataResult> ReadDataAsync(PLCDataReadRequest request)
{
try
{
var data = await _plc.ReadAsync(request.StartAddress, request.Length);
if (data.IsSuccess && data.Content.Length > 0)
{
Logger.WriteInfo($"成功读取PLC数据,起始地址:{request.StartAddress},长度:{request.Length},类型:{request.DataType}");
return new PLCDataResult
{
StorageName = request.StorageName,
DataType = request.DataType,
Data = data.Content,
IsSuccess = true
};
}
else
{
Logger.WriteInfo($"读取PLC数据失败,起始地址:{request.StartAddress},长度:{request.Length},类型:{request.DataType}");
return new PLCDataResult
{
StorageName = request.StorageName,
DataType = request.DataType,
IsSuccess = false,
ErrorMessage = "读取PLC数据失败"
};
}
}
catch (Exception ex)
{
Logger.WriteError($"读取PLC数据时发生错误:{ex.Message}");
return new PLCDataResult
{
StorageName = request.StorageName,
DataType = request.DataType,
IsSuccess = false,
ErrorMessage = ex.Message
};
}
}
private object[] ParseData(byte[] content, PLCDataType dataType)
{
switch (dataType)
{
case PLCDataType.Short:
return ParseShortData(content);
case PLCDataType.Float:
return ParseFloatData(content);
default:
throw new ArgumentException($"不支持的数据类型:{dataType}");
}
}
private object[] ParseShortData(byte[] content)
{
int count = content.Length / 2;
return Enumerable.Range(0, count)
.Select(i => (object)ShortLib.GetShortFromByteArray(content, i * 2))
.ToArray();
}
private object[] ParseFloatData(byte[] content)
{
int count = content.Length / 4;
return Enumerable.Range(0, count)
.Select(i => (object)FloatLib.GetFloatFromByteArray(content, i * 4))
.ToArray();
}
}
public static class ConvertHelper
{
/// <summary>
/// 字节数组高低位转换
/// </summary>
/// <param name="Arrbyte"></param>
/// <returns></returns>
public static byte[] ByteReverse(this byte[] Arrbyte)
{
byte[] ArrByte = Arrbyte.Select((x, i) => new { x, i }).GroupBy(x => x.i / 2).SelectMany(x => new byte[] { x.Last().x, x.First().x }).ToArray();
return ArrByte;
}
}
}
+108
View File
@@ -0,0 +1,108 @@
using log4net.Core;
using PLCCommunication.PLCType.Omron;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsService1
{
public class PLCWrapper
{
private OmronFinsNet _plc;
public bool _plcIsConnected;
private readonly string _ipAddress;
private readonly int _port;
private readonly int _maxReconnectAttempts;
private readonly int _reconnectDelay;
public PLCDataReader _dataReader;
public PLCWrapper(string ipAddress, int port, int maxReconnectAttempts = 3, int reconnectDelay = 5000)
{
_ipAddress = ipAddress;
_port = port;
_maxReconnectAttempts = maxReconnectAttempts;
_reconnectDelay = reconnectDelay;
}
public async Task<bool> ConnectAsync()
{
try
{
_plc = new OmronFinsNet
{
IpAddress = _ipAddress,
Port = _port
};
var connectResult = await Task.Run(() => _plc.ConnectServer());
_plcIsConnected = connectResult.IsSuccess;
if (_plcIsConnected)
{
_dataReader = new PLCDataReader(GetPLCClient());
Logger.WriteInfo("PLC连接成功");
}
else
{
Logger.WriteInfo("PLC连接失败");
}
return _plcIsConnected;
}
catch (Exception ex)
{
Logger.WriteError($"PLC连接失败: {ex.Message}");
return false;
}
}
public void Disconnect()
{
if (_plcIsConnected)
{
_plc.ConnectClose();
_plcIsConnected = false;
Logger.WriteInfo("与PLC断开连接");
}
}
public OmronFinsNet GetPLCClient()
{
if (!_plcIsConnected || _plc == null)
{
throw new InvalidOperationException("PLC 未连接或未初始化。请先调用 ConnectAsync()。");
}
return _plc;
}
public async Task<bool> ReconnectAsync()
{
if (_plcIsConnected)
{
Logger.WriteInfo("PLC已连接,无需重连");
return true;
}
for (int attempt = 1; attempt <= _maxReconnectAttempts; attempt++)
{
Logger.WriteInfo($"尝试重新连接PLC,第 {attempt} 次尝试");
if (await ConnectAsync())
{
Logger.WriteInfo("PLC重新连接成功");
return true;
}
if (attempt < _maxReconnectAttempts)
{
await Task.Delay(_reconnectDelay);
}
}
Logger.WriteError($"PLC重新连接失败,已尝试 {_maxReconnectAttempts} 次");
return false;
}
public bool IsConnected()
{
return _plcIsConnected;
}
}
}
+25
View File
@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
namespace WindowsService1
{
internal static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}
}
+36
View File
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("WindowsService1")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WindowsService1")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("242400f4-9b01-4aee-a6f7-05083757fcdd")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+38
View File
@@ -0,0 +1,38 @@
namespace WindowsService1
{
partial class Service1
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
Logger.Shutdown();
}
base.Dispose(disposing);
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.ServiceName = "Service1";
}
#endregion
}
}
File diff suppressed because it is too large Load Diff
+97
View File
@@ -0,0 +1,97 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsService1
{
/// <summary>
/// 判断工位耗时变化
/// </summary>
public class StationDataComparer:IEqualityComparer<StationData>
{
private const float FloatEpsilon = 0.000001f; // 可以调整精度
public bool Equals(StationData x, StationData y)
{
if (ReferenceEquals(x, y)) return true;
if (x is null || y is null) return false;
// 比较名称
if (x.Name != y.Name) return false;
// 比较主值
if (x.MainValue is float xFloat && y.MainValue is float yFloat)
{
if (Math.Abs(xFloat - yFloat) > FloatEpsilon) return false;
}
else if (x.MainValue is double xDouble && y.MainValue is double yDouble)
{
if (Math.Abs(xDouble - yDouble) > FloatEpsilon) return false;
}
else if (!Equals(x.MainValue, y.MainValue))
{
return false;
}
// 比较时间戳(可以选择是否忽略毫秒)
return Math.Abs((x.Timestamp - y.Timestamp).TotalMilliseconds) < 1;
}
public int GetHashCode(StationData obj)
{
if (obj is null) return 0;
unchecked
{
int hash = 17;
hash = hash * 23 + (obj.Name?.GetHashCode() ?? 0);
// 对于浮点数,可以先转换为整数再计算哈希
if (obj.MainValue is float f)
{
hash = hash * 23 + ((int)(f * 1000000)).GetHashCode();
}
else
{
hash = hash * 23 + (obj.MainValue?.GetHashCode() ?? 0);
}
hash = hash * 23 + obj.Timestamp.GetHashCode();
return hash;
}
}
}
/// <summary>
/// 判断时间戳变化
/// </summary>
public class StationDataComparer2 : IEqualityComparer<StationData>
{
public bool Equals(StationData x, StationData y)
{
if (ReferenceEquals(x, y)) return true;
if (x is null || y is null) return false;
// 只比较名称和时间戳
if (x.Name != y.Name) return false;
// 比较时间戳,检查是否完全相同
return x.Timestamp == y.Timestamp;
}
public int GetHashCode(StationData obj)
{
if (obj is null) return 0;
unchecked
{
int hash = 17;
hash = hash * 23 + (obj.Name?.GetHashCode() ?? 0);
hash = hash * 23 + obj.Timestamp.GetHashCode();
return hash;
}
}
}
}
+77
View File
@@ -0,0 +1,77 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace WindowsService1
{
public class XmlConfigReader
{
private Dictionary<string, Dictionary<string, Dictionary<string, string>>> deviceData;
public XmlConfigReader(string xmlContent)
{
XDocument doc = XDocument.Parse(xmlContent);
deviceData = ReadXmlToNestedDictionary(doc);
}
public XmlConfigReader(XDocument doc)
{
deviceData = ReadXmlToNestedDictionary(doc);
}
private Dictionary<string, Dictionary<string, Dictionary<string, string>>> ReadXmlToNestedDictionary(XDocument doc)
{
var result = new Dictionary<string, Dictionary<string, Dictionary<string, string>>>();
var mainDevice = doc.Root.Element("Device");
string mainDeviceName = mainDevice.Attribute("name").Value;
result[mainDeviceName] = new Dictionary<string, Dictionary<string, string>>();
foreach (var subDevice in mainDevice.Elements("Device"))
{
string subDeviceName = subDevice.Attribute("name").Value;
result[mainDeviceName][subDeviceName] = new Dictionary<string, string>();
foreach (var type in subDevice.Elements("Type"))
{
string typeName = type.Attribute("name").Value;
string typeValue = type.Value;
result[mainDeviceName][subDeviceName][typeName] = typeValue;
}
}
return result;
}
public void PrintStructure()
{
foreach (var mainDevice in deviceData)
{
Console.WriteLine($"Main Device: {mainDevice.Key}");
foreach (var subDevice in mainDevice.Value)
{
Console.WriteLine($" Sub Device: {subDevice.Key}");
foreach (var type in subDevice.Value)
{
Console.WriteLine($" Type: {type.Key}, Value: {type.Value}");
}
}
}
}
public bool TryGetValue(string mainDeviceName, string subDeviceName, string typeName, out string value)
{
value = null;
return deviceData.TryGetValue(mainDeviceName, out var mainDevice) &&
mainDevice.TryGetValue(subDeviceName, out var subDevice) &&
subDevice.TryGetValue(typeName, out value);
}
public Dictionary<string, Dictionary<string, Dictionary<string, string>>> GetAllData()
{
return deviceData;
}
}
}
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<appSettings>
<!--//日志配置 开启日志-->
<add key="EnableLogging" value="true" />
<!--//日志配置 日志存储周期 默认30天-->
<add key="LogRetentionDays" value="30" />
<!--//日志配置 日志存储路径 暂未使用,存储在跟目录-->
<add key="LogDirectory" value="D:\APILog\MQTTService" />
<!--//日志配置 按日存储-->
<add key="LogSplitStrategy" value="ByDay" />
<!--//日志配置 存储文件大小-->
<add key="MaxLogFileSizeBytes" value="10485760" />
<!--//PLC IP地址 192.168.1.50-->
<add key="PlcIpAddress" value="192.168.1.50" />
<!--//PLC 端口-->
<add key="PlcPort" value="9600" />
<!--//MQTT服务器IP地址 10.22.160.144-->
<add key="MQTTServerAddress" value="10.22.160.144" />
<!--//MQTT服务器端口-->
<add key="MQTTServerPort" value="1883" />
<!--//MQTT服务器发布ID-->
<add key="ClientId" value="601UPW01" />
<!--//MQTT服务发布主题PPM-->
<add key="Topic" value="EVE/60J/EQP/NEW_PPM/601UPW01" />
<!--PPM其他数据-->
<add key="Topic1" value="eve/60J/EQP/601UPW01"/>
<!--直角坐标机械臂-->
<add key="LRobotTopic" value="EVE/60J/LRobot/601PWM01_LUR01"/>
<!--关节机械臂-->
<add key="JRobotTopic" value="EVE/60J/JRobot/601PWM01_STR01"/>
<!--//参数设置 事业部-->
<add key="BU_id" value="EVE2BU" />
<!--//参数设置 地区-->
<add key="District_id" value="JM" />
<!--//参数设置 工厂-->
<add key="Factory_id" value="60J" />
<!--//参数设置 线体号-->
<add key="Production_line_id" value="MW-601" />
<!--//参数设置 设备编号-->
<add key="Device_name" value="601UPW01" />
<!--//线程循环间隔 ms单位-->
<add key="ThreadInterval" value="50" />
<add key="SwitchLog" value="True" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration>
Binary file not shown.
@@ -0,0 +1,21 @@
正在开始卸载。
查看日志文件的内容以获得 D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。
该文件位于 D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。
卸载完成。
正在运行事务处理安装。
正在开始安装的“安装”阶段。
查看日志文件的内容以获得 C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。
该文件位于 C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.InstallLog。
“安装”阶段已成功完成,正在开始“提交”阶段。
查看日志文件的内容以获得 C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。
该文件位于 C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.InstallLog。
“提交”阶段已成功完成。
已完成事务处理安装。
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,344 @@
正在安装程序集“E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestService1...
正在日志 Application 中创建 EventLog 源 TestService1...
正在安装程序集“E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestService1...
已成功安装服务 TestService1。
正在日志 Application 中创建 EventLog 源 TestService1...
查看日志文件的内容以获得 E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。
该文件位于 E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。
正在提交程序集“E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在卸载程序集“E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在移除 EventLog 源 TestService1。
正在从系统中移除服务 TestService1...
已成功地从系统中移除服务 TestService1。
正在安装程序集“E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestService1...
已成功安装服务 TestService1。
正在日志 Application 中创建 EventLog 源 TestService1...
查看日志文件的内容以获得 E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。
该文件位于 E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。
正在提交程序集“E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在卸载程序集“E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在移除 EventLog 源 TestService1。
正在从系统中移除服务 TestService1...
已成功地从系统中移除服务 TestService1。
正在安装程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestService1...
已成功安装服务 TestService1。
正在日志 Application 中创建 EventLog 源 TestService1...
查看日志文件的内容以获得 D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。
该文件位于 D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。
正在提交程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在卸载程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在移除 EventLog 源 TestService1。
正在从系统中移除服务 TestService1...
已成功地从系统中移除服务 TestService1。
正在安装程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestService1...
已成功安装服务 TestService1。
正在日志 Application 中创建 EventLog 源 TestService1...
查看日志文件的内容以获得 D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。
该文件位于 D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。
正在提交程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在卸载程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在移除 EventLog 源 TestService1。
正在从系统中移除服务 TestService1...
已成功地从系统中移除服务 TestService1。
正在安装程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestService1...
已成功安装服务 TestService1。
正在日志 Application 中创建 EventLog 源 TestService1...
查看日志文件的内容以获得 D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。
该文件位于 D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。
正在提交程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在卸载程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在移除 EventLog 源 TestService1。
正在从系统中移除服务 TestService1...
已成功地从系统中移除服务 TestService1。
正在安装程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestService1...
已成功安装服务 TestService1。
正在日志 Application 中创建 EventLog 源 TestService1...
查看日志文件的内容以获得 D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。
该文件位于 D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。
正在提交程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在安装程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestMqttService...
已成功安装服务 TestMqttService。
正在日志 Application 中创建 EventLog 源 TestMqttService...
查看日志文件的内容以获得 D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。
该文件位于 D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。
正在提交程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在安装程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestMqttService...
正在日志 Application 中创建 EventLog 源 TestMqttService...
正在安装程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestMqttService...
正在日志 Application 中创建 EventLog 源 TestMqttService...
正在安装程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestMqttService...
已成功安装服务 TestMqttService。
正在日志 Application 中创建 EventLog 源 TestMqttService...
查看日志文件的内容以获得 D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。
该文件位于 D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。
正在提交程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在安装程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestMqttService...
正在日志 Application 中创建 EventLog 源 TestMqttService...
正在卸载程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在移除 EventLog 源 TestMqttService。
正在从系统中移除服务 TestMqttService...
已成功地从系统中移除服务 TestMqttService。
尝试停止服务 TestMqttService。
正在卸载程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在移除 EventLog 源 TestMqttService。
警告: 源 TestMqttService 未在本地计算机上注册。
正在从系统中移除服务 TestMqttService...
已成功地从系统中移除服务 TestMqttService。
尝试停止服务 TestMqttService。
正在卸载程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在移除 EventLog 源 TestMqttService。
警告: 源 TestMqttService 未在本地计算机上注册。
正在从系统中移除服务 TestMqttService...
已成功地从系统中移除服务 TestMqttService。
尝试停止服务 TestMqttService。
正在卸载程序集“D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在移除 EventLog 源 TestMqttService。
警告: 源 TestMqttService 未在本地计算机上注册。
正在从系统中移除服务 TestMqttService...
已成功地从系统中移除服务 TestMqttService。
尝试停止服务 TestMqttService。
正在安装程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在安装服务 TestMqttService...
已成功安装服务 TestMqttService。
正在日志 Application 中创建 EventLog 源 TestMqttService...
正在提交程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在卸载程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在移除 EventLog 源 TestMqttService。
在卸载 System.Diagnostics.EventLogInstaller 安装程序的过程中发生异常。
System.Security.SecurityException: 不允许所请求的注册表访问权。
在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。
正在安装程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
i =
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logtoconsole =
正在安装服务 TestMqttService...
正在日志 Application 中创建 EventLog 源 TestMqttService...
正在回滚程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
i =
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logtoconsole =
正在将事件日志还原到源 TestMqttService 的前一状态。
正在卸载程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在移除 EventLog 源 TestMqttService。
正在从系统中移除服务 TestMqttService...
已成功地从系统中移除服务 TestMqttService。
尝试停止服务 TestMqttService。
正在安装程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
i =
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logtoconsole =
正在安装服务 TestMqttService...
正在日志 Application 中创建 EventLog 源 TestMqttService...
正在回滚程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
i =
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logtoconsole =
正在将事件日志还原到源 TestMqttService 的前一状态。
正在卸载程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在移除 EventLog 源 TestMqttService。
警告: 源 TestMqttService 未在本地计算机上注册。
正在从系统中移除服务 TestMqttService...
已成功地从系统中移除服务 TestMqttService。
尝试停止服务 TestMqttService。
正在卸载程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在移除 EventLog 源 TestMqttService。
警告: 源 TestMqttService 未在本地计算机上注册。
正在从系统中移除服务 TestMqttService...
已成功地从系统中移除服务 TestMqttService。
尝试停止服务 TestMqttService。
正在安装程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
i =
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logtoconsole =
正在安装服务 TestMqttService...
已成功安装服务 TestMqttService。
正在日志 Application 中创建 EventLog 源 TestMqttService...
正在提交程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
i =
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logtoconsole =
正在卸载程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在移除 EventLog 源 TestMqttService。
正在从系统中移除服务 TestMqttService...
已成功地从系统中移除服务 TestMqttService。
尝试停止服务 TestMqttService。
正在安装程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在安装服务 TestMqttService...
已成功安装服务 TestMqttService。
正在日志 Application 中创建 EventLog 源 TestMqttService...
查看日志文件的内容以获得 D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 程序集的进度。
该文件位于 D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog。
正在提交程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
正在卸载程序集“D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
assemblypath = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
logfile = D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.InstallLog
正在移除 EventLog 源 TestMqttService。
正在从系统中移除服务 TestMqttService...
已成功地从系统中移除服务 TestMqttService。
尝试停止服务 TestMqttService。
正在安装程序集“C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
assemblypath = C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.exe
logfile = C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.InstallLog
没有 RunInstallerAttribute.Yes 的公共安装程序。在 C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.exe 程序集中应该可以找到“Yes”特性。
正在提交程序集“C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.exe”。
受影响的参数是:
logtoconsole =
assemblypath = C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.exe
logfile = C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.InstallLog
没有 RunInstallerAttribute.Yes 的公共安装程序。在 C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.exe 程序集中应该可以找到“Yes”特性。
没有安装程序,因此移除 InstallState 文件。
Binary file not shown.
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<appSettings>
<!--//日志配置 开启日志-->
<add key="EnableLogging" value="true" />
<!--//日志配置 日志存储周期 默认30天-->
<add key="LogRetentionDays" value="30" />
<!--//日志配置 日志存储路径 暂未使用,存储在跟目录-->
<add key="LogDirectory" value="D:\APILog\MQTTService" />
<!--//日志配置 按日存储-->
<add key="LogSplitStrategy" value="ByDay" />
<!--//日志配置 存储文件大小-->
<add key="MaxLogFileSizeBytes" value="10485760" />
<!--//PLC IP地址 192.168.1.50-->
<add key="PlcIpAddress" value="192.168.1.50" />
<!--//PLC 端口-->
<add key="PlcPort" value="9600" />
<!--//MQTT服务器IP地址 10.22.160.144-->
<add key="MQTTServerAddress" value="10.22.160.144" />
<!--//MQTT服务器端口-->
<add key="MQTTServerPort" value="1883" />
<!--//MQTT服务器发布ID-->
<add key="ClientId" value="601UPW01" />
<!--//MQTT服务发布主题PPM-->
<add key="Topic" value="EVE/60J/EQP/NEW_PPM/601UPW01" />
<!--PPM其他数据-->
<add key="Topic1" value="eve/60J/EQP/601UPW01"/>
<!--直角坐标机械臂-->
<add key="LRobotTopic" value="EVE/60J/LRobot/601PWM01_LUR01"/>
<!--关节机械臂-->
<add key="JRobotTopic" value="EVE/60J/JRobot/601PWM01_STR01"/>
<!--//参数设置 事业部-->
<add key="BU_id" value="EVE2BU" />
<!--//参数设置 地区-->
<add key="District_id" value="JM" />
<!--//参数设置 工厂-->
<add key="Factory_id" value="60J" />
<!--//参数设置 线体号-->
<add key="Production_line_id" value="MW-601" />
<!--//参数设置 设备编号-->
<add key="Device_name" value="601UPW01" />
<!--//线程循环间隔 ms单位-->
<add key="ThreadInterval" value="50" />
<add key="SwitchLog" value="True" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration>
Binary file not shown.
+62
View File
@@ -0,0 +1,62 @@
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!-- 错误日志类 -->
<logger name="logerror">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<!-- 信息日志类 -->
<logger name="loginfo">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<!-- MQTT日志类 -->
<logger name="logmqtt">
<level value="ALL" />
<appender-ref ref="MqttAppender" />
</logger>
<!-- MQTT日志附加介质 -->
<appender name="MqttAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogMqtt\\" />
<param name="AppendToFile" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="RollingStyle" value="Composite" />
<param name="DatePattern" value="'\\\\' yyyyMMdd'\\\\log_'HH'.htm'" />
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</layout>
</appender>
<!-- 错误日志附加介质 -->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogError\\" />
<param name="AppendToFile" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="RollingStyle" value="Composite" />
<param name="DatePattern" value="'\\\\' yyyyMMdd'\\\\log_'HH'.htm'" />
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</layout>
</appender>
<!-- 信息日志附加介质 -->
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogInfo\\" />
<param name="AppendToFile" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="RollingStyle" value="Composite" />
<param name="DatePattern" value="'\\\\' yyyyMMdd'\\\\log_'HH'.htm'" />
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</layout>
</appender>
</log4net>
</configuration>
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
+2
View File
@@ -0,0 +1,2 @@
net stop TestMqttService
pause
+3
View File
@@ -0,0 +1,3 @@
net stop TestMqttService
sc delete TestMqttService binPath= "%~dp0JDWindowsService.exe" start= auto
pause
+3
View File
@@ -0,0 +1,3 @@
sc create TestMqttService binPath= "%~dp0WindowsService1.exe" start= auto
net start TestMqttService
pause
+62
View File
@@ -0,0 +1,62 @@
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!-- 错误日志类 -->
<logger name="logerror">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<!-- 信息日志类 -->
<logger name="loginfo">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<!-- MQTT日志类 -->
<logger name="logmqtt">
<level value="ALL" />
<appender-ref ref="MqttAppender" />
</logger>
<!-- MQTT日志附加介质 -->
<appender name="MqttAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogMqtt\\" />
<param name="AppendToFile" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="RollingStyle" value="Composite" />
<param name="DatePattern" value="'\\\\' yyyyMMdd'\\\\log_'HH'.htm'" />
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</layout>
</appender>
<!-- 错误日志附加介质 -->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogError\\" />
<param name="AppendToFile" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="RollingStyle" value="Composite" />
<param name="DatePattern" value="'\\\\' yyyyMMdd'\\\\log_'HH'.htm'" />
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</layout>
</appender>
<!-- 信息日志附加介质 -->
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogInfo\\" />
<param name="AppendToFile" value="true" />
<param name="StaticLogFileName" value="false" />
<param name="RollingStyle" value="Composite" />
<param name="DatePattern" value="'\\\\' yyyyMMdd'\\\\log_'HH'.htm'" />
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</layout>
</appender>
</log4net>
</configuration>
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8.1", FrameworkDisplayName = ".NET Framework 4.8.1")]
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
@@ -0,0 +1 @@
dad13fdf1648d434745330c8ec9327a094421c7c568307bc138961ed0b115c97
@@ -0,0 +1,252 @@
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\bin\Debug\Config.xml
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\bin\Debug\log4net.config
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\bin\Debug\IOT.Services.exe
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\bin\Debug\IOT.Services.pdb
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\bin\Debug\DataConvertLib.dll
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\bin\Debug\log4net.dll
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\bin\Debug\PLCCommunication.dll
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\bin\Debug\log4net.pdb
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\bin\Debug\log4net.xml
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\obj\Debug\IOT.Serv.4029DC49.Up2Date
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\obj\Debug\IOT.Services.exe
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-5 负极汇流盘焊接机\LargeSquareOne\IOT.Services\obj\Debug\IOT.Services.pdb
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\bin\Debug\Config.xml
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\bin\Debug\log4net.config
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\bin\Debug\IOT.Services.exe
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\bin\Debug\IOT.Services.pdb
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\bin\Debug\DataConvertLib.dll
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\bin\Debug\log4net.dll
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\bin\Debug\PLCCommunication.dll
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\bin\Debug\log4net.pdb
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\bin\Debug\log4net.xml
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\obj\Debug\IOT.Serv.4029DC49.Up2Date
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\obj\Debug\IOT.Services.exe
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\LargeSquareOne\IOT.Services\obj\Debug\IOT.Services.pdb
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\bin\Debug\Config.xml
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\bin\Debug\log4net.config
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\bin\Debug\IOT.Services.exe
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\bin\Debug\IOT.Services.pdb
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\bin\Debug\log4net.dll
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\bin\Debug\PLCCommunication.dll
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\bin\Debug\log4net.pdb
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\bin\Debug\log4net.xml
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\obj\Debug\IOT.Serv.4029DC49.Up2Date
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\obj\Debug\IOT.Services.exe
D:\JY_项目\2024年项目\匈牙利项目\1095大圆柱项目\JY-44J-1095-3 入壳机\1095-3C\1095-3C\IOT.Services\obj\Debug\IOT.Services.pdb
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\bin\Debug\Config.xml
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\bin\Debug\log4net.config
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\bin\Debug\IOT.Services.exe
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\bin\Debug\IOT.Services.pdb
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\bin\Debug\log4net.dll
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\bin\Debug\PLCCommunication.dll
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\bin\Debug\log4net.pdb
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\bin\Debug\log4net.xml
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\obj\Debug\IOT.Services.csproj.SuggestedBindingRedirects.cache
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\obj\Debug\IOT.Services.csproj.CopyComplete
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\obj\Debug\IOT.Services.exe
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\1095-3C\IOT.Services\obj\Debug\IOT.Services.pdb
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\bin\Debug\Config.xml
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\bin\Debug\log4net.config
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\bin\Debug\IOT.Services.exe
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\bin\Debug\IOT.Services.pdb
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\bin\Debug\log4net.dll
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\bin\Debug\PLCCommunication.dll
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\bin\Debug\log4net.pdb
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\bin\Debug\log4net.xml
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\obj\Debug\IOT.Services.csproj.SuggestedBindingRedirects.cache
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\obj\Debug\IOT.Services.csproj.CopyComplete
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\obj\Debug\IOT.Services.exe
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-13一次外观检测机\S1095-13C一次外观检测机\IOT.Services\obj\Debug\IOT.Services.pdb
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\bin\Debug\Config.xml
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\bin\Debug\log4net.config
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\bin\Debug\IOT.Services.exe
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\bin\Debug\IOT.Services.pdb
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\bin\Debug\log4net.dll
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\bin\Debug\PLCCommunication.dll
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\bin\Debug\log4net.pdb
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\bin\Debug\log4net.xml
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\obj\Debug\IOT.Services.csproj.SuggestedBindingRedirects.cache
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\obj\Debug\IOT.Services.csproj.CopyComplete
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\obj\Debug\IOT.Services.exe
D:\Users\10004998\Downloads\H491亿纬辽宁沈阳\491线模版\程序模版\S1095-17质谱检漏机\S1095-17质谱检漏机\IOT.Services\obj\Debug\IOT.Services.pdb
D:\Program\S1095-17质谱检漏机\IOT.Services\bin\Debug\Config.xml
D:\Program\S1095-17质谱检漏机\IOT.Services\bin\Debug\log4net.config
D:\Program\S1095-17质谱检漏机\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\Program\S1095-17质谱检漏机\IOT.Services\bin\Debug\IOT.Services.exe
D:\Program\S1095-17质谱检漏机\IOT.Services\bin\Debug\IOT.Services.pdb
D:\Program\S1095-17质谱检漏机\IOT.Services\bin\Debug\log4net.dll
D:\Program\S1095-17质谱检漏机\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\Program\S1095-17质谱检漏机\IOT.Services\bin\Debug\PLCCommunication.dll
D:\Program\S1095-17质谱检漏机\IOT.Services\bin\Debug\log4net.pdb
D:\Program\S1095-17质谱检漏机\IOT.Services\bin\Debug\log4net.xml
D:\Program\S1095-17质谱检漏机\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\Program\S1095-17质谱检漏机\IOT.Services\obj\Debug\IOT.Services.csproj.SuggestedBindingRedirects.cache
D:\Program\S1095-17质谱检漏机\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\Program\S1095-17质谱检漏机\IOT.Services\obj\Debug\IOT.Services.csproj.CopyComplete
D:\Program\S1095-17质谱检漏机\IOT.Services\obj\Debug\IOT.Services.exe
D:\Program\S1095-17质谱检漏机\IOT.Services\obj\Debug\IOT.Services.pdb
D:\Program\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\Config.xml
D:\Program\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\log4net.config
D:\Program\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\Program\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\IOT.Services.exe
D:\Program\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\IOT.Services.pdb
D:\Program\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\log4net.dll
D:\Program\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\Program\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\PLCCommunication.dll
D:\Program\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\log4net.pdb
D:\Program\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\log4net.xml
D:\Program\S1095-17质谱检漏机0714\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\Program\S1095-17质谱检漏机0714\IOT.Services\obj\Debug\IOT.Services.csproj.SuggestedBindingRedirects.cache
D:\Program\S1095-17质谱检漏机0714\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\Program\S1095-17质谱检漏机0714\IOT.Services\obj\Debug\IOT.Services.csproj.CopyComplete
D:\Program\S1095-17质谱检漏机0714\IOT.Services\obj\Debug\IOT.Services.exe
D:\Program\S1095-17质谱检漏机0714\IOT.Services\obj\Debug\IOT.Services.pdb
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\Config.xml
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\log4net.config
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\IOT.Services.exe
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\IOT.Services.pdb
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\log4net.dll
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\PLCCommunication.dll
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\log4net.pdb
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\bin\Debug\log4net.xml
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\obj\Debug\IOT.Services.csproj.SuggestedBindingRedirects.cache
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\obj\Debug\IOT.Services.csproj.CopyComplete
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\obj\Debug\IOT.Services.exe
D:\Program\S1095-17质谱检漏机0727\S1095-17质谱检漏机0714\IOT.Services\obj\Debug\IOT.Services.pdb
D:\Program\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\Config.xml
D:\Program\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\log4net.config
D:\Program\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\Program\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\IOT.Services.exe
D:\Program\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\IOT.Services.pdb
D:\Program\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\log4net.dll
D:\Program\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\Program\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\PLCCommunication.dll
D:\Program\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\log4net.pdb
D:\Program\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\log4net.xml
D:\Program\S1095-17质谱检漏机0811\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\Program\S1095-17质谱检漏机0811\IOT.Services\obj\Debug\IOT.Services.csproj.SuggestedBindingRedirects.cache
D:\Program\S1095-17质谱检漏机0811\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\Program\S1095-17质谱检漏机0811\IOT.Services\obj\Debug\IOT.Services.csproj.CopyComplete
D:\Program\S1095-17质谱检漏机0811\IOT.Services\obj\Debug\IOT.Services.exe
D:\Program\S1095-17质谱检漏机0811\IOT.Services\obj\Debug\IOT.Services.pdb
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\Config.xml
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\log4net.config
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\IOT.Services.exe
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\IOT.Services.pdb
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\log4net.dll
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\PLCCommunication.dll
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\log4net.pdb
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\bin\Debug\log4net.xml
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\obj\Debug\IOT.Serv.4029DC49.Up2Date
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\obj\Debug\IOT.Services.exe
D:\上位机程序\S1095-17质谱检漏机0811\IOT.Services\obj\Debug\IOT.Services.pdb
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\bin\Debug\Config.xml
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\bin\Debug\log4net.config
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\bin\Debug\IOT.Services.exe
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\bin\Debug\IOT.Services.pdb
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\bin\Debug\log4net.dll
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\bin\Debug\PLCCommunication.dll
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\bin\Debug\log4net.pdb
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\bin\Debug\log4net.xml
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\obj\Debug\IOT.Serv.4029DC49.Up2Date
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\obj\Debug\IOT.Services.exe
D:\上位机程序\431-1398-17-质谱检漏机0730\IOT.Services\obj\Debug\IOT.Services.pdb
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\Config.xml
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\log4net.config
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\IOT.Services.exe.config
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\IOT.Services.exe
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\IOT.Services.pdb
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\log4net.dll
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\Newtonsoft.Json.dll
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\PLCCommunication.dll
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\log4net.pdb
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\log4net.xml
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\obj\Debug\IOT.Serv.4029DC49.Up2Date
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\obj\Debug\IOT.Services.exe
D:\上位机程序\431-1398-17-质谱检漏机0902\IOT.Services\obj\Debug\IOT.Services.pdb
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\Config.xml
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\log4net.config
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\IOT.Services.exe.config
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\IOT.Services.exe
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\IOT.Services.pdb
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\log4net.dll
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\Newtonsoft.Json.dll
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\PLCCommunication.dll
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\log4net.pdb
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\bin\Debug\log4net.xml
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\obj\Debug\IOT.Services.exe.config
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\obj\Debug\IOT.Serv.4029DC49.Up2Date
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\obj\Debug\IOT.Services.exe
F:\质谱仪暂时最新稳定版本\431-1398-17-质谱检漏机0902\IOT.Services\obj\Debug\IOT.Services.pdb
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\Config.xml
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\log4net.config
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\IOT.Services.exe.config
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\IOT.Services.exe
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\IOT.Services.pdb
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\log4net.dll
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\Newtonsoft.Json.dll
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\PLCCommunication.dll
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\log4net.pdb
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\log4net.xml
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\obj\Debug\IOT.Services.exe.config
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\obj\Debug\IOT.Serv.4029DC49.Up2Date
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\obj\Debug\IOT.Services.exe
F:\质谱仪最新版本\431-1398-17-质谱检漏机0904\IOT.Services\obj\Debug\IOT.Services.pdb
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\Config.xml
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\log4net.config
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\IOT.Services.exe.config
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\IOT.Services.exe
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\IOT.Services.pdb
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\log4net.dll
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\Newtonsoft.Json.dll
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\PLCCommunication.dll
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\log4net.pdb
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\bin\Debug\log4net.xml
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\obj\Debug\IOT.Services.csproj.AssemblyReference.cache
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\obj\Debug\IOT.Services.exe.config
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\obj\Debug\IOT.Services.csproj.CoreCompileInputs.cache
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\obj\Debug\IOT.Serv.4029DC49.Up2Date
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\obj\Debug\IOT.Services.exe
F:\workspaces\质谱仪\431-1398-17-质谱检漏机0904\IOT.Services\obj\Debug\IOT.Services.pdb
Binary file not shown.
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<appSettings>
<!--//日志配置 开启日志-->
<add key="EnableLogging" value="true" />
<!--//日志配置 日志存储周期 默认30天-->
<add key="LogRetentionDays" value="30" />
<!--//日志配置 日志存储路径 暂未使用,存储在跟目录-->
<add key="LogDirectory" value="D:\APILog\MQTTService" />
<!--//日志配置 按日存储-->
<add key="LogSplitStrategy" value="ByDay" />
<!--//日志配置 存储文件大小-->
<add key="MaxLogFileSizeBytes" value="10485760" />
<!--//PLC IP地址 192.168.1.50-->
<add key="PlcIpAddress" value="192.168.1.50" />
<!--//PLC 端口-->
<add key="PlcPort" value="9600" />
<!--//MQTT服务器IP地址 10.22.160.144-->
<add key="MQTTServerAddress" value="10.22.160.144" />
<!--//MQTT服务器端口-->
<add key="MQTTServerPort" value="1883" />
<!--//MQTT服务器发布ID-->
<add key="ClientId" value="601UPW01" />
<!--//MQTT服务发布主题PPM-->
<add key="Topic" value="EVE/60J/EQP/NEW_PPM/601UPW01" />
<!--PPM其他数据-->
<add key="Topic1" value="eve/60J/EQP/601UPW01"/>
<!--直角坐标机械臂-->
<add key="LRobotTopic" value="EVE/60J/LRobot/601PWM01_LUR01"/>
<!--关节机械臂-->
<add key="JRobotTopic" value="EVE/60J/JRobot/601PWM01_STR01"/>
<!--//参数设置 事业部-->
<add key="BU_id" value="EVE2BU" />
<!--//参数设置 地区-->
<add key="District_id" value="JM" />
<!--//参数设置 工厂-->
<add key="Factory_id" value="60J" />
<!--//参数设置 线体号-->
<add key="Production_line_id" value="MW-601" />
<!--//参数设置 设备编号-->
<add key="Device_name" value="601UPW01" />
<!--//线程循环间隔 ms单位-->
<add key="ThreadInterval" value="50" />
<add key="SwitchLog" value="True" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration>
Binary file not shown.
@@ -0,0 +1 @@
0b22c4daf96d6808ec753ee36a74e1cba47266d3
@@ -0,0 +1,178 @@
E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\log4net.config
E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe.config
E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\WindowsService1.pdb
E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\log4net.dll
E:\CSharp Project\Other\WindowsService1\WindowsService1\bin\Debug\log4net.xml
E:\CSharp Project\Other\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.AssemblyReference.cache
E:\CSharp Project\Other\WindowsService1\WindowsService1\obj\Debug\WindowsService1.ProjectInstaller.resources
E:\CSharp Project\Other\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.GenerateResource.cache
E:\CSharp Project\Other\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CoreCompileInputs.cache
E:\CSharp Project\Other\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CopyComplete
E:\CSharp Project\Other\WindowsService1\WindowsService1\obj\Debug\WindowsService1.exe
E:\CSharp Project\Other\WindowsService1\WindowsService1\obj\Debug\WindowsService1.pdb
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\log4net.config
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe.config
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\WindowsService1.pdb
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\log4net.dll
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\log4net.xml
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.AssemblyReference.cache
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\obj\Debug\WindowsService1.ProjectInstaller.resources
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.GenerateResource.cache
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CoreCompileInputs.cache
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\obj\Debug\WindowsS.24B08AB2.Up2Date
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\obj\Debug\WindowsService1.exe
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\obj\Debug\WindowsService1.pdb
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\DataConvertLib.dll
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\MQTTnet.dll
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\Newtonsoft.Json.dll
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\PLCCommunication.dll
D:\小米\C# Windows 服务程序的开发\WindowsService1\WindowsService1\bin\Debug\MQTTnet.xml
D:\小米\WindowsService1\WindowsService1\bin\Debug\log4net.config
D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe.config
D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
D:\小米\WindowsService1\WindowsService1\bin\Debug\DataConvertLib.dll
D:\小米\WindowsService1\WindowsService1\bin\Debug\log4net.dll
D:\小米\WindowsService1\WindowsService1\bin\Debug\MQTTnet.dll
D:\小米\WindowsService1\WindowsService1\bin\Debug\Newtonsoft.Json.dll
D:\小米\WindowsService1\WindowsService1\bin\Debug\PLCCommunication.dll
D:\小米\WindowsService1\WindowsService1\bin\Debug\log4net.xml
D:\小米\WindowsService1\WindowsService1\bin\Debug\MQTTnet.xml
D:\小米\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.AssemblyReference.cache
D:\小米\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CoreCompileInputs.cache
D:\小米\WindowsService1\WindowsService1\obj\Debug\WindowsS.24B08AB2.Up2Date
D:\小米\WindowsService1\WindowsService1\obj\Debug\WindowsService1.exe
D:\小米\WindowsService1\WindowsService1\obj\Debug\WindowsService1.pdb
D:\小米\WindowsService1\WindowsService1\bin\Debug\WindowsService1.pdb
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\bin\Debug\log4net.config
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe.config
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\bin\Debug\WindowsService1.pdb
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\bin\Debug\DataConvertLib.dll
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\bin\Debug\log4net.dll
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\bin\Debug\MQTTnet.dll
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\bin\Debug\Newtonsoft.Json.dll
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\bin\Debug\PLCCommunication.dll
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\bin\Debug\log4net.xml
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\bin\Debug\MQTTnet.xml
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.AssemblyReference.cache
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.SuggestedBindingRedirects.cache
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CoreCompileInputs.cache
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CopyComplete
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\obj\Debug\WindowsService1.exe
D:\上位机与电气通讯文档\WindowsService1\WindowsService1\obj\Debug\WindowsService1.pdb
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\bin\Debug\log4net.config
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe.config
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\bin\Debug\WindowsService1.pdb
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\bin\Debug\DataConvertLib.dll
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\bin\Debug\log4net.dll
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\bin\Debug\Newtonsoft.Json.dll
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\bin\Debug\PLCCommunication.dll
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\bin\Debug\log4net.xml
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.AssemblyReference.cache
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CoreCompileInputs.cache
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\obj\Debug\WindowsS.24B08AB2.Up2Date
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\obj\Debug\WindowsService1.exe
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\obj\Debug\WindowsService1.pdb
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\bin\Debug\log4net.pdb
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\bin\Debug\log4net.config
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe.config
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\bin\Debug\WindowsService1.pdb
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\bin\Debug\DataConvertLib.dll
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\bin\Debug\log4net.dll
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\bin\Debug\Newtonsoft.Json.dll
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\bin\Debug\PLCCommunication.dll
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\bin\Debug\log4net.pdb
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\bin\Debug\log4net.xml
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.AssemblyReference.cache
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.SuggestedBindingRedirects.cache
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CoreCompileInputs.cache
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CopyComplete
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\obj\Debug\WindowsService1.exe
D:\上位机与电气通讯文档\20240918\WindowsService1\WindowsService1\obj\Debug\WindowsService1.pdb
E:\JY_项目\1086大方形\IOT\WindowsService1\WindowsService1\bin\Debug\Device.xml
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\bin\Debug\log4net.config
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe.config
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\bin\Debug\WindowsService1.pdb
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\bin\Debug\DataConvertLib.dll
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\bin\Debug\log4net.dll
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\bin\Debug\Newtonsoft.Json.dll
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\bin\Debug\PLCCommunication.dll
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\bin\Debug\log4net.pdb
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\bin\Debug\log4net.xml
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.AssemblyReference.cache
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CoreCompileInputs.cache
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\obj\Debug\WindowsS.24B08AB2.Up2Date
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\obj\Debug\WindowsService1.exe
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\obj\Debug\WindowsService1.pdb
D:\JY_项目\1086大方形\IOT\测试服务\WindowsService1\WindowsService1\bin\Debug\Config.xml
C:\Users\aa\Desktop\WindowsService1\bin\Debug\Config.xml
C:\Users\aa\Desktop\WindowsService1\bin\Debug\log4net.config
C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.exe.config
C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.exe
C:\Users\aa\Desktop\WindowsService1\bin\Debug\WindowsService1.pdb
C:\Users\aa\Desktop\WindowsService1\bin\Debug\DataConvertLib.dll
C:\Users\aa\Desktop\WindowsService1\bin\Debug\log4net.dll
C:\Users\aa\Desktop\WindowsService1\bin\Debug\Newtonsoft.Json.dll
C:\Users\aa\Desktop\WindowsService1\bin\Debug\PLCCommunication.dll
C:\Users\aa\Desktop\WindowsService1\bin\Debug\log4net.pdb
C:\Users\aa\Desktop\WindowsService1\bin\Debug\log4net.xml
C:\Users\aa\Desktop\WindowsService1\obj\Debug\WindowsService1.csproj.AssemblyReference.cache
C:\Users\aa\Desktop\WindowsService1\obj\Debug\WindowsService1.csproj.CoreCompileInputs.cache
C:\Users\aa\Desktop\WindowsService1\obj\Debug\WindowsS.24B08AB2.Up2Date
C:\Users\aa\Desktop\WindowsService1\obj\Debug\WindowsService1.exe
C:\Users\aa\Desktop\WindowsService1\obj\Debug\WindowsService1.pdb
C:\Users\28298\Desktop\WindowsService1\WindowsService1\bin\Debug\Config.xml
C:\Users\28298\Desktop\WindowsService1\WindowsService1\bin\Debug\log4net.config
C:\Users\28298\Desktop\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe.config
C:\Users\28298\Desktop\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
C:\Users\28298\Desktop\WindowsService1\WindowsService1\bin\Debug\WindowsService1.pdb
C:\Users\28298\Desktop\WindowsService1\WindowsService1\bin\Debug\DataConvertLib.dll
C:\Users\28298\Desktop\WindowsService1\WindowsService1\bin\Debug\log4net.dll
C:\Users\28298\Desktop\WindowsService1\WindowsService1\bin\Debug\Newtonsoft.Json.dll
C:\Users\28298\Desktop\WindowsService1\WindowsService1\bin\Debug\PLCCommunication.dll
C:\Users\28298\Desktop\WindowsService1\WindowsService1\bin\Debug\log4net.pdb
C:\Users\28298\Desktop\WindowsService1\WindowsService1\bin\Debug\log4net.xml
C:\Users\28298\Desktop\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.AssemblyReference.cache
C:\Users\28298\Desktop\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CoreCompileInputs.cache
C:\Users\28298\Desktop\WindowsService1\WindowsService1\obj\Debug\WindowsS.24B08AB2.Up2Date
C:\Users\28298\Desktop\WindowsService1\WindowsService1\obj\Debug\WindowsService1.exe
C:\Users\28298\Desktop\WindowsService1\WindowsService1\obj\Debug\WindowsService1.pdb
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\bin\Debug\Config.xml
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\bin\Debug\log4net.config
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe.config
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\bin\Debug\WindowsService1.pdb
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\bin\Debug\DataConvertLib.dll
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\bin\Debug\log4net.dll
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\bin\Debug\Newtonsoft.Json.dll
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\bin\Debug\PLCCommunication.dll
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\bin\Debug\log4net.pdb
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\bin\Debug\log4net.xml
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.AssemblyReference.cache
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.SuggestedBindingRedirects.cache
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CoreCompileInputs.cache
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\obj\Debug\WindowsService1.csproj.CopyComplete
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\obj\Debug\WindowsService1.exe
D:\2024_9_2\IOT\1-2\WindowsService1\WindowsService1\obj\Debug\WindowsService1.pdb
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\bin\Debug\Config.xml
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\bin\Debug\log4net.config
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\bin\Debug\WindowsService1.exe.config
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\bin\Debug\WindowsService1.exe
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\bin\Debug\WindowsService1.pdb
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\bin\Debug\DataConvertLib.dll
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\bin\Debug\log4net.dll
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\bin\Debug\Newtonsoft.Json.dll
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\bin\Debug\PLCCommunication.dll
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\bin\Debug\log4net.pdb
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\bin\Debug\log4net.xml
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\obj\Debug\WindowsService1.csproj.AssemblyReference.cache
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\obj\Debug\WindowsService1.csproj.SuggestedBindingRedirects.cache
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\obj\Debug\WindowsService1.csproj.CoreCompileInputs.cache
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\obj\Debug\WindowsService1.csproj.CopyComplete
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\obj\Debug\WindowsService1.exe
D:\2024_9_2\IOT\1-2\WindowsService1-0107\WindowsService1\obj\Debug\WindowsService1.pdb
Binary file not shown.
Binary file not shown.
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="log4net" version="3.0.0" targetFramework="net48" />
</packages>
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JinYuan.Helper;
using JinYuan.Models;
using JinYuan.VirtualDataLibrary;
using PLCCommunication.Common;
using PLCCommunication.Common.DataConvert;
namespace JinYuan.ControlCenters
{
public partial class ControlCenter
{
public static string GetValueFromByteArray(byte[] bArray, string PLCGroupVariablekey, int offset = 0, Group pf = null)
{
return GetValueFromByteArray(bArray, getPLCVariable(PLCGroupVariablekey), offset, pf);
}
public static PLCGroupVariable getPLCVariable(string key)
{
PLCGroupVariable pLCGroupVariable = new PLCGroupVariable();
CommonMethods.PLCVariable.TryGetValue(key, out pLCGroupVariable);
return pLCGroupVariable;
}
/// <summary>
/// 获取MES返回结果
/// </summary>
/// <param name="bArray"></param>
/// <param name="var"></param>
/// <param name="offset"></param>
/// <param name="pf"></param>
/// <returns></returns>
public static string GetValueFromByteArray(byte[] bArray, PLCGroupVariable var, int offset = 0, Group pf = null)
{
string value = "0";
try
{
switch (var.DataType)
{
case "Float":
value = FloatLib.GetFloatFromByteArray(bArray, var.ArrayStart * 2 + offset, DataFormat.CDAB).ToString("0.###");
break;
case "Short":
value = ShortLib.GetShortFromByteArray(bArray, var.ArrayStart * 2 + offset).ToString();
break;
case "Int":
value = IntLib.GetIntFromByteArray(bArray, var.ArrayStart * 2 + offset).ToString();
break;
}
}
catch (Exception ex)
{
LogHelper.Instance.WriteError($"数据解析异常, 原因: {ex}", "SysErrorLog");
}
return value;
}
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,882 @@
using JinYuan.Helper;
using JinYuan.MES.Models;
using JinYuan.Models;
using JinYuan.VirtualDataLibrary;
using PLCCommunication;
using PLCCommunication.Common;
using PLCCommunication.Modbus;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace JinYuan.ControlCenters
{
public partial class ControlCenter
{
#region 刷新12小时产能
//public void Refresh12HourProdQty()
//{
// List<Chart12HourData> chart12Hours = new List<Chart12HourData>();
// int j = 0;
// int m = 0;
// int n = 0;
// DateTime dtTime = DateTime.Now;
// string strDate = dtTime.ToString("yyyy-MM-dd");
// int Hour = GetHour();
// var listTotal = CommonMethods.db.QueryWhereList<Hourprod>(t => t.FDate == strDate);// 查询稼动率表中total数据
// if (listTotal != null && listTotal.Count > 0)
// {
// for (int i = 1; i < 13; i++)
// {
// #region X轴数据
// if (CommonMethods.strClass != "白班")
// {
// j = i + 21;
// if (j >= 25 && j < 26)
// {
// m = j - 2;
// n = j - 25;
// }
// else if (j >= 26)
// {
// m = j - 26;
// n = j - 25;
// }
// else
// {
// m = j - 2;
// n = j - 1;
// }
// }
// else
// {
// j = i + 9;
// m = j - 2;
// n = j - 1;
// }
// #endregion
// int Fhour = Convert.ToInt32(m);
// var hour1 = listTotal.Where(p => p.FHour == Fhour).FirstOrDefault();
// int ProdALLQty = 0;
// int ProdOKQty = 0;
// int ProdNGQty = 0;
// string strOkRatio = "0.00";
// if (hour1 != null)
// {
// ProdALLQty += hour1.ProdIn;
// ProdOKQty += hour1.ProdOut;
// }
// ProdNGQty = ProdALLQty - ProdOKQty;
// if (ProdOKQty >= 0 && ProdALLQty > 0)
// {
// strOkRatio = (Math.Round(decimal.Parse(ProdOKQty.ToString()) / decimal.Parse(ProdALLQty.ToString()), 4)).ToString();
// }
// else
// {
// strOkRatio = "0.00";
// }
// chart12Hours.Add(new Chart12HourData()
// {
// DisplayTime = m + ":30~" + (n) + ":30",
// ProdIn = ProdALLQty,
// ProdOut = ProdOKQty,
// ProdNg = ProdNGQty,
// OKRatio = strOkRatio
// });
// }
// }
// else
// {
// for (int i = 1; i < 13; i++)
// {
// #region X轴数据
// if (CommonMethods.strClass != "白班")
// {
// j = i + 21;
// if (j >= 25 && j < 26)
// {
// m = j - 2;
// n = j - 25;
// }
// else if (j >= 26)
// {
// m = j - 26;
// n = j - 25;
// }
// else
// {
// m = j - 2;
// n = j - 1;
// }
// }
// else
// {
// j = i + 9;
// m = j - 2;
// n = j - 1;
// }
// #endregion
// Random rand = new Random();
// int ranOK = rand.Next(1000, 3000);
// int ranNG = rand.Next(400, 1200);
// int total = ranOK + ranNG;
// chart12Hours.Add(new Chart12HourData()
// {
// DisplayTime = m + ":30~" + n + ":30",
// ProdIn = ranOK + ranNG,
// ProdOut = ranOK,
// ProdNg = ranNG,
// OKRatio = (Math.Round(decimal.Parse(ranOK.ToString()) / decimal.Parse(total.ToString()) * 0.01m, 2) * 100).ToString()
// });
// }
// }
// if (chart12Hours != null)
// {
// CommonMethods.Lst_Prod12HourData = chart12Hours;
// }
//}
public int GetHour()
{
DateTime now = DateTime.Now;
int nowHour = Convert.ToInt32($"{now.Hour}30");
int hour = 0;
if (CommonMethods.LastHour != nowHour)
{
hour = Convert.ToInt32($"{now.Hour - 1}30");
if (now.Hour == 0)
{
hour = 2330;
}
}
else
{
hour = Convert.ToInt32($"{now.Hour}30");
}
return hour;
}
public void Refresh12HourProdQty()
{
List<Chart12HourData> chart12Hours = new List<Chart12HourData>();
DateTime dtTime = DateTime.Now;
string strDate = dtTime.ToString("yyyy-MM-dd");
string nextDate = dtTime.AddDays(1).ToString("yyyy-MM-dd");
int Hour = GetHour();
var listTotal = CommonMethods.db.QueryWhereList<Hourprod>(t =>
t.FDate == strDate || t.FDate == nextDate);// 查询两天的数据
if (listTotal != null && listTotal.Count > 0)
{
for (int i = 0; i < 24; i++) // 改为24小时
{
int currentHour = (i + 8) % 24; // 从8点开始
int nextHour = (currentHour + 1) % 24;
string currentDate = currentHour >= 8 ? strDate : nextDate;
var hour1 = listTotal.Where(p =>
p.FDate == currentDate &&
p.FHour == currentHour).FirstOrDefault();
int ProdALLQty = 0;
int ProdOKQty = 0;
int ProdNGQty = 0;
string strOkRatio = "0.00";
if (hour1 != null)
{
ProdALLQty = hour1.ProdIn;
ProdOKQty = hour1.ProdOut;
}
ProdNGQty = ProdALLQty - ProdOKQty;
if (ProdOKQty >= 0 && ProdALLQty > 0)
{
strOkRatio = (Math.Round(decimal.Parse(ProdOKQty.ToString()) / decimal.Parse(ProdALLQty.ToString()), 4)).ToString();
}
string displayTime = $"{currentHour:D2}:30~{nextHour:D2}:29";
chart12Hours.Add(new Chart12HourData()
{
DisplayTime = displayTime,
ProdIn = ProdALLQty,
ProdOut = ProdOKQty,
ProdNg = ProdNGQty,
OKRatio = strOkRatio
});
}
}
else
{
for (int i = 0; i < 24; i++)
{
int currentHour = (i + 8) % 24;
int nextHour = (currentHour + 1) % 24;
Random rand = new Random();
int ranOK = rand.Next(1000, 3000);
int ranNG = rand.Next(400, 1200);
int total = ranOK + ranNG;
string displayTime = $"{currentHour:D2}:30~{nextHour:D2}:29";
chart12Hours.Add(new Chart12HourData()
{
DisplayTime = displayTime,
ProdIn = ranOK + ranNG,
ProdOut = ranOK,
ProdNg = ranNG,
OKRatio = (Math.Round(decimal.Parse(ranOK.ToString()) / decimal.Parse(total.ToString()) * 0.01m, 2) * 100).ToString()
});
}
}
if (chart12Hours != null)
{
CommonMethods.Lst_Prod12HourData = chart12Hours;
}
}
#endregion
#region 检测项不良
/// <summary>
/// 读取检测项不良
/// </summary>
private void GetDefectTypeQty()
{
try
{
if (CommonMethods.Lst_DefectTypeQty.Count <= 0)
{
CommonMethods.Lst_DefectTypeQty.Add(new ChartDataType { DataType = "腔体真空NG", DataCount = 0 });
CommonMethods.Lst_DefectTypeQty.Add(new ChartDataType { DataType = "清腔漏率检测NG", DataCount = 0 });
//CommonMethods.Lst_DefectTypeQty.Add(new ChartDataType { DataType = "厚度不良", DataCount = 0 });
//CommonMethods.Lst_DefectTypeQty.Add(new ChartDataType { DataType = "焊前CCD正极耳顶面不良", DataCount = 0 });
}
else //读取PLC数据
{
if (CommonMethods.plcDevices[0] != null && CommonMethods.plcDevices[0].IsConnected)
{
Task.Run(() =>
{
try
{
int ProdDQTZKNgQty = CommonMethods.plcDevices[0].ReadInt32("D18068");//腔体真空NG
int ProdDQTLLJCNgQty = CommonMethods.plcDevices[0].ReadInt32("D18072");//清腔漏率检测NG
//從PLC讀取數據賦值給到NGList
CommonMethods.Lst_DefectTypeQty.Where(p => p.DataType == "腔体真空NG").FirstOrDefault().DataCount = ProdDQTZKNgQty;
CommonMethods.Lst_DefectTypeQty.Where(p => p.DataType == "清腔漏率检测NG").FirstOrDefault().DataCount = ProdDQTLLJCNgQty;
}
catch (Exception ex)
{
LogHelper.Instance.WriteEX(ex);
}
});
}
}
}
catch (Exception ex)
{
LogHelper.Instance.WriteEX(ex);
}
}
#endregion
#region 智能电表 ---默认D1300开始
public void GetEnergyData()
{
ModbusRtu busRtuClient = new ModbusRtu();
if (CommonMethods.plcDevices[0] != null && CommonMethods.plcDevices[0].IsConnected)
{
List<ElectricEnergy> listM = new List<ElectricEnergy>();
List<float> ListF = new List<float>();
List<string> listAddre = new List<string>()
{
"D1100","D1102","D1104","D1106","D1108","D1110","D1112","D1114","D1116","D1118","D1120","D1122","D1124","D1126"
};
try
{
ElectricEnergy m = new ElectricEnergy();
for (int i = 0; i < listAddre.Count; i++)
{
ListF.Add(CommonMethods.plcDevices[0].ReadFloat(listAddre[i]));
}
m.AccumulatedElectricity = (Decimal)ListF[0]; //有功电能(累计电能)D1100
m.PhaseVoltageA = (Decimal)ListF[1]; ; //A相电压 D1102
m.PhaseVoltageB = (Decimal)ListF[2]; ;//B相电压 D1104
m.PhaseVoltageC = (Decimal)ListF[3]; ;//C相电压 D1106
m.PhaseCurrentA = (Decimal)ListF[4]; ; //电流IA D1108
m.PhaseCurrentB = (Decimal)ListF[5]; ;//电流IB D1110
m.PhaseCurrentC = (Decimal)ListF[6]; ;//电流IC D1112
m.PhasePowerA = (Decimal)ListF[7]; ; //A相有功功率 D1114
m.PhasePowerB = (Decimal)ListF[8]; ; //B相有功功率 D1116
m.PhasePowerC = (Decimal)ListF[9]; ;//C相有功功率 D1118
m.ActivePower = (Decimal)ListF[10]; ; //总有功功率 D1120
m.PowerFactor = (Decimal)ListF[11]; ; //总功率因数 D1122
m.pt = (Decimal)ListF[12]; ; //电压变比 D1124
m.ct = (Decimal)ListF[13]; ; //电流变比 D1126
listM.Add(m);
CommonMethods.listElectricEnergy = listM;
return;
busRtuClient.SerialPortInni(sp =>
{
sp.PortName = "COM1";
sp.BaudRate = 9600;
sp.DataBits = 8;
sp.StopBits = System.IO.Ports.StopBits.One;
sp.Parity = System.IO.Ports.Parity.None;
});
busRtuClient.DataFormat = (PLCCommunication.Common.DataFormat)DataFormat.CDAB;
busRtuClient.Open(); // 打开
if (busRtuClient.IsOpen())
{
// 读取数据
JYResult<byte[]> readResult = busRtuClient.Read("35", 30);
JYResult<byte[]> readResult1 = busRtuClient.Read("3", 2);
if (readResult.IsSuccess && readResult1.IsSuccess)
{
//DPT
Byte DptH = busRtuClient.ByteTransform.TransByte(readResult.Content, 0);//高8位
Byte DptL = busRtuClient.ByteTransform.TransByte(readResult.Content, 1);//低8位
//DPQ
Byte DpqH = busRtuClient.ByteTransform.TransByte(readResult.Content, 2);//高8位
Byte DpqL = busRtuClient.ByteTransform.TransByte(readResult.Content, 3);//低8位
m = new ElectricEnergy();
Decimal q = busRtuClient.ByteTransform.TransUInt16(readResult.Content, 56);
Decimal w = busRtuClient.ByteTransform.TransUInt16(readResult.Content, 58);
m.pt = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult1.Content, 0)); //电压变比 D1124
m.ct = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult1.Content, 2)); //电流变比 D1126
Decimal Power = (q * 65536 + w) / 1000;
m.AccumulatedElectricity = Convert.ToDecimal(Power * m.pt * m.ct); //有功电能(累计电能)D1100
ListF.Add((float)m.AccumulatedElectricity.Value);
//电压
m.PhaseVoltageA = Convert.ToDecimal(busRtuClient.ByteTransform.TransUInt16(readResult.Content, 4) * Math.Pow(10, DptH - 4)); //A相电压 D1102
m.PhaseVoltageB = Convert.ToDecimal(busRtuClient.ByteTransform.TransUInt16(readResult.Content, 6) * Math.Pow(10, DptH - 4));//B相电压 D1104
m.PhaseVoltageC = Convert.ToDecimal(busRtuClient.ByteTransform.TransUInt16(readResult.Content, 8) * Math.Pow(10, DptH - 4));//C相电压 D1106
ListF.Add((float)m.PhaseVoltageA.Value);
ListF.Add((float)m.PhaseVoltageB.Value);
ListF.Add((float)m.PhaseVoltageC.Value);
//电流
m.PhaseCurrentA = Convert.ToDecimal(busRtuClient.ByteTransform.TransUInt16(readResult.Content, 16) * Math.Pow(10, DptL - 4)); //电流IA D1108
m.PhaseCurrentB = Convert.ToDecimal(busRtuClient.ByteTransform.TransUInt16(readResult.Content, 18) * Math.Pow(10, DptL - 4));//电流IB D1110
m.PhaseCurrentC = Convert.ToDecimal(busRtuClient.ByteTransform.TransUInt16(readResult.Content, 20) * Math.Pow(10, DptL - 4));//电流IC D1112
ListF.Add((float)m.PhaseCurrentA.Value);
ListF.Add((float)m.PhaseCurrentB.Value);
ListF.Add((float)m.PhaseCurrentC.Value);
//有功功率
m.PhasePowerA = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult.Content, 22) * Math.Pow(10, DpqH - 4)); //A相有功功率 D1114
m.PhasePowerB = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult.Content, 24) * Math.Pow(10, DpqH - 4)); //B相有功功率 D1116
m.PhasePowerC = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult.Content, 26) * Math.Pow(10, DpqH - 4));//C相有功功率 D1118
m.ActivePower = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult.Content, 28) * Math.Pow(10, DpqH - 4)); //总有功功率 D1120
ListF.Add((float)m.PhasePowerA.Value);
ListF.Add((float)m.PhasePowerB.Value);
ListF.Add((float)m.PhasePowerC.Value);
ListF.Add((float)m.ActivePower.Value);
m.PowerFactor = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult.Content, 44)) / 1000; //总功率因数 D1122
ListF.Add((float)m.PowerFactor.Value);
ListF.Add((float)m.pt.Value);
ListF.Add((float)m.ct.Value);
for (int i = 0; i < ListF.Count; i++)
{
CommonMethods.plcDevices[0].WriteFloat(listAddre[i], ListF[i]);
}
listM.Add(m);
CommonMethods.listElectricEnergy = listM;
}
else
{
TxtHelper.WriteTxt($@"D:\APILog\Logs\智能电表信息\{DateTime.Now.ToString("yyyy-MM-dd")}.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "智能电表:读取数据失败");
}
}
else
{
TxtHelper.WriteTxt($@"D:\APILog\Logs\智能电表信息\{DateTime.Now.ToString("yyyy-MM-dd")}.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "智能电表:串口打开失败");
}
}
catch (Exception ex)
{
TxtHelper.WriteTxt($@"D:\APILog\Logs\智能电表信息\{DateTime.Now.ToString("yyyy-MM-dd")}.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + $"智能电表:{ex}");
}
finally
{
if (busRtuClient.IsOpen())
{
busRtuClient.Close();
}
}
}
}
public void GetEnergyDataFormSerialPort()
{
if (CommonMethods.plcDevices[0] != null && CommonMethods.plcDevices[0].IsConnected)
{
if (CommonMethods.EM_modbusRtus != null && CommonMethods.EM_modbusRtus.Count > 0)
{
try
{
List<ElectricEnergy> listM = new List<ElectricEnergy>();
decimal[] writPLC = new decimal[14];
for (int i = 0; i < CommonMethods.EM_modbusRtus.Count; i++)
{
ModbusRtu busRtuClient = CommonMethods.EM_modbusRtus[i];
if (!busRtuClient.IsOpen())
busRtuClient.Open();
if (busRtuClient.IsOpen())
{
// 读取数据
JYResult<byte[]> readResult = busRtuClient.Read("35", 60); // 35是十进制,实际对应0x23,22个寄存器,1个寄存器2个字节
JYResult<byte[]> readResult1 = busRtuClient.Read("3", 4);
if (readResult.IsSuccess && readResult1.IsSuccess)
{
//DPT
Byte DptH = busRtuClient.ByteTransform.TransByte(readResult.Content, 0);//高8位 实际对应0x23
Byte DptL = busRtuClient.ByteTransform.TransByte(readResult.Content, 1);//低8位
//DPQ
Byte DpqH = busRtuClient.ByteTransform.TransByte(readResult.Content, 2);//高8位 实际对应0x24
Byte DpqL = busRtuClient.ByteTransform.TransByte(readResult.Content, 3);//低8位
ElectricEnergy m = new ElectricEnergy();
Decimal q = busRtuClient.ByteTransform.TransUInt16(readResult.Content, 56);
Decimal w = busRtuClient.ByteTransform.TransUInt16(readResult.Content, 58);
m.pt = writPLC[12] = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult1.Content, 0)); //电压变比 D1124
m.ct = writPLC[13] = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult1.Content, 2)); //电流变比 D1126
Decimal Power = (q * 65536 + w) / 1000;
m.AccumulatedElectricity = writPLC[0] = Convert.ToDecimal(Power * m.pt * m.ct); //有功电能(累计电能)D1100
//电压
m.PhaseVoltageA = writPLC[1] = Convert.ToDecimal(busRtuClient.ByteTransform.TransUInt16(readResult.Content, 4) * Math.Pow(10, DptH - 4)); //A相电压 实际对应0x25
m.PhaseVoltageB = writPLC[2] = Convert.ToDecimal(busRtuClient.ByteTransform.TransUInt16(readResult.Content, 6) * Math.Pow(10, DptH - 4));//B相电压 实际对应0x26
m.PhaseVoltageC = writPLC[3] = Convert.ToDecimal(busRtuClient.ByteTransform.TransUInt16(readResult.Content, 8) * Math.Pow(10, DptH - 4));//C相电压 实际对应0x27
//电流
m.PhaseCurrentA = writPLC[4] = Convert.ToDecimal(busRtuClient.ByteTransform.TransUInt16(readResult.Content, 16) * Math.Pow(10, DptL - 4)); //电流IA 实际对应0x2B
m.PhaseCurrentB = writPLC[5] = Convert.ToDecimal(busRtuClient.ByteTransform.TransUInt16(readResult.Content, 18) * Math.Pow(10, DptL - 4)); //电流IB 实际对应0x2C
m.PhaseCurrentC = writPLC[6] = Convert.ToDecimal(busRtuClient.ByteTransform.TransUInt16(readResult.Content, 20) * Math.Pow(10, DptL - 4)); //电流IC 实际对应0x2D
//有功功率
m.PhasePowerA = writPLC[7] = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult.Content, 22) * Math.Pow(10, DpqH - 4)); //A相有功功率 实际对应0x2E
m.PhasePowerB = writPLC[8] = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult.Content, 24) * Math.Pow(10, DpqH - 4)); //B相有功功率 实际对应0x2F
m.PhasePowerC = writPLC[9] = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult.Content, 26) * Math.Pow(10, DpqH - 4)); //C相有功功率 实际对应0x30 D1118
m.ActivePower = writPLC[10] = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult.Content, 28) * Math.Pow(10, DpqH - 4)); //总有功功率 实际对应0x31 D1120
m.PowerFactor = writPLC[11] = Convert.ToDecimal(busRtuClient.ByteTransform.TransInt16(readResult.Content, 44)) / 1000; //总功率因数 实际对应0x39 D1122
listM.Add(m);
CommonMethods.listElectricEnergy = listM;
//写入PLC
CommonMethods.plcDevices[0].WriteValue($"D{(1300 + i * 28)}", Array.ConvertAll(writPLC, d => (float)d), PLC.DataType.ArrFloat);
}
else
{
TxtHelper.WriteTxt($@"D:\APILog\Logs\智能电表信息\{DateTime.Now.ToString("yyyy-MM-dd")}.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "智能电表:读取数据失败");
}
}
}
}
catch (Exception ex)
{
TxtHelper.WriteTxt($@"D:\APILog\Logs\智能电表信息\{DateTime.Now.ToString("yyyy-MM-dd")}.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + $"智能电表:{ex}");
}
}
}
}
public void GetEnergyDataFormPlc()
{
//if (CommonMethods.plcDevices.Count <= 0) { return; }
if (CommonMethods.plcDevices[0] != null && CommonMethods.plcDevices[0].IsConnected && CommonMethods.energyMeter.Connected)
{
List<ElectricEnergy> listM = new List<ElectricEnergy>();
List<float> ListF = new List<float>();
List<string> listAddre = new List<string>()
{
//"D1100","D1102","D1104","D1106","D1108","D1110","D1112","D1114","D1116","D1118","D1120","D1122","D1124","D1126"
"D1300","D1302","D1304","D1306","D1308","D1310","D1312","D1314","D1316","D1318","D1320","D1322","D1324","D1326"
};
//00 00 00 00 00 06 报文头
//01 04 00 00 00 3E 不需要校验位
byte[] bytes = new byte[12];
bytes[0] = Convert.ToByte(01 >> 8); // Slave id high byte//事务元标识符,高字节在前,低字节在后
bytes[1] = Convert.ToByte(01);// Slave id low byte
bytes[2] = 0x00;//协议标识符,高字节在前,低字节在后 (TCP 00)
bytes[3] = 0x00;
bytes[4] = 0x00;//后续字节长度,高字节在前,低字节在后
bytes[5] = 0x06; // Message size
bytes[6] = 0x01; // Slave address
bytes[7] = 0x04;//功能码04H // Function code
bytes[8] = Convert.ToByte((00 >> 8) & 0xFF); // Start address//寄存器起始地址高字节m_unBeginWord
bytes[9] = Convert.ToByte(00 & 0xFF); // Start address//寄存器起始地址低字节m_unBeginWord
bytes[10] = Convert.ToByte((0x58 >> 8) & 0xFF); // Number of data to read//寄存器数量高字节m_unWordsCount
bytes[11] = Convert.ToByte(0x58 & 0xFF); // Number of data to read//寄存器数量低字节m_unWordsCount
try
{
CommonMethods.energyMeter.SendAndGetRes(bytes, ref listM);
#region 读取×
//for (int i = 0; i < listAddre.Count; i++)
//{
// float val = CommonMethods.plcDevices[0].ReadFloat(listAddre[i]);
// ListF.Add(val);
//}
//ElectricEnergy m = new ElectricEnergy();
//m.AccumulatedElectricity = Convert.ToDecimal(ListF[0]);
//m.PhaseVoltageA = Convert.ToDecimal(ListF[1]);
//m.PhaseVoltageB = Convert.ToDecimal(ListF[2]);
//m.PhaseVoltageC = Convert.ToDecimal(ListF[3]);
//m.PhaseCurrentA = Convert.ToDecimal(ListF[4]);
//m.PhaseCurrentB = Convert.ToDecimal(ListF[5]);
//m.PhaseCurrentC = Convert.ToDecimal(ListF[6]);
//m.PhasePowerA = Convert.ToDecimal(ListF[7]);
//m.PhasePowerB = Convert.ToDecimal(ListF[8]);
//m.PhasePowerC = Convert.ToDecimal(ListF[9]);
//m.ActivePower = Convert.ToDecimal(ListF[10]);
//m.PowerFactor = Convert.ToDecimal(ListF[11]);
//m.pt = Convert.ToDecimal(ListF[12]);
//m.ct = Convert.ToDecimal(ListF[13]);
//listM.Add(m);
#endregion
foreach (ElectricEnergy energy in listM)
{
CommonMethods.plcDevices[0].WriteFloat(listAddre[0], (float)energy.AccumulatedElectricity);
CommonMethods.plcDevices[0].WriteFloat(listAddre[1], (float)energy.PhaseVoltageA);
CommonMethods.plcDevices[0].WriteFloat(listAddre[2], (float)energy.PhaseVoltageB);
CommonMethods.plcDevices[0].WriteFloat(listAddre[3], (float)energy.PhaseVoltageC);
CommonMethods.plcDevices[0].WriteFloat(listAddre[4], (float)energy.PhaseCurrentA);
CommonMethods.plcDevices[0].WriteFloat(listAddre[5], (float)energy.PhaseCurrentB);
CommonMethods.plcDevices[0].WriteFloat(listAddre[6], (float)energy.PhaseCurrentC);
CommonMethods.plcDevices[0].WriteFloat(listAddre[7], (float)energy.PhasePowerA);
CommonMethods.plcDevices[0].WriteFloat(listAddre[8], (float)energy.PhasePowerB);
CommonMethods.plcDevices[0].WriteFloat(listAddre[9], (float)energy.PhasePowerC);
CommonMethods.plcDevices[0].WriteFloat(listAddre[10], (float)energy.ActivePower);
CommonMethods.plcDevices[0].WriteFloat(listAddre[11], (float)energy.PowerFactor);
CommonMethods.plcDevices[0].WriteFloat(listAddre[12], (float)energy.pt);
CommonMethods.plcDevices[0].WriteFloat(listAddre[13], (float)energy.ct);
}
CommonMethods.listElectricEnergy = listM;
}
catch (Exception ex)
{
TxtHelper.WriteTxt($@"D:\APILog\Logs\智能电表信息\{DateTime.Now.ToString("yyyy-MM-dd")}.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + $"智能电表:{ex}");
}
}
}
/// <summary>
/// 能耗上传MES
/// </summary>
public async void UploadEquEnergy()
{
if (CommonMethods.listElectricEnergy.Count > 0)
{
if (CommonMethods.mesConfig.isUpMes)
{
string msg = string.Empty;
DateTime nowDate = DateTime.Now;
string filePath = string.Empty;
string fileName = string.Empty;
string fileTitle = string.Empty;
string fileContent = string.Empty;
List<WattrMeter> listP = new List<WattrMeter>();
int i = 0;
foreach (ElectricEnergy m in CommonMethods.listElectricEnergy)
{
WattrMeter param = new WattrMeter();
param.siteCode = CommonMethods.mesConfig.siteCode;
param.lineCode = CommonMethods.mesConfig.lineCode;
param.equipNum = CommonMethods.mesConfig.equipNum;
param.userName = CommonMethods.mesConfig.mesUserName;
param.electricMeterNum = CommonMethods.mesConfig.electricMeterNum[i];
param.recordDate = nowDate.ToString("yyyy-MM-dd HH:mm:ss");
param.accumulatedElectricity = (decimal)m.AccumulatedElectricity;
param.phaseVoltageA = (decimal)m.PhaseVoltageA;
param.phaseVoltageB = (decimal)m.PhaseVoltageB;
param.phaseVoltageC = (decimal)m.PhaseVoltageC;
param.phaseCurrentA = (decimal)m.PhaseCurrentA;
param.phaseCurrentB = (decimal)m.PhaseCurrentB;
param.phaseCurrentC = (decimal)m.PhaseCurrentC;
param.phasePowerA = (decimal)m.PhasePowerA;
param.phasePowerB = (decimal)m.PhasePowerB;
param.phasePowerC = (decimal)m.PhasePowerC;
param.activePower = (decimal)m.ActivePower;
param.powerFactor = (decimal)m.PowerFactor;
param.pt = (decimal)m.pt;
param.ct = (decimal)m.ct;
listP.Add(param);
i++;
// 写csv文件
string productName = string.Empty;
filePath = $@"{CommonMethods.strWattrMeterpath}\{nowDate.Year}\{nowDate.Month}";
fileName = $@"{nowDate.Day}.csv";
fileTitle = "工序名称,生产机台编号,拉线,型号,物料编号,操作人员,班次,电表编号,采集时间,有功电能(累计电能)KwH,A相电压 V,B相电压 V,C相电压 V,A相电流 A,B相电流 A,C相电流 A,A相功率 Kw,B相功率 Kw,C相功率 Kw,总有功功率 Kw,总功率因数 %,电压变比,电流变比";
fileContent = $"入壳A工序,{CommonMethods.mesConfig.equipNum},{CommonMethods.mesConfig.lineCode},{productName},{CommonMethods.mesConfig.MaterialCode},{CommonMethods.mesConfig.mesUserName},{CommonMethods.strClass},{param.electricMeterNum},{nowDate.ToString("yyyy-MM-dd HH:mm:ss")}," +
$"{param.accumulatedElectricity},{param.phaseVoltageA},{param.phaseVoltageB},{param.phaseVoltageC},{param.phaseCurrentA},{param.phaseCurrentB},{param.phaseCurrentC}," +
$"{param.phasePowerA},{param.phasePowerB},{param.phasePowerC},{param.activePower},{param.powerFactor},{param.pt},{param.ct}";
CSVHelper<object>.WriterCSV(filePath, fileName, fileTitle, fileContent);
}
//上传MES
var (success, mesg) = await CommonMethods.hbgMes.UploadEquEnergyAsync(CommonMethods.mesConfig.EnergyConsumption, CommonMethods.mesConfig.equipNum, CommonMethods.mesConfig.siteCode, CommonMethods.mesConfig.lineCode,
CommonMethods.mesConfig.mesUserName, CommonMethods.mesConfig.electricMeterNum, listP);
}
}
}
public static byte[] CalculateCRCTemp(ref byte[] messageArray, int dataLength)
{
byte usCRCHi = 0xFF;
byte usCRCLo = 0xFF;
byte[] returnResult = { 0x00, 0x00 };
int index = 0;
int messageIndex = 0;
while (dataLength > 0)
{
index = usCRCLo ^ messageArray[messageIndex];
usCRCLo = Convert.ToByte(usCRCHi ^ crcHi[index]);
usCRCHi = crcLo[index];
messageIndex++;
dataLength--;
}
//0th item is crcLo
returnResult[0] = usCRCLo;
//1st item is crcHi
returnResult[1] = usCRCHi;
//2nd item is the total CRC16.
//returnResult[2] = Convert.ToByte((usCRCHi << 8 | usCRCLo));
return returnResult;
}
static byte[] crcHi =
{
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,
0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,
0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,
0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,
0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,
0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
0x40
};
static byte[] crcLo =
{
0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4,
0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD,
0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7,
0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE,
0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2,
0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB,
0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91,
0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88,
0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80,
0x40
};
#endregion
#region 定期清理本地保存下料数据
/// <summary>
/// 定期清理本地保存下料数据
/// </summary>
public void DeleteFileOfLocal()
{
try
{
//string filePath = string.Format(@"{0}\Data\{1}", Application.StartupPath, DateTime.Now.AddDays(-365).Year);
string filePath = string.Format(@"{0}\{1}", @"D:\LocalData", DateTime.Now.AddYears(-1).Year);
if (Directory.Exists(filePath))
{
//判断是否有子文件夹,循环删除
for (int i = 1; i <= DateTime.Now.Month; i++)
{
string tempPath = string.Format(@"{0}\{1}", filePath, i);
if (Directory.Exists(tempPath))
{
LogCLear_DirOrFile("下料本地文件", DateTime.Now, tempPath, 365);
}
}
//没有子文件夹,删除目录
DirectoryInfo[] DirList = GetSubcatalog(filePath);//获取文件路径
if (DirList != null)//目录存在
{
if (DirList.Length == 0)
{
Directory.Delete(filePath, true);
Thread.Sleep(10);
}
}
}
}
catch (Exception ex)
{
LogHelper.Instance.WriteLog($"定期清理本地保存下料数据异常:{ex.ToString()}", "Info");
}
}
/// <summary>清理指定目录下的文件夹或文件 </summary>
/// <param name="strName">清理文件注释</param>
/// <param name="CurrentTime">当前时间</param>
/// <param name="FilePath">文件目录</param>
/// <param name="RtnDayNums">保留天数</param>
public void LogCLear_DirOrFile(string strName, DateTime CurrentTime, string FilePath, uint RtnDayNums)
{
long time = 0;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
bool b_OK = true;
LogHelper.Instance.WriteLog($"清理{strName}开始", "Info");
try
{
DirectoryInfo[] DirList = GetSubcatalog(FilePath);//获取文件路径
if (DirList != null)//目录不存在
{
if (DirList.Length != 0)//目录是否有子文件夹:如 文件夹“2021-10-31”
{
#region 删文件夹
foreach (var dirInfo in DirList)//循环删除文件夹
{
DateTime itemDateTime = dirInfo.CreationTime;//获取文件夹创建日期
if (CurrentTime.AddDays(-RtnDayNums) > itemDateTime)
{
if (dirInfo.Exists)
{
dirInfo.Delete(true);
Thread.Sleep(10);
}
}
}
#endregion
}
else//目录下无子文件夹存在时,判断是否有文件
{
string[] fileList = null;
if (Directory.Exists(FilePath))
{
//获取文件列表
fileList = Directory.GetFiles(FilePath);
if (fileList != null)//目录不存在
{
if (fileList.Length != 0)//目录下是否存在文件
{
#region 删除文件
foreach (var filePath in fileList)//循环删除文件
{
DateTime itemDateTime = new FileInfo(filePath).LastWriteTime;//获取文件修改日期
if (CurrentTime.AddDays(-RtnDayNums) > itemDateTime)
{
if (File.Exists(filePath))
{
File.Delete(filePath);
Thread.Sleep(2);
}
}
}
#endregion
}
else
{
#region 删除文件夹
Directory.Delete(FilePath, true);
#endregion
}
}
}
}
}
b_OK = true;
}
catch (Exception)
{
b_OK = false;
}
stopWatch.Stop();
time = stopWatch.ElapsedMilliseconds;
LogHelper.Instance.WriteLog($"{FilePath},清理结束,结果;{b_OK},耗时:{time}", "Info");
}
/// <summary>
/// 获取指定目录中所有文件列表
/// </summary>
/// <param name="directoryPath">指定目录的绝对路径</param>
public DirectoryInfo[] GetSubcatalog(string directoryPath)
{
DirectoryInfo dir = new DirectoryInfo(directoryPath);
//如果目录存在
if (dir.Exists)
{
//获取文件列表
DirectoryInfo[] dirs = dir.GetDirectories();
return dirs;
}
else
return null;
}
#endregion
}
}
@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{1D0FA5A4-07F0-4621-B6BB-683AEC91E658}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>JinYuan.ControlCenters</RootNamespace>
<AssemblyName>JinYuan.ControlCenters</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<LangVersion>8.0</LangVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MiniExcel, Version=1.36.1.0, Culture=neutral, PublicKeyToken=e7310002a53eac39, processorArchitecture=MSIL">
<HintPath>..\packages\MiniExcel.1.36.1\lib\net45\MiniExcel.dll</HintPath>
</Reference>
<Reference Include="PLCCommunication, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\LargeSquareOne\Lib\PLCCommunication.dll</HintPath>
</Reference>
<Reference Include="SqlSugar, Version=5.1.4.94, Culture=neutral, PublicKeyToken=null">
<HintPath>..\Libs\SqlSugar.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Diagnostics.Tracing" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ControlCenter.cs" />
<Compile Include="ControlCenter_Ext.cs" />
<Compile Include="ControlCenter_Plc.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ControlCenter_Total.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\JinYuan.DAL\JinYuan.DAL.csproj">
<Project>{114aa012-29c9-418c-a2d6-3173c5341f51}</Project>
<Name>JinYuan.DAL</Name>
</ProjectReference>
<ProjectReference Include="..\JinYuan.Helper\JinYuan.Helper.csproj">
<Project>{258D0AB7-2B4F-4D8F-A3CD-7A8CB4A85360}</Project>
<Name>JinYuan.Helper</Name>
</ProjectReference>
<ProjectReference Include="..\JinYuan.MES\JinYuan.MES.csproj">
<Project>{530B6426-08E7-461C-91DC-787F876620FC}</Project>
<Name>JinYuan.MES</Name>
</ProjectReference>
<ProjectReference Include="..\JinYuan.Models\JinYuan.Models.csproj">
<Project>{4c0bcb84-5cd7-4846-8363-c4c10d46e391}</Project>
<Name>JinYuan.Models</Name>
</ProjectReference>
<ProjectReference Include="..\JinYuan.VirtualDataLibrary\JinYuan.VirtualDataLibrary.csproj">
<Project>{2ab7e380-7795-448a-933c-0f6a081b5e7e}</Project>
<Name>JinYuan.VirtualDataLibrary</Name>
</ProjectReference>
<ProjectReference Include="..\Language\Language.csproj">
<Project>{292A5C9C-7A82-4D25-A885-DDCEDC93F03C}</Project>
<Name>Language</Name>
</ProjectReference>
<ProjectReference Include="..\PLC\PLC.csproj">
<Project>{486aecd0-c2bf-43c5-b7d7-88e565ade4b7}</Project>
<Name>PLC</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
</PropertyGroup>
</Project>
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("JinYuan.ControlCenters")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("JinYuan.ControlCenters")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("1d0fa5a4-07f0-4621-b6bb-683aec91e658")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+63
View File
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.1.0.0" newVersion="9.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Security.Cryptography.Xml" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.1" newVersion="6.0.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Google.Protobuf" publicKeyToken="a7d26565bac4d604" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.23.4.0" newVersion="3.23.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ZstdSharp" publicKeyToken="8d151af33a4ad5cf" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.7.2.0" newVersion="0.7.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Configuration.ConfigurationManager" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /></startup></configuration>
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More