<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>评分卡管理</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="css/common.css" />
<script type="text/javascript" src="js/jquery-easyui-1.2.6/jquery-1.7.2.min.js"></script>
<link rel="stylesheet" type="text/css" href="js/jquery-easyui-1.2.6/themes/default/easyui.css" />
<link rel="stylesheet" type="text/css" href="js/jquery-easyui-1.2.6/themes/icon.css" />
<script type="text/javascript" src="js/jquery-easyui-1.2.6/jquery.easyui.min.js"></script>
<script type="text/javascript" src="js/jquery-easyui-1.2.6/locale/easyui-lang-zh_CN.js"></script>
<!-- <script type="text/javascript" src="js/commons.js"></script> -->
<style type="text/css">
#issueAnaForm{
margin:0;
padding:10px 20px;
}
.ftitle{
font-size:14px;
font-weight:bold;
padding:5px 0;
margin-bottom:10px;
border-bottom:1px solid #ccc;
}
.fitem{
margin-bottom:5px;
}
.fitem label{
display:inline-block;
width:80px;
}
.fitem input{
width:160px;
}
/* .datagrid-td-rownumber{
display:none;
} */
</style>
<script type="text/javascript">
$(function(){
$('#estimateCard').datagrid({
/* idField:'id' , */
title:'评分卡管理' ,//没有内容,就会少一个div的标题内容
//width:1300 ,
fit:true ,
height:420 ,
singleSelect:false,
url:'<%=request.getContextPath()%>/EstimateCard.do?method=estimateCardInitAndQuery' ,
fitColumns:true ,
rownumbers:false,//显示序号,默认是true
selectOnCheck: true,
checkOnSelect: true,
striped: true ,//隔行变色特性
//nowrap: false ,//折行显示
loadMsg: '数据正在加载,请耐心的等待...' ,
//rownumbers:true ,
rowStyler: function(index ,record){
} ,
frozenColumns:[[//冻结列特性 ,不要与fitColumns 特性一起使用
{
field:'ck' ,
width:30 ,
checkbox: true
}
]],
columns:[[
{
field:'FOLDER_ID' ,//FOLDER_ID
title:'评分卡ID' ,
width:40,
hidden: true
},{
field:'FOLDER_NAME' ,
title:'评分卡名称' ,
width:100,
hiddden:false
},{
field:'FOLDER_DESC' ,
title:'评分卡描述' ,
width:200 ,
hidden: false
},{
field:'STATUS' ,
title:'状态' ,
formatter:function(value , record , index){
if(value == '1'){
return '<span>启用</span>';
} else if( value == '0'){
return '<span>禁用</span>';
} else if( value == '2'){
return '<span>新建</span>';
} else {
return '<span>其它</span>';
}
},
width:30,
hidden:false
},{
field:'FREQUENCY' ,
title:'检查频度' ,
width:40,
hidden:false,
formatter:function(value , record , index){
if(value == '01'){
return '<span>日</span>';
} else if( value == '02'){
return '<span>周</span>';
} else if( value == '03'){
return '<span>月</span>';
} else if( value == '04'){
return '<span>季</span>';
} else if( value == '05'){
return '<span>半年</span>';
} else if( value == '06'){
return '<span>年</span>';
} else {
return '<span>其它</span>';
}
}
},{
field:'WEIGHT' ,
title:'权重' ,
width:50 ,
hidden: true
},{
field:'CREATE_OPER' ,
title:'创建人' ,
width:70 ,
hidden: false
},{
field:'START_DT' ,
title:'开始日期' ,
width:100 ,
hidden: false
},{
field:'END_DT' ,
title:'结束日期时间' ,
width:100 ,
hidden: true
}
]] ,
toolbar:[
{
text:'新增',iconCls:'icon-edit',handler:estimateCardAdd
},{
text:'删除',iconCls:'icon-cancel',handler:estimateCardDelete
},{
text:'修改',iconCls:'icon-edit',handler:estimateCardEdit
},{
text:'启用',iconCls:'icon-ok',handler:estimateCardStart
},{
text:'禁用',iconCls:'icon-no',handler:estimateCardStop
},{
text:'查看',iconCls:'icon-search',handler:estimateCardDetail
},{
text:'权重查看',iconCls:'icon-edit',handler:weigthSet
}
],
pagination: true ,
pageSize: 10 ,
pageList:[10,15,20,50]
});//table data init block
$('#searchbtn').click(function(){
$('#estimateCard').datagrid('reload',serializeForm($('#mysearch')));
});
$('#freqFlagId').combobox({
data:[
{"id":'01' ,"name":'日'},
{"id":'02' ,"name":'周'},
{"id":'03' ,"name":'月'},
{"id":'04' ,"name":'季'},
{"id":'05' ,"name":'半年'},
{"id":'06' ,"name":'年'}
],
idField:'id', // ID字段
textField:'name', // 显示的字段
fitColumns: true,
striped: true,
editable:false// 不可编辑,只能选择
});
$('#freqEditId').combobox({
data:[
{"id":'01' ,"name":'日'},
{"id":'02' ,"name":'周'},
{"id":'03' ,"name":'月'},
{"id":'04' ,"name":'季'},
{"id":'05' ,"name":'半年'},
{"id":'06' ,"name":'年'}
],
idField:'id', // ID字段
textField:'name', // 显示的字段
fitColumns: true,
striped: true,
editable:false// 不可编辑,只能选择
});
});//jquery init block
function weigthSet(){
var rows = $("#estimateCard").datagrid("getSelections");
if (rows==null || rows==""){
$.messager.alert("提 示","请选择需要的记录!","icon-cancel");
return false;
}
if(rows.length>1){
$.messager.alert("提 示","只能设置单条评分卡的权重!","icon-cancel");
return false;
}
var row = $("#estimateCard").datagrid("getSelected");
var timeD = new Date();
var cardId = row.FOLDER_ID;
var cardName = row.FOLDER_NAME;
var ESTIMATE_CARD_INFO = "&cardId="+cardId+"&cardName="+cardName;
//window.showModalDialog("<%=request.getContextPath()%>/jsp/estiscore/card_weight_set.jsp?time="+timeD+ESTIMATE_CARD_INFO,window,"dialogHeight=600px;dialogWidth=1200px;scroll:yes");
window.open("<%=request.getContextPath()%>/jsp/estiscore/card_weight_set.jsp?time="+timeD+ESTIMATE_CARD_INFO,"","");
}
// 表单字段信息的收集
function serializeForm(form){
var obj = {};
$.each(form.serializeArray(),function(index){
// 下面的this是一个表单域的对象
if(obj[this['name']]){
obj[this['name']] = obj[this['name']] + ','+this['value'];
} else {
obj[this['name']] =this['value'];
}
});
return obj;
}
//评分卡详细查看
function estimateCardDetail(){
$("#estimateCardFormCheck").form("clear");
var rows = $("#estimateCard").datagrid("getSelections");
if (rows==null || rows==""){
$.messager.alert("提 示","请选择需要查看的记录!","icon-cancel");
return false;
}
if(rows.length>1){
$.messager.alert("提 示","只能查看单条评分卡记录!","icon-cancel");
return false;
}
var row = $("#estimateCard").datagrid("getSelected");
if (row){
$("#estimateCard_check").dialog("open").dialog("setTitle","评分卡查看");
$("#estimateCardFormCheck").form('load',row);
//频度字段和状态字段显示
//评分卡查看时下拉框
$('#FREQUENCY').combobox({
data:[
{"id":'01' ,"name":'日'},
{"id":'02' ,"name":'周'},
{"id":'03' ,"name":'月'},
{"id":'04' ,"name":'季'},
{"id":'05' ,"name":'半年'},
{"id":'06' ,"name":'年'}
],
idField:'id', // ID字段
textField:'name', // 显示的字段
fitColumns: true,
striped: true,
editable:false// 不可编辑,只能选择
});
//状态
$('#STATUS').combobox({
data:[
{"id":'1' ,"name":'启用'},
{"id":'2' ,"name":'新建'},
{"id":'3' ,"name":'历史'},
{"id":'0' ,"name":'禁用'}
],
idField:'id', // ID字段
textField:'name', // 显示的字段
fitColumns: true,
striped: true,
editable:false// 不可编辑,只能选择
});
$("#STATUS").combobox("setValue",row.STATUS);
$("#FREQUENCY").combobox("setValue",row.FREQUENCY);
}
}
//评分卡新增
function estimateCardAdd(){
$("#estimateCard_add").dialog("open").dialog("setTitle","评分卡新增");
$("#estimateCard_addForm").form("clear");
$('#freqFlagId').combobox('setValue','03');
}
function estimateCardAddSave(oper){
$("#estimateCard_addForm").form('submit',{
url: '<%=request.getContextPath()%>/EstimateCard.do?method=estimateCardAdd&operFlag='+oper,
onSubmit: function(){
//表单提交之前进行校验
return $(this).form('validate');
},
success: function(result){
//转换成JSON大对象
var result = eval('('+result+')');
$.messager.alert("提示",result.resultInfo,"icon-ok");
$("#estimateCard_add").dialog('close'); // close the dialog
$("#estimateCard").datagrid('reload'); // reload the user data
//重新加载左边的树
self.parent.frames["treeLeft"].reloadTree('');
}
});
}
//评分卡修改
function estimateCardEdit(oper){
var estimateCardNos = [];
var rows = $("#estimateCard").datagrid("getSelections");
if (rows==null || rows==""){
$.messager.alert("提 示","请选择需要修改的记录!","icon-cancel");
return false;
}
if(rows.length>1){
$.messager.alert("提 示","只能修改单条评分卡记录!","icon-cancel");
return false;
}
var row = $("#estimateCard").datagrid("getSelected");
if (row.STATUS==0){
$.messager.alert("提 示","只能修改新建和启用状态的评分卡记录!","icon-cancel");
return false;
}else{
$("#estimateCardEdit").dialog("open").dialog("setTitle","评分卡修改");
$("#estimateCardEditForm").form("load",{
FOLDER_ID :row.FOLDER_ID,
FOLDER_NAME : row.FOLDER_NAME,
FOLDER_DESC :row.FOLDER_DESC,
status :row.STATUS,
FREQUENCY : row.FREQUENCY
});
//$("#freqEditId").combobox("setValue","03");
}
}
//评分卡修改
function estimateCardModifySave(oper){
$("#estimateCardEditForm").form('submit',{
url: '<%=request.getContextPath()%>/EstimateCard.do?method=estimateCardModify&operFlag='+oper,
onSubmit: function(param){
//除了表单的元素,再提交自定义的参数
return true;
},
success: function(result){
var result = eval('('+result+')');
if (result.resultFlag=="fail"){
$.messager.alert("错误提示",result.resultInfo,"icon-ok");
} else {
$.messager.alert("成功提示",result.resultInfo,"icon-ok");
$("#estimateCardEdit").dialog("close");
$("#estimateCard").datagrid("reload");
//重新加载左边的树
self.parent.frames["treeLeft"].reloadTree('');
}
}
});
}
//删除评分卡
function estimateCardDelete(){
var estimateCardNos = [];
var rows = $("#estimateCard").datagrid("getSelections");
if (rows==null || rows==""){
$.messager.alert("提 示","请选择需要删除的记录!","icon-cancel");
return false;
}
var ids = '';
var continueFlag = true;
for(var i=0;i<rows.length;i++){
estimateCardNos.push(rows[i].FOLDER_ID);
ids += rows[i].MAP_ID + ',';
if(rows[i].STATUS==1){
continueFlag = false;
$.messager.alert('提示信息!','只能删除新建或已禁用的评分卡,请重新选择!','warning');
break;
}
}
if (continueFlag){
$.messager.confirm("确认","确定删除所选择的记录吗?",function(r){
if (r){
//这里传入json参数格式为{issueNoParams:issueNos.join(",")},issuesNos是数组,一定要拼接成字符串
$.post('<%=request.getContextPath()%>/EstimateCard.do?method=estimateCardDelete',{estimateCardNoParams:estimateCardNos.join(",")},
function(result){
$.messager.alert("提示",result.resultInfo,"icon-ok");
$("#estimateCard").datagrid("reload");
//重新加载左边的树
self.parent.frames["treeLeft"].reloadTree('');
},'json');
}
});
}
}
//启用评分卡
function estimateCardStart(){
var estimateCardNos = [];
var rows = $("#estimateCard").datagrid("getSelections");
if (rows==null || rows==""){
$.messager.alert("提 示","请选择需要启用的记录!","icon-cancel");
return false;
}
var ids = '';
var continueFlag = true;
for(var i=0;i<rows.length;i++){
estimateCardNos.push(rows[i].FOLDER_ID);
ids += rows[i].MAP_ID + ',';
if(rows[i].STATUS==1){
continueFlag = false;
$.messager.alert('提示信息!','只能启用新建或禁用的评分卡,请重新选择!','warning');
break;
}
}
if (continueFlag){
$.messager.confirm("确认","确定启用所选择的记录吗?",function(r){
if (r){
//这里传入json参数格式为{issueNoParams:issueNos.join(",")},issuesNos是数组,一定要拼接成字符串
$.post('<%=request.getContextPath()%>/EstimateCard.do?method=estimateCardStart',{estimateCardNoParams:estimateCardNos.join(",")},
function(result){
$.messager.alert("提示",result.resultInfo,"icon-ok");
$("#estimateCard").datagrid("reload");
//重新加载左边的树
self.parent.frames["treeLeft"].reloadTree('');
},'json');
}
});
}
}
//禁用评分卡
function estimateCardStop(){
var estimateCardNos = [];
var rows = $("#estimateCard").datagrid("getSelections");
if (rows==null || rows==""){
$.messager.alert("提 示","请选择需要禁用的记录!","icon-cancel");
return false;
}
var ids = '';
var continueFlag = true;
for(var i=0;i<rows.length;i++){
estimateCardNos.push(rows[i].FOLDER_ID);
ids += rows[i].MAP_ID + ',';
if(rows[i].STATUS!=1){
continueFlag = false;
$.messager.alert('提示信息!','只能禁用已启用的规则组,请重新选择!','warning');
break;
}
}
if (continueFlag){
$.messager.confirm("确认","确定禁用所选择的记录吗?",function(r){
if (r){
//这里传入json参数格式为{issueNoParams:issueNos.join(",")},issuesNos是数组,一定要拼接成字符串
$.post('<%=request.getContextPath()%>/EstimateCard.do?method=estimateCardStop',{estimateCardNoParams:estimateCardNos.join(",")},
function(result){
$.messager.alert("提示",result.resultInfo,"icon-ok");
$("#estimateCard").datagrid("reload");
//重新加载左边的树
self.parent.frames["treeLeft"].reloadTree('');
},'json');
}
});
}
}
</script>
</head>
<body>
<div id="lay" class="easyui-layout" style="width: 100%;height:100%" >
<div region="north" title="条件过滤" collapsed=false style="height:60px;padding-top:5px" >
<form id="mysearch" method="post">
<input name="searchFlag" type="hidden" value="1" />
评分卡名称:<input name=FOLDER_NAME class="easyui-validatebox" style="width:100px" value="" /> 
<a id="searchbtn" class="easyui-linkbutton" style="margin-left:20px">查询</a>
</form>
</div>
<div region="center" >
<table id="estimateCard"></table>
</div>
</div>
<!--新增评分卡 -->
<div id="estimateCard_add" class="easyui-dialog" style="width:400px;height:200px;padding:10px 20px"
closed="true" buttons="#estimateCard_add_buttons">
<div class="ftitle"></div>
<form id="estimateCard_addForm" method="post">
<input name="ESTIMATE_CARD_ID" class="" type="hidden" value="">
<div class="fitem">
<label>评分卡名称:</label><input name="FOLDER_NAME" class="easyui-validatebox" required="true">
</div>
<div class="fitem">
<label>评分卡描述:</label><input name="FOLDER_DESC" class="easyui-validatebox" >
</div>
<div class="fitem">
<label>检查频度:</label><input id="freqFlagId" name="FREQUENCYADD" class="easyui-combobox" valueField="id" textField="name" value="">
</div>
</form>
</div>
<!--修改评分卡信息 -->
<div id="estimateCardEdit" class="easyui-dialog" style="width:350px;height:240px;padding:10px 20px"
closed="true" buttons="#estimateCard_Edit_buttons">
<div class="ftitle"></div>
<form id="estimateCardEditForm" method="post">
<input name="FOLDER_ID" class="" type="hidden" value="">
<input name="status" class="" type="hidden" value="">
<div class="fitem">
<!-- <label>评分卡ID:</label><input name="ESTIMATE_CARD_ID" class="easyui-textbox" readonly> -->
<label>评分卡名称:</label><input name="FOLDER_NAME" class="easyui-textbox" >
</div>
<div class="fitem">
<label>评分卡描述:</label><input name="FOLDER_DESC" class="easyui-textbox" >
</div>
<div class="fitem">
<label>检查频度:</label><input id="freqEditId" name="FREQUENCY" class="easyui-combobox" valueField="id" textField="name" value="">
</div>
</form>
</div>
<!-- 评分卡的查看,所有的属性都是readonly的 -->
<div id="estimateCard_check" class="easyui-dialog" style="width:600px;height:180px;padding:10px 20px"
closed="true" buttons="#estimateCard_check_buttons">
<div class="ftitle"><!-- title信息,根据增加和修改按钮动态变化 --></div>
<form id="estimateCardFormCheck" method="post">
<div class="fitem">
<!-- <label>评分卡ID:</label><input name="ESTIMATE_CARD_ID" readonly class="easyui-textbox" readonly> -->
<label>评分卡名称:</label><input name="FOLDER_NAME" class="easyui-textbox" readonly>
<label>评分卡描述:</label><input name="FOLDER_DESC" class="easyui-textbox" readonly>
</div>
<div class="fitem">
<label>创建人:</label><input name="CREATE_OPER" readonly class="easyui-textbox" readonly>
<label>创建时间:</label><input name="START_DT" readonly class="easyui-textbox" readonly>
</div>
<div class="fitem">
<label>状态:</label><input id = "STATUS" name="STATUS" readonly class="easyui-combobox" valueField="id" textField="name" value="">
<label>检查频度:</label><input id="FREQUENCY" name="FREQUENCY" readonly class="easyui-combobox" valueField="id" textField="name" value="">
</div>
</form>
</div>
<div id="issue_sql" class="easyui-dialog" style="width:500px;height:300px;padding:10px 20px"
closed="true" buttons="">
<div class="ftitle"></div>
</div>
<!-- 评分卡增加的按钮 -->
<div id="estimateCard_add_buttons" style="text-align:center">
<!-- a的style不能加入width,否则出现按钮有空隙的评分卡 -->
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="estimateCardAddSave('submit')" style="">提 交</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-undo" onclick="javascript:$('#estimateCard_add').dialog('close')" style="">关 闭</a>
</div>
<!-- 评分卡修改的按钮 -->
<div id="estimateCard_Edit_buttons" style="text-align:center">
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="estimateCardModifySave('submit')" style="">提 交</a>
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-undo" onclick="javascript:$('#estimateCardEdit').dialog('close')" style="">关 闭</a>
</div>
<!-- 删除评分卡 -->
<div id="estimateCard_check_buttons" style="text-align:center">
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-undo" onclick="javascript:$('#estimateCard_check').dialog('close')" style="">关 闭</a>
</div>
</body>
</html>
相关推荐
内容概要:本文详细介绍了雅马哈机械手在锁螺丝过程中与视觉系统的协同工作流程,重点讲解了Socket通信的实现方法、坐标转换的具体步骤以及动态路径规划的技术细节。首先,文章展示了如何通过TCP/IP协议建立机械手与相机之间的稳定通信,确保数据传输的可靠性和实时性。接着,深入探讨了从像素坐标到机械臂笛卡尔坐标的转换过程,强调了标定矩阵的重要性和正确处理字节序的问题。此外,还讨论了托盘动态路径规划的实现,如螺旋式搜索算法的应用及其带来的效率提升。最后,文章分享了一些实际应用中的经验和教训,如处理粘包问题、网络延迟、异常处理机制等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对机械手与视觉系统集成感兴趣的读者。 使用场景及目标:适用于需要深入了解机械手与视觉系统协作机制的场合,帮助工程师更好地理解和优化工业生产线上的自动化设备。目标是提高生产效率和产品质量,减少因技术问题导致的生产停滞。 其他说明:文中提供了多个代码示例,涵盖Python、C++和C#等多种编程语言,便于不同背景的读者参考和实践。同时,作者结合自身经验,给出了许多实用的调试技巧和注意事项,有助于读者规避常见错误并快速解决问题。
内容概要:本文详细介绍了如何利用LabVIEW与西门子S7-200 PLC通过PPI协议进行通讯的方法和技术要点。主要内容涵盖硬件准备、通讯参数配置、PPI协议命令格式、命令发送与接收、数据解析以及常见问题的调试方法。文中强调了硬件选择、波特率设置、命令帧结构、CRC校验、超时处理等方面的具体操作步骤,并提供了多个实用技巧,如地址扫描、批量读取优化、字节序处理等。 适合人群:从事工业自动化系统集成、LabVIEW编程、PLC通讯开发的技术人员。 使用场景及目标:适用于需要将LabVIEW与西门子S7-200 PLC进行通讯的工程项目,帮助技术人员快速掌握PPI协议的应用,提高通讯稳定性和效率。 其他说明:文章不仅提供了详细的理论指导,还分享了许多实践经验,有助于解决实际应用中的各类问题。
计算机二级考试资源合集:高效备考,轻松通关! 本合集涵盖计算机二级考试核心内容,包括软件/硬件知识、编程、数据库、网络技术等,提供理论资料与实战资源(如PHP示例、网页文件、配置数据等),助你系统复习、强化实操。适合考生快速提升技能,顺利通过考试!
内容概要:本文档提供了基于STM32的宠物饮水机的C++源代码,实现了循环过滤和保持水质清洁的功能。代码包括硬件初始化、水位检测、温度监测、紫外线杀菌以及OLED显示等功能模块。通过水位传感器检测水位并控制水泵启停,使用DS18B20温度传感器监测水温并在OLED屏幕上显示,每小时自动启动紫外线灯进行杀菌5分钟。此外,详细解释了水位传感器的工作原理及其在代码中的实现,重点介绍了浮球式传感器的结构和工作过程。 适合人群:对嵌入式系统开发有一定了解,特别是熟悉STM32平台和C++编程的工程师或爱好者。 使用场景及目标:①学习STM32平台下的硬件初始化和外设驱动编程;②掌握水位传感器、温度传感器及紫外线杀菌功能的设计与实现;③理解浮球式水位传感器的工作原理及其在实际项目中的应用。 阅读建议:此资源不仅提供了完整的源代码,还详细解释了每个功能模块的实现细节,适合在实际项目中参考和学习。建议读者结合STM32开发板进行实践操作,深入理解各个功能模块的工作机制,并根据具体需求进行功能扩展和优化。
语音模块的打印文件,直接使用。
内容概要:本文档是傲拓科技股份有限公司发布的NA200H可编程控制器(PLC)硬件手册,旨在详细介绍NA200H系列PLC的硬件特性、安装、拆卸与接线原则。NA200H系列PLC是一款小型一体化PLC,具有集成以太网接口,适用于恶劣运行环境,具备良好的扩展性能和低廉的价格。手册涵盖了NA200H PLC的硬件组成(包括CPU模块和各种扩展模块)、工作方式、编程软件介绍、快速应用指南以及详细的安装、拆卸与接线原则。此外,手册还提供了CPU模块和各类I/O扩展模块的技术参数、端子定义与接线说明,并介绍了多种通讯模块的功能和特性。最后,附录部分列出了订货参数和扩展模块的功率消耗清单。 适合人群:具备一定电气知识的操作人员和技术人员,特别是从事自动化控制系统设计、安装和维护的工程师。 使用场景及目标:①帮助用户了解NA200H PLC的硬件结构和工作原理;②指导用户正确安装、配置和维护NA200H PLC;③协助用户选择合适的扩展模块以满足特定的应用需求;④提供详细的接线和通讯配置指导,确保系统稳定运行。 阅读建议:本手册内容详尽,建议读者在使用产品前仔细阅读并理解相关内容,尤其是安装、拆卸和接线部分,以确保系统的安全和稳定运行。同时,建议结合实际应用场景,灵活运用手册中的信息,进行合理的系统设计和配置。
电脑手机端全新UI界面优化更新 支持PC+wap端自动识别跳转 代码工整易于阅读,方便二次修改 全站幻灯片后台自定义更换 大部分可见数据后台可自行修改配置 栏目结构层次清晰,非常利于搜索引擎优化 服务器环境:PHP>=5.3,支持最新的PHP7 系统默认采用Sqlite数据库,放入PHP(5.3+)环境即可直接使用, 系统独家支持七牛云对接,无论你是否启用七牛云,请把轮播图,栏目大图,定制标签内的部分图片重新上传可直接保存图 片,重新上传一下,否则不会图片可能会不显示(因为那些图片在我们的七牛云内) 授权码生成:https://www.pbootcms.com/freesn/ 默认采用sqlite数据库,不需要做导入和配置操作 为了网站各个页面正常运行,请不要修改URL规则 统计代码、商桥代码、各种客服代码,均可放置在后台统计位置,全站生效。 浏览器标签logo在根目录favicon.ico,ico格式百度一下,可以生成 后台地址:您的域名/admin.php 账号:admin密码:123456789
甲壳虫adb助手安全下载.apk
内容概要:本文档《1_蓝桥杯省赛考点整合.pdf》详细介绍了蓝桥杯省赛中常见的硬件模块及其编程实现方法。主要包括Led模块、Key模块、Seg模块、ds1302、ds18b20、PCF8591、EEPROM、超声波模块、串口通信、NE555定时器以及蜂鸣器继电器的底层代码和具体应用实例。每个模块都涵盖了代码示例、功能解释及具体的省赛题目应用场景。例如Led模块展示了如何根据模式显示Led、Led闪烁和PWM亮度调整;Key模块讲解了模式切换、参数设置和按键长按短按等功能;Seg模块则侧重于正常数据显示和闪烁效果。
内容概要:本文详细介绍了基于Matlab的图像拼接GUI系统的实现过程,涵盖了五个主要模块:系统管理、角点提取(Harris角点)、特征匹配(SIFT匹配)、匹配优化(RANSAC)和图像拼接(单映变换)。系统管理模块负责初始化环境和参数设置;角点提取模块使用Harris角点算法识别图像的关键点;特征匹配模块通过SIFT算法寻找匹配点对;匹配优化模块采用RANSAC算法去除误匹配点;最终图像拼接模块利用单映变换完成图像融合。文中还提供了大量代码示例和参数调优技巧,如高斯滤波的sigma值选择、SIFT匹配阈值设定、RANSAC迭代次数和像素容差调整等。 适合人群:对图像处理感兴趣的初学者和有一定编程基础的研究人员。 使用场景及目标:适用于学习和研究图像拼接技术,尤其是希望通过Matlab实现图像处理算法的人群。目标是掌握图像拼接的基本原理和技术实现,能够独立构建类似的图像处理系统。 其他说明:文中提供的代码仅供学习参考,实际应用中建议进一步优化和改进。同时,文中提及了一些实用技巧,如内存管理和性能优化,有助于提高系统的稳定性和效率。
内容概要:本文详细介绍了基于西门子S7-200 Smart PLC的30吨双级反渗透水处理系统的设计与实现。主要内容涵盖了一键制水、加药控制、触摸屏组态、程序结构优化等方面的技术细节。文中不仅展示了具体的PLC梯形图代码片段,还分享了许多现场调试的经验和技巧,如定时器防抖、中断优先处理、PID闭环控制的应用等。此外,文章还提到了一些实用的功能设计,如无人值守模式的安全机制、长按按钮触发高级设置等。 适合人群:从事水处理自动化系统设计、维护的工程师和技术人员,尤其是熟悉西门子PLC编程的从业者。 使用场景及目标:适用于需要稳定产水的工业应用场景,帮助工程师理解和掌握双级反渗透系统的控制逻辑,提高系统的可靠性和效率。同时,也为新手提供了宝贵的调试经验和注意事项。 其他说明:文章强调了程序结构的模块化设计,便于后期维护和参数调整。建议读者结合提供的工程文件进行仿真练习,以便更好地理解系统的工作原理。
内容概要:本文详细介绍了基于LabVIEW 2018版开发的多路温度采集系统,涵盖了系统架构设计、Modbus通讯实现、FGV(功能性全局变量)应用、队列管理和引用控制等多个高级知识点。系统采用了一主两从的串口连接方式,其中一个从机负责温度采集,另一个从机负责开关控制。文中提供了具体的代码示例,如串口配置、Modbus主站配置、数据读取、FGV创建与使用、队列操作等,展示了如何通过这些技术实现高效的数据传输和处理。 适用人群:适用于有一定LabVIEW基础的研发人员和技术爱好者,尤其是希望深入理解LabVIEW高级特性和Modbus通讯机制的人群。 使用场景及目标:①掌握LabVIEW中Modbus通讯的具体实现方法;②学会使用FGV实现跨VI的数据共享;③理解队列在多线程数据处理中的应用;④熟悉引用控制在动态界面更新中的作用。通过这些技术的应用,可以提高项目的开发效率和系统的稳定性。 其他说明:本文不仅提供了详细的代码示例,还分享了许多实践经验,如如何避免内存泄漏、如何处理异常情况等。此外,作者还强调了系统架构的设计思路,如分层设计、生产者-消费者模式等,这些都是实际项目开发中非常重要的考虑因素。
RAG-N算法,滤波器加法器优化代码
《软考软件设计师高频考点精析》精准提炼考试核心内容,涵盖编程语言、数据结构、操作系统、数据库、软件工程等必考领域。结合历年真题与实战技巧,助你快速掌握重点,高效备考。一册在手,轻松攻克软考难关!
内容概要:本文详细介绍了如何利用LabVIEW和周立功库文件构建一个能够进行基本CAN通讯的上位机系统。主要内容涵盖前期准备工作,包括安装LabVIEW软件和下载相关库文件;创建LabVIEW项目,调用库文件实现CAN设备初始化、数据发送与接收等功能的具体步骤;以及一些常见的注意事项和避坑指南。此外,还提供了进阶玩法,如封装成子VI、优化接收处理逻辑等。 适合人群:适用于初次接触LabVIEW和CAN通讯的技术爱好者,尤其是希望快速掌握CAN通讯上位机开发的初学者。 使用场景及目标:本教程旨在帮助用户建立一个简易的CAN通讯平台,以便于后续深入研究或实际项目开发。通过动手实践,读者将学会如何配置CAN设备、编写数据传输代码,并理解CAN通讯的基本原理。 其他说明:文中附带了详细的代码示例和实用技巧,有助于提高学习效率。同时强调了正确配置结构体成员顺序、管理设备句柄、匹配波特率等关键点,以确保系统的稳定性。
内容概要:本文详细介绍了永磁同步电机(PMSM)矢量控制的C代码实现,涵盖从理论到实践的全过程。首先解释了矢量控制的基本原理,即通过坐标变换将三相电流解耦为励磁电流和转矩电流,以便独立控制电机的转矩和磁通。接着介绍了S-function模式仿真的优势,强调它可以灵活嵌入自定义代码并与其他Simulink模块协同工作。文中提供了关键的C代码示例,包括电机参数和状态变量的初始化、Clark变换和Park变换的具体实现、PI控制器的设计以及SVPWM生成算法。此外,还讨论了代码移植到实际工程项目中的注意事项,如硬件资源对接、参数调整和优化技巧。 适合人群:从事电机控制系统开发的技术人员,尤其是有一定C语言编程基础并对永磁同步电机矢量控制感兴趣的工程师。 使用场景及目标:适用于希望深入了解永磁同步电机矢量控制原理并在实际项目中应用相关技术的研发人员。主要目标是帮助读者掌握从仿真到实际应用的完整流程,提高电机控制系统的开发效率和稳定性。 其他说明:文中不仅提供了详细的代码示例,还分享了许多来自实际项目的宝贵经验和技术细节,如定点运算优化、锁相环(PLL)实现中的常见问题及解决方案、PI控制器的抗积分饱和处理等。这些内容对于理解和解决实际开发中的难题非常有帮助。
流变学在材料科学中的应用:聚合物流变学仿真.zip
内容概要:本文详细介绍了如何使用LabVIEW与三菱FX系列PLC进行编程口协议通讯。首先解释了协议的基本结构,包括起始符、结束符、ASCII字符指令以及校验码的计算方式。接着展示了具体的LabVIEW代码实现,涵盖了串口配置、命令帧构造、数据解析等关键步骤。文中还分享了许多实用技巧和常见错误的解决方案,如正确设置串口参数、处理特殊字符、优化读取速度等。此外,作者提供了完整的工程源码,并强调了在实际应用中需要注意的问题,如通信间隔控制和浮点数处理。 适合人群:从事工业自动化领域的工程师和技术人员,特别是熟悉LabVIEW和三菱PLC的用户。 使用场景及目标:适用于需要通过编程口与三菱FX系列PLC进行通讯的应用场景,如读取寄存器数据、监控设备状态等。目标是帮助读者掌握LabVIEW与三菱PLC通讯的具体实现方法,提高工作效率。 其他说明:文中提到的所有代码和技巧均经过实际验证,确保可行性和可靠性。建议读者在实践中结合自己的具体需求进行调整和优化。
蓝桥杯python 蓝桥杯Python之自动生成数据库表字典的markdown文本3.zip