设备运行报表案例实现

  • 目录
  • 概述
  • 三、Wincc 变量
  • 四、数据存储脚本
  • 5、报表制作
  • 5、报表制作
  • 六、导出EXCEL
  • 七、打印EXCEL

目录

概述

在工业生产中存在很多设备,例如机床,压机等,在实际生产过程中需要对这些设备的启停时间、耗电量以及生产产品的数量这些运行数据进行统计,作为分析企业生产运营情况的依据。

本文以WinCC V7.5 SP1为例,介绍WinCC如何实现设备运行数据统计并通过报表的形式展现统计数据,如图1所示:

可以实现如下功能:
➢ 自动记录各设备的运行数据
➢ 自动统计各设备的运行时间
➢ 按设备、日期呈现报表
➢ 按日期和设备编号以EXCEL表格保存数据
➢ 可打印存有设备运行数据的表格

本文档所使用的各软件版本如下:
➢ 操作系统版本:Windows 10
➢ WinCC 版本: SIMATIC WinCC V7.5 SP1
➢ Office版本: Microsoft Office 2019

2、创建数据库
WinCC自动存储设备运行数据到数据库,然后报表系统从数据库调取数据。
这里使用SQL数据库存储数据。因此需要首先创建SQL数据库。

关于数据库的结构和文件位置说明如下:
1、 每个设备创建一个数据表,表名称中只有编号不同,方便后面编程时定位相应设备的数据库表。
2、 所有表的结构都相同。表的结构如图2所示。
其中ID需要改为标识规范,标识增量为1

“ST_T”代表本次生产设备的启动时间,“EN_T”代表本次生产设备的停止时间。同时,报表会读取其差值作为本次生产所进行的时间。

本例中“Power_ST”和“Power_EN”分别代表设备每次启动和停止时电能表的数据,其差值就是本次生产所消耗的电能。同样“Connt_ST”和“Connt_EN”的差值代表本次所生产的产品数量。

三、Wincc 变量

本例中需要用到两种WinCC变量。一种是和设备运行数据相关的 WinCC变量,包括运行状态、电能表数据、生产数量等。另外一种是用于标识WinCC全局动作执行的WinCC变量。

设备运行相关变量以结构变量形式创建。根据需要创建结构变量的元素,本例中包括Running(运行状态)、Power(电能表数据)、Count (生产数量)三个元素,数据类型如图4所示。

为每个设备创建结构变量,各设备的变量名称中只有编号不同。 如图5所示。

运行数据写入数据是通过WinCC全局动作实现的,设备运行状态发生变化时就执行数据写入,根据设备的不同状态写入不同的数据。但是WinCC启动后默认会执行一次全局动作,这样就会造成设备状态没有发生变化,但数据被更新的情况。因此需要使用一个标识变量来避免这一问题。
为每个设备创建一个标识变量,数据类型为二进制变量。如图6所示。


这些变量的初始值设为0。在WinCC运行后,第一次执行全局动作时,置位相应的标识变量,当标识变量为1时才执行数据库写入操作。

四、数据存储脚本

各设备的运行数据是通过各自的WinCC全局动作写入数据库,WinCC全局动作由设备运行状态的变化触发脚本执行,全局动作脚本根据设备的状态写入不同的数据。

打开WinCC VBS全局脚本编辑器,在项目模块下创建项目函数
各设备的运行数据是通过各自的WinCC全局动作写入数据库,WinCC全局动作由设备运行状态的变化触发脚本执行,全局动作脚本根据设备的状态写入不同的数据。

脚本:

Function dev_record (devno)
On Error Resume Next
Dim DEV_ID: DEV_ID = devno
Dim DeviceRunning,DeviceCount,DevicePower,flag '读取WinCC变量
Set DeviceRunning = HMIRuntime.Tags("Device" & DEV_ID & ".Running") 'WinCC变量:设备运行状态
DeviceRunning.Read
Set DeviceCount = HMIRuntime.Tags("Device" & DEV_ID & ".Count") 'WinCC变量:运行数据1
DeviceCount.Read
Set DevicePower = HMIRuntime.Tags("Device" & DEV_ID & ".Power") 'WinCC变量:运行数据2
DevicePower.Read
Set flag = HMIRuntime.Tags("flag" & DEV_ID )
flag.ReadIf flag.Value = 1 Then 'WinCC启动后第一次不执行以下脚本'-------------------数据库链接--------------------’
Dim conn                     '定义类对象
Dim SCon                     '定义数据库连接字符串
Dim oRs1                       '定义获取到的数据集
Dim oCom
Dim strSQL1
Dim ID
Dim m
Dim devx: devx = "dev" & DEV_ID
'ID = HMIRuntime.Tags("ID").Read'MsgBox("devx=" & devx)
sCon= "Provider=SQLOLEDB; Integrated Security =SSPI;Persist Security Info=False; Initial Catalog=Hong ; Data Source=DESKTOP-VFDPROG"If DeviceRunning.Value =1 Then
strSQL1="INSERT INTO [dbo].["& devx &"] (dev_no,ST_T,Power_ST,Count_ST) VALUES ('"& DEV_ID  & "','"&  Now &"','"&  DevicePower.Value &"','"&  DeviceCount.Value &"')"Set conn=CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.CursorLocation = 3  conn.Open
Set oRs1 = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")oCom.CommandType = 1
Set oCom.ActiveConnection = connoCom.CommandText = strSQL1
Set oRs1 = oCom.Execute  Else'--------------------使用查询命令确定此时ID的数值---------------------------
strSQL1= "SELECT *  FROM  [dbo].["& devx &"]"
Set conn=CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.CursorLocation = 3  conn.OpenSet oRs1 = CreateObject("ADODB.Recordset")Set oCom = CreateObject("ADODB.Command")oCom.CommandType = 1Set oCom.ActiveConnection = connoCom.CommandText = strSQL1           Set oRs1 = oCom.Execute              ID = oRs1.RecordCount    'MsgBox("ID=" & ID)
'--------------------得出表格ID的值,以便确定最后一行---------------------------'数据库更新语句                '--------------------使用修改命令,来更改最后一行的结束数值---------------------------Set conn=CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.CursorLocation = 3  conn.OpenSet oRs1 = CreateObject("ADODB.Recordset")Set oCom = CreateObject("ADODB.Command")oCom.CommandType = 1        strSQL1 ="UPDATE [Hong].[dbo].["& devx &"] Set [EN_T]='" & Now & "',[Count_EN]= '" & DeviceCount.Value &"', [Power_EN] = " & DevicePower.Value& "   WHERE ([ID] = " & ID & ")"     Set oCom.ActiveConnection =connoCom.CommandText = strSQL1           Set oRs1 = oCom.Execute '--------------------修改命令结束---------------------------'MsgBox("m="& ID)
End If   Set oRs1 = Nothing
Set oCom = Nothing
conn.Close
Set conn = NothingElse
flag.Write 1
End If
End Function

各设备的运行数据是通过各自的WinCC全局动作写入数据库,WinCC全局动作由设备运行状态的变化触发脚本执行,全局动作脚本根据设备的状态写入不同的数据。

在全局动作中调用全局项目函数。分别为每个设备创建一个全局动作,如图9所示。

在全局动作中直接调用项目函数,并输入设备编号作为参数,如图10所示为设备1的全局动作。

设备运行状态发生变化时执行全局动作,在全局动作中根据设备的状态写入不同的数据。因此需要设定设备状态变量作为全局动作的触发器。如图11所示为设备1的全局动作触发器。

在工业生产中存在很多设备,例如机床,压机等,在实际生产过程中需要对这些设备的启停时间、耗电量以及生产产品的数


使能WinCC的“全局脚本运行系统”,并激活WinCC运行。

当有设备启停时,会自动在数据库中记录此设备的启停时间,本次启停时刻的运行数据,如图13所示为设备1的数据库记录结果。

5、报表制作

报表查询的实现过程是通过脚本查询数据库,把查询结果填充到excel模板并另存为htm文件,在WinCC画面中添加web控件显示htm报表文件。
创建excel模板,如图14所示:

模板文件存放在WinCC项目文件夹\report\模板下,如图15所示。

5、报表制作

报表查询的实现过程是通过脚本查询数据库,把查询结果填充到excel模板并另存为htm文件,在WinCC画面中添加web控件显示htm报表文件。

在WinCC报表查询画面上,可以按照设备编号和日期来查询报表。需要在画面中添加日期选择控件、选项组控件和web控件,如图16所示


按如下步骤添加Microsoft Date and Timer Picker Control和 Microsoft Web Browser。
第一步,在ActiveX控件上右键,选择“添加/删除”,然后在OCX控件列表中选择Microsoft Date and Timer Picker Control和 Microsoft Web Browser。如图17所示。

第二步,添加控件到画面分别拖拽Microsoft Date and Timer Picker Control和 Microsoft Web Browser控件到画面中。如图18所示。

第三步,添加组合框控件
在画面上添加组合框控件,用来选择设备。可以从智能对象下拖拽组合框控件直接添加到画面,并设置属性。步骤如图19所示。

第四步,创建生成报表的脚本
在画面中添加按钮用来生成报表并显示在Microsoft Web Browser控件中,
按钮脚本:

Sub OnClick(Byval Item)
On Error Resume Next
item.Enabled = False
'获取设备编号和报表日期
Dim dev_ID,timepicker
Dim date_select,strStartTime,strEndTime
Set dev_ID = ScreenItems("组合框1")'获取设备编号。"组合框2"为组合框名称
Set timepicker = ScreenItems("控件2")'获取报表日期。"控件2"为时间控件名称
date_select = FormatDateTime(timepicker.Value,2)
strStartTime = date_select & " 00:00:00.000"
strEndTime = date_select & " 23:59:59.999"
'MsgBox("strStartTime="&strStartTime)
'SQL
Dim conn                     '定义类对象
Dim SCon                     '定义数据库连接字符串
Dim oRs1           '定义获取到的数据集
Dim oCom
Dim m
Dim strSQL1
Dim ReportSelect
Dim devx: devx = "dev" & dev_ID.SelIndex
sCon= "Provider=SQLOLEDB.1; Integrated Security =SSPI;Persist Security Info=False; Initial Catalog=Hong ; Data Source=DESKTOP-VFDPROG"
strSQL1= "SELECT *  FROM  [dbo].["& devx &"]  Where EN_T >=' "&strStartTime&" ' and EN_T <=' "&strEndTime&" ' "
'strSQL1= "SELECT *  FROM  [dbo].[dev1]  Where EN_T >=' 2021-08-04 08:57:54.000 '"
'strSQL1= "SELECT *  FROM  [dbo].[dev1]  Where EN_T =' 2021-08-04 08:57:54.000 '"'Where EN_T > 2021-08-04 08:57:52.000'strSQL1= "SELECT *  FROM  [dbo].[dev1] Where EN_T >= #" & strStartTime & "# and EN_T <= #" & strEndTime & "# Order By EN_T ASC"
Set conn=CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.CursorLocation = 3  conn.Open
Set oRs1 = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")oCom.CommandType = 1
Set oCom.ActiveConnection = connoCom.CommandText = strSQL1
Set oRs1 = oCom.Execute              m = oRs1.RecordCount
'MsgBox("m="&m)'查询数据库
'
'Dim Conn,adors,SQL
'Set conn = CreateObject("ADODB.Connection")
'Set adors = CreateObject("ADODB.Recordset")
'Conn.ConnectionString = "Provider=microsoft.ace.oledb.12.0;" & "Data Source=" & HMIRuntime.ActiveProject.Path & "\report\dev_data.accdb"
'Conn.Open
''dev_ID.SelIndex:设备编号,时间范围:strStartTime~strEndTime
'SQL = "select * from dev" & dev_ID.SelIndex & " Where EN_T >= #" & strStartTime & "# and EN_T <= #" & strEndTime & "# Order By EN_T ASC"
'adors.Open SQL,Conn,1,3'查询结果写到excel
Dim xlApp,xlBook,xlSheet
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open( HMIRuntime.ActiveProject.Path & "\report\模板\日报表模板1.xlsx")
Set xlSheet = xlBook.Worksheets("Sheet1")
xlSheet.Cells(1, 1) = dev_ID.SelIndex & "号设备日报表" '报表标题
xlSheet.Cells(2, 1) = "报表日期:" & date_select
adors.MoveFirst
Dim i,total_EN,total_Power,total_Count
For i = 1 To oRs1.RecordCount
xlSheet.Cells(i + 3, 1) = i
xlSheet.Cells(i + 3, 2) = FormatDateTime(oRs1.Fields(2).Value, 4) '启动时间
xlSheet.Cells(i + 3, 3) = FormatDateTime(oRs1.Fields(3).Value, 4) '停止时间
xlSheet.Cells(i + 3, 4) = DateDiff("n", oRs1.Fields(2).Value, oRs1.Fields(3).Value) '运行时长
xlSheet.Cells(i + 3, 5) =oRs1.Fields(7).Value - oRs1.Fields(6).Value '运行数据1
xlSheet.Cells(i + 3, 6) =oRs1.Fields(5).Value - oRs1.Fields(4).Value '运行数据2
xlSheet.Cells(i + 4, 1) = "总计"
total_EN = total_EN + xlSheet.Cells(i + 3, 4).Value
total_Power = total_Power + xlSheet.Cells(i + 3, 5).Value
total_Count = total_Count + xlSheet.Cells(i + 3, 6).Value
xlSheet.Cells(i + 4, 4) = total_EN
xlSheet.Cells(i + 4, 5) = total_Power
xlSheet.Cells(i + 4, 6) = total_Count
oRs1.MoveNext
Next
'MsgBox("total:="&total)xlBook.SaveAs HMIRuntime.ActiveProject.Path & "\report\日报表\web\日报表.htm",44
xlBook.Close
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
Set oRs1 = Nothing
Set oCom = Nothing
conn.Close
Set conn = Nothing'报表显示
Dim wbCtrl
Set wbCtrl = ScreenItems("控件1") '"控件1"为Web控件名称
wbCtrl.Navigate HMIRuntime.ActiveProject.Path & "\report\日报表\web\日报表.htm"
item.Enabled=True
End Sub

5.3 运行结果.

激活WinCC运行系统,分别选择要查看报表的设备名称和日期,如图22所示


然后点击“生成报表”按钮,WinCC从数据库读取设定日期的相应设备的数据,显示在WinCC画面中。如图23所示。

六、导出EXCEL

脚本代码:

Sub OnClick(Byval Item)
On Error Resume Next
'获取设备编号和报表日期
Dim dev_ID,timepicker
Dim date_select,strStartTime,strEndTime
Set dev_ID = ScreenItems("组合框1")'获取设备编号。"组合框2"为组合框名称
Set timepicker = ScreenItems("控件2")'获取报表日期。"控件2"为时间控件名称
date_select = FormatDateTime(timepicker.Value,2)
strStartTime = date_select & " 00:00:00.000"
strEndTime = date_select & " 23:59:59.999"
'MsgBox("strStartTime="&strStartTime)
'SQL
Dim conn                     '定义类对象
Dim SCon                     '定义数据库连接字符串
Dim oRs1           '定义获取到的数据集
Dim oCom
Dim m
Dim strSQL1
Dim ReportSelect
Dim devx: devx = "dev" & dev_ID.SelIndexsCon= "Provider=SQLOLEDB.1; Integrated Security =SSPI;Persist Security Info=False; Initial Catalog=Hong ; Data Source=DESKTOP-VFDPROG"
strSQL1= "SELECT *  FROM  [dbo].["& devx &"]  Where EN_T >=' "&strStartTime&" ' and EN_T <=' "&strEndTime&" ' "
Set conn=CreateObject("ADODB.Connection")conn.ConnectionString = sConconn.CursorLocation = 3  conn.Open
Set oRs1 = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")oCom.CommandType = 1
Set oCom.ActiveConnection = connoCom.CommandText = strSQL1
Set oRs1 = oCom.Execute              m = oRs1.RecordCount
MsgBox("m="&m)'查询结果写到excel
Dim xlApp,xlBook,xlSheet
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open( HMIRuntime.ActiveProject.Path & "\report\模板\日报表模板1.xlsx")
Set xlSheet = xlBook.Worksheets("Sheet1")
xlSheet.Cells(1, 1) = dev_ID.SelIndex & "号设备日报表" '报表标题
xlSheet.Cells(2, 1) = "报表日期:" & date_select
adors.MoveFirst
Dim i,total_EN,total_Power,total_Count
For i = 1 To oRs1.RecordCount
xlSheet.Cells(i + 3, 1) = i
xlSheet.Cells(i + 3, 2) = FormatDateTime(oRs1.Fields(2).Value, 4) '启动时间
xlSheet.Cells(i + 3, 3) = FormatDateTime(oRs1.Fields(3).Value, 4) '停止时间
xlSheet.Cells(i + 3, 4) = DateDiff("n", oRs1.Fields(2).Value, oRs1.Fields(3).Value) '运行时长
xlSheet.Cells(i + 3, 5) =oRs1.Fields(7).Value - oRs1.Fields(6).Value '运行数据1
xlSheet.Cells(i + 3, 6) =oRs1.Fields(5).Value - oRs1.Fields(4).Value '运行数据2
xlSheet.Cells(i + 4, 1) = "总计"
total_EN = total_EN + xlSheet.Cells(i + 3, 4).Value
total_Power = total_Power + xlSheet.Cells(i + 3, 5).Value
total_Count = total_Count + xlSheet.Cells(i + 3, 6).Value
xlSheet.Cells(i + 4, 4) = total_EN
xlSheet.Cells(i + 4, 5) = total_Power
xlSheet.Cells(i + 4, 6) = total_Count
oRs1.MoveNext
Next
'MsgBox("total:="&total)
'MsgBox("devx="&devx)Dim patch,filenamefilename=CStr(Year(Now))&"_"&CStr(Month(Now))&"_"&CStr(Day(Now))&"_"&CStr(Hour(Now))&"_"&CStr(Minute(Now))&"_"&CStr(Second(Now))&"_"& dev_ID.SelIndex &"_号设备日报表"patch= HMIRuntime.ActiveProject.Path & "\report\日报表\"&filename&".xlsx" xlApp.ActiveWorkbook.SaveAs patchxlBook.SaveAs HMIRuntime.ActiveProject.Path & "\report\日报表\打印报表.xlsx"xlApp.Workbooks.ClosexlApp.Quit'patch= HMIRuntime.ActiveProject.Path & "\report\日报表\"&filename&".xlsx"
' xlApp.ActiveWorkbook.SaveAs patch
' xlApp.Workbooks.Close
' xlApp.QuitMsgBox "成功生成数据文件!"Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
Set oRs1 = Nothing
Set oCom = Nothing
conn.Close
Set conn = NothingEnd Sub

七、打印EXCEL

脚本:

Sub OnClick(Byval Item)                                                                                                Dim objExcelApp
Dim FileName
FileName=HMIRuntime.ActiveProject.Path & "\report\日报表\打印报表.xlsx"                                                ''报表路径
Set objExcelApp=CreateObject("Excel.Application")
objExcelApp.Visible=False
objExcelApp.Workbooks.Open FileName
objExcelApp.ActiveWorkbook.PrintOut()
objExcelApp.Workbooks.Close()
objExcelApp.Quit()
End Sub

Wincc报表案例_设备运行报表相关推荐

  1. java web 润乾报表教程_润乾报表 dashboard 分析

    在<润乾报表多维分析功能漫游>一文中我们已经见识了润乾报表分析控件的妙处:可视化的拖拽模式,灵活的计算方式,脱离敲打复杂多变的查询语句,只需要动动鼠标就可以获取所需要的数据.除了多维分析外 ...

  2. 合并报表软件系统_财务合并报表的基础工作

    1.完整的企业会计制度,并颁布实施 如果是上市公司,那么该备案就备案,该公告就公告.一般公司会有个财务总监手册,包括收入确认,成本计算方法,会计估计方法,减值计提依据,预算制度等等. 2.在整个集团建 ...

  3. 帆软报表在已经搭载服务器上开发_报表案例_数据报表开发_做报表的步骤_报表开发流程-帆软...

    都说数据人很苦,可业务人也苦.不得已,我投诉了数据团队. 案例1:做一张报表,换了5个BI 背景:A负责的业务,以前业务指标单独计算.考核,不纳入公司整体业务. 后来业务体量大到足以影响公司大盘业务量 ...

  4. java web 润乾报表教程_润乾报表开发 基础教程.ppt

    润乾报表开发 --基础教程 主格和附属格 单元格进行扩展的过程中,缺省情况下,相对于其右(下)边的单元格而言,扩展格是主动复制的,被称为其它格(其右/下的格)的主格,而其右(下)的单元格是被动跟随复制 ...

  5. java前端显示统计报表数据_强大的报表前端展现功能

    灵活的查询交互 报表为用户提供了通用的查询面板用于各种条件过滤,在报表展现界面,用户设定各查询条件的值后点击查询按钮,报表数据便将根据输入的条件值动态查询出相应的结果. 形象的图表结合 报表以形象美观 ...

  6. 帆软报表列表_帆软报表(finereport)读取数据库表数据生成报表

    帆软报表(finereport)读取数据库表数据生成报表 发布时间:2019-01-14 16:48, 浏览次数:856 , 标签: finereport 1.首先是安装帆软报表软件,微软的傻瓜式安装 ...

  7. mysql web 报表工具_.net的web报表设计工具

    e表介绍 e表是一个功能强大的Web报表工具,提供了高效的报表设计方案.强大的Web报表展现能力.灵活的部署机制.使用e表可使复杂报表的设计简单化,以往难以实现的报表可以轻松实现,避免了大量的复杂SQ ...

  8. iHRM 人力资源管理系统_第9章_文件上传与PDF报表入门_第二节_PDF报表入门

    iHRM 人力资源管理系统_第9章_文件上传与PDF报表入门_第二节_PDF报表入门 文章目录 iHRM 人力资源管理系统_第9章_文件上传与PDF报表入门_第二节_PDF报表入门 PDF报表入门 3 ...

  9. 【葡萄城报表案例分享】项目施工进度报告 – 树形报表

    [葡萄城报表案例分享]项目施工进度报告 – 树形报表 树形分组(也称逐级展开或钻取)是统计报表中常见的一种功能和样式,常利用树形报表实现维度钻取功能,逐级查看更细粒度的指标数据,那么如何根据维度层次和 ...

  10. 多级报表 php,电力设备生产数据的多层分组统计报表实现

    [导读]欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~多层分组统计报表即按照不同的数据字段,形成多级分组,并分层级进行合计. 多层分组统计报表即按照不同的数据字段,形成多级分组 ...

最新文章

  1. mysql_rollback_MySQL的rollback--事务回滚
  2. 添加别名_ssh别名免密登陆服务器
  3. Python中的多线程
  4. 前端学习(1937)vue之电商管理系统电商系统之渲染分配角色的对话框并请求数据
  5. bzoj1974 [Sdoi2010]代码拍卖会 循环+背包
  6. mysql pdo prepare_php pdo prepare真的安全吗
  7. PCL——4.深度图像
  8. 08python 主函数调用子函数
  9. OSWorkflow(转载)
  10. 短信验证码和语音验证码
  11. 笔记本无法使用计算机,电脑Win快捷键失灵不能用的两种处理方法
  12. 计算机专业13,13级计算机专业的,信自院计算机专业方面的调剂可以问我
  13. 经典回顾:福禄克FLUKE DTX-1800如何配合DTX-LABA测试6A,7类跳线patchcord
  14. mongoDB的学习
  15. TCP/IP入门详解--业内最佳
  16. Android中添加万普广告墙、推送广告等
  17. 独立版:零点城市社交电商V2.1.9.8 新增多宝鱼第三方商品插件
  18. 搜索引擎排名不等于网站的优化
  19. NXP(Freescale) QorIQ T2080 SRIO FRA程序分析
  20. Simulink永磁同步电机控制仿真:单电阻采样时序及具体实现

热门文章

  1. 关于C++版本的海图渲染引擎MyS57Map
  2. unity2D:视觉差Parallex
  3. outlook分组邮件提醒
  4. 支付宝对账数据下载及解析
  5. 【Python】随机森林算法——东北大学大数据班数据挖掘实训四
  6. c语言switch求利息,switch语句 利息计算器
  7. 贾立平太讨厌_《最强大脑》水哥微博致歉三遍对不起 网友:节目太虚假,真的追不下去了...
  8. stc单片机c语言程序头文件(stc12c5a60s2.h,stc12c5a60s2头文件在keil中没法用?
  9. 接口调用一会正常,一会失败
  10. POJ 2774 Long Long Message