JavaScript读写15693 ICod2 卡源码

本示例使用设备 :

https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-21818769070.11.23eb789efg450Y&id=615391857885

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>15693卡读写DEMO</title><script language="javascript">var iswsrun = false;var ws;var received_msg = "";var mytimer;var strls = "";var errorno = "";var wsUri = "ws://127.0.0.1:39189";   //端口号必须与RFIDWebServer端口一致function isUIntNum(val) {var testval = /^\d+$/; // 非负整数return (testval.test(val));}function isHex(val) {var testval = /^(\d|[A-F]|[a-f])+$/; // 十六进制数判断return (testval.test(val));}				function beep() {				     //驱动发卡器响声令textarea.value = "";		WebSocketRun("pcdbeep,30");					}function getdevicenumber() {         //读取发卡器唯一出厂序号,可以当加密狗使用			textarea.value = "";		serialnumber.value="";WebSocketRun("pcdgetdevicenumber");			}			function readcard_15693() {textarea.value = "";carduid.value="";RWdata.value= "";			myctrlword = 0;                        //读任何卡,不需指定卡号,读完后不静止该卡,可赋值NEEDSERIAL及NEEDHALT的组合模式,或为0            mypiccserial = "0000000000000000";     //指定序列号,未知卡序列号时可指定为16个0,因为15693卡是8个字节的卡序列号afi= textafi.value.trim(); ;           //16进制,一般取00if (!isHex(afi) || afi.length!=2) {alert( "应用标识AFI输入错误,请输入2位16进制应用标识AFI!");textafi.focus();textafi.select();return;}			myblockaddr = startno.value.trim();    //本次写卡的开始块号if (!isUIntNum(myblockaddr)) {alert("读写起始页输入错误!");startno.focus();startno.select();return;}            myblocksize = pagenumber.value.trim();  //本次读写页数if (!isUIntNum(myblocksize) || myblocksize<1 || myblocksize>12) {alert("读写页数输入错误,读写页数需大于等于1,小于等于12!");pagenumber.focus();pagenumber.select();return;}					var Read15693Comm = "iso15693readex," + myctrlword + "," + afi + "," + myblockaddr + "," + myblocksize + "," + mypiccserial;WebSocketRun(Read15693Comm);}		function writecard_15693() {textarea.value = "";carduid.value="";myctrlword = 0;                        //写任何卡,不需指定卡号,读完后不静止该卡,可赋值NEEDSERIAL及NEEDHALT的组合模式,或为0            mypiccserial = "0000000000000000";     //指定序列号,未知卡序列号时可指定为16个0,因为15693卡是8个字节的卡序列号afi= textafi.value.trim(); ;           //16进制,一般取00if (!isHex(afi) || afi.length!=2) {alert( "应用标识AFI输入错误,请输入2位16进制应用标识AFI!");textafi.focus();textafi.select();return;}			myblockaddr = startno.value.trim();    //本次写卡的开始块号if (!isUIntNum(myblockaddr)) {alert("读写起始页输入错误!");startno.focus();startno.select();return;}            myblocksize = pagenumber.value.trim();  //本次读写页数if (!isUIntNum(myblocksize) || myblocksize<1 || myblocksize>12) {alert("读写页数输入错误,读写页数需大于等于1,小于等于12!");pagenumber.focus();pagenumber.select();return;}					//数据strls = RWdata.value.trim();if (!isHex(strls)  || strls.length<myblocksize*8) {alert( "读写数据输入错误,请输入"+(myblocksize*8).toString()+"位16进制写卡数据!");RWdata.focus();RWdata.select();return;}var WriteNtagComm = "iso15693writeex," + myctrlword + "," + afi + "," + myblockaddr + "," + myblocksize + "," + mypiccserial + "," + strls;WebSocketRun(WriteNtagComm);}		function Searchcards(){			//搜寻感应区内的多张15693卡textarea.value = "";finduid.value="";clearlist();textflag.value="16";flag= "16" ;                            //16进制,固定的操作码16afi= textafi.value.trim(); ;           //16进制,一般取00if (!isHex(afi) || afi.length!=2) {alert( "应用标识AFI输入错误,请输入2位16进制应用标识AFI!");textafi.focus();textafi.select();return;}			MaskLen = textmasklen.value.trim();     //掩码长度if (!isUIntNum(MaskLen)) {alert("掩码长度输入错误,请输入正确的掩码长度!");textmasklen.focus();textmasklen.select();return;}	WebSocketRun("iso15693inventory16," + flag + "," + afi + "," + MaskLen );			}function read15693block(){textarea.value = "";textarea2.value="";textflag.value="22";flag= "22" ;                              //16进制,固定的操作码22myblockaddr = startblock.value.trim();    //本次写卡的开始块号if (!isUIntNum(myblockaddr)) {alert("读写起始页输入错误!");startblock.focus();startblock.select();return;}            myblocksize = rwblocks.value.trim();  //本次读写页数if (!isUIntNum(myblocksize)) {alert("读写页数输入错误!");rwblocks.focus();rwblocks.select();return;}mypiccserial= finduid.value.trim(); ;           //指定要读写卡的UIDif (!isHex(mypiccserial) || mypiccserial.length!=16) {alert( "卡片UID输入错误,请输入16位16进制UID!");finduid.focus();finduid.select();return;}			WebSocketRun("iso15693readblock," + flag + "," + myblockaddr + "," + myblocksize + "," + mypiccserial);			}				function write15693block(){textarea.value = "";textflag.value="22";flag= "22" ;                              //16进制,固定的操作码22myblockaddr = startblock.value.trim();    //本次写卡的开始块号if (!isUIntNum(myblockaddr)) {alert("读写起始页输入错误!");startblock.focus();startblock.select();return;}            myblocksize = rwblocks.value.trim();  //本次读写页数if (!isUIntNum(myblocksize)) {alert("读写页数输入错误!");rwblocks.focus();rwblocks.select();return;}//数据strls = textarea2.value.trim();if (!isHex(strls)  || strls.length<myblocksize*8) {alert( "读写数据输入错误,请输入"+(myblocksize*8).toString()+"位16进制写卡数据!");textarea2.focus();textarea2.select();return;}			mypiccserial= finduid.value.trim(); ;           //指定要读写卡的UIDif (!isHex(mypiccserial) || mypiccserial.length!=16) {alert( "卡片UID输入错误,请输入16位16进制UID!");finduid.focus();finduid.select();return;}			WebSocketRun("iso15693writeblock," + flag + "," + myblockaddr + "," + myblocksize + "," + mypiccserial+ "," + strls);			}	function write15693uid(){textarea.value = "";afi= textafi.value.trim(); ;           //16进制,一般取00if (!isHex(afi) || afi.length!=2) {alert( "应用标识AFI输入错误,请输入2位16进制应用标识AFI!");textafi.focus();textafi.select();return;}	newuid= textnewuid.value.trim(); ;           //16进制UIDif (!isHex(newuid) || newuid.length!=16) {alert( "新UID输入错误,请输入16位16进制新UID!");textnewuid.focus();textnewuid.select();return;}	WebSocketRun("iso15693writeuid,"+afi+","+newuid)}function DispErrInfo(errcode){var errstr = "";switch (errcode) {case "ReturnCode:008":case "ReturnCode:009":case "ReturnCode:010":errstr = ",未寻到卡,请将卡放到发卡器的感应区!";break;case "ReturnCode:011":case "ReturnCode:012":errstr = ",卡密码认证失败!";break;case "ReturnCode:013":errstr = ",读卡失败,可能需要验证密码!";break;case "ReturnCode:014":errstr = ",写卡失败,可能需要验证密码!";break;case "ReturnCode:021":errstr = ",没有动态库!";break;case "ReturnCode:022":errstr = ",动态库或驱动程序异常!";break;case "ReturnCode:023":errstr = ",驱动程序错误或发卡器未连接!";break;case "ReturnCode:024":errstr = ",操作超时,一般是动态库没有反映!";break;case "ReturnCode:025":errstr = ",发送字数不够!";break;case "ReturnCode:026":errstr = ",发送的CRC错!";break;case "ReturnCode:027":errstr = ",接收的字数不够!";break;case "ReturnCode:028":errstr = ",接收的CRC错!";break;	case "ReturnCode:029":errstr = ",函数输入参数格式错误!";break;case "ReturnCode:040":errstr = ",使卡进入静止(Quiet)状态失败!";break;case "ReturnCode:041":errstr = ",选中卡操作失败!";break;case "ReturnCode:042":errstr = ",让卡从静止中重起准备失败!";break;	case "ReturnCode:044":errstr = ",一次写块不能超过12块!";break;	case "ReturnCode:045":errstr = ",每块字节数选错!";break;		case "ReturnCode:046":errstr = ",本次读取的块数超过卡片允许的一次读取最多块数!";break;											case "ReturnCode:444":errstr = ",RFIDWebServer系统文件错误!";break;default:errstr = ",未知的错误!";}return errstr;}			window.onerror = function (e) {alert("不好意思,出错了!");return true;//屏蔽系统事件}function timeoutevent() {ws.close();textarea.value = "websockket返回超时";}//websockket数据处理function WebSocketRev(evt) {clearTimeout(mytimer);received_msg = evt.data;ws.close();//在这里解析返回数据var strlist = received_msg.split(",");if (strlist.length > 1) {var dispstr = "";switch (strlist[0]) {case "pcdbeep":dispstr = "函数名称:" + strlist[0] + "\r\n";if (strlist[1] == "ReturnCode:000") {dispstr = dispstr + "操作结果:" + strlist[1];dispstr = dispstr + ",已执行蜂鸣响声操作!\r\n";} else {dispstr = dispstr + "操作结果:" + strlist[1];dispstr = dispstr + DispErrInfo(strlist[1]);}textarea.value = dispstr;break;case "pcdgetdevicenumber":dispstr = "函数名称:" + strlist[0] + "\r\n";if (strlist[1] == "ReturnCode:000") {dispstr = dispstr + "操作结果:" + strlist[1];dispstr = dispstr + ",已读取设备编号!\r\n";serialnumber.value =  strlist[2] ;} else {dispstr = dispstr + "操作结果:" + strlist[1];dispstr = dispstr + DispErrInfo(strlist[1]);}textarea.value = dispstr;break;	case "iso15693readex":dispstr = "函数名称:" + strlist[0] + "\r\n";if (strlist[1] == "ReturnCode:000") {dispstr = dispstr + "操作结果:" + strlist[1];dispstr = dispstr + ",已读取卡内数据!\r\n";} else {dispstr = dispstr + "操作结果:" + strlist[1];dispstr = dispstr + DispErrInfo(strlist[1]);}if (strlist.length > 2) {carduid.value=strlist[2];finduid.value=strlist[2];textnewuid.value=strlist[2];							}if (strlist.length > 3) {RWdata.value= strlist[3];}textarea.value = dispstr;break;	case "iso15693writeuid":	    //写uidcase "iso15693writeblock":  //写指定卡case "iso15693writeex":     //轻松写任意卡dispstr = "函数名称:" + strlist[0] + "\r\n";if (strlist[1] == "ReturnCode:000") {dispstr = dispstr + "操作结果:" + strlist[1];dispstr = dispstr + ",写卡成功!\r\n";} else {dispstr = dispstr + "操作结果:" + strlist[1];dispstr = dispstr + DispErrInfo(strlist[1]);}if (strlist.length > 2) {carduid.value=strlist[2];finduid.value=strlist[2];textnewuid.value=strlist[2];							}textarea.value = dispstr;break;		case "iso15693inventory16":dispstr = "函数名称:" + strlist[0] + "\r\n";if (strlist[1] == "ReturnCode:000") {dispstr = dispstr + "操作结果:" + strlist[1];dispstr = dispstr + ",搜寻卡片成功!\r\n";} else {dispstr = dispstr + "操作结果:" + strlist[1];dispstr = dispstr + DispErrInfo(strlist[1]);}textarea.value = dispstr;						if (strlist.length > 2) {carduid.value=strlist[2];finduid.value=strlist[2];textnewuid.value=strlist[2];}										if (strlist.length > 3) {addlist(strlist[3]);	}if (strlist.length > 4) {addlist(strlist[4]);	}						break;		case "iso15693readblock":dispstr = "函数名称:" + strlist[0] + "\r\n";if (strlist[1] == "ReturnCode:000") {dispstr = dispstr + "操作结果:" + strlist[1];dispstr = dispstr + ",已读取卡内数据!\r\n"textarea2.value= strlist[2];} else {dispstr = dispstr + "操作结果:" + strlist[1];dispstr = dispstr + DispErrInfo(strlist[1]);}																					textarea.value = dispstr;break;																									}}}		function addlist(itemstr){const select = document.querySelector("#sel_finduid");const option = document.createElement("option");option.value = "value";								option.text = itemstr;	select.add(option);			}function clearlist(){obj = document.getElementById("sel_finduid"); ///drp是select控件的ID值for(i=obj.options.length-1 ; i>= 0 ; i--)obj.options[i] = null;}function seleotheruit(){var myselect=document.getElementById("sel_finduid");var index=myselect.selectedIndex ; myselect.options[index].value;seleudistr=myselect.options[index].text;			 finduid.value=seleudistr.substr(seleudistr.length - 16, 16);}		function WebSocketRun(sendinfo) {iswsrun = false;try {if ("WebSocket" in window) {ws = new WebSocket(wsUri);}else if ("MozWebSocket" in window) {ws = new MozWebSocket(wsUri);}else {received_msg = "您的浏览器不支持WebSocket,请选用支持WebSocket的浏览器!";return;}clearTimeout(mytimer);ws.onopen = function (evt) {ws.send(sendinfo);iswsrun = true;mytimer = setTimeout("timeoutevent()", 3000);    //如果一次读、写页数比较大,可适当延长通讯超时时间。};ws.onmessage = WebSocketRev;ws.onerror = function (e) {if (iswsrun != true) {received_msg = "请先在当前电脑下载>安装>运行我们的服务程序......";window.open("http://www.icmcu.com/ICID15693-02V2test/RFIDWebServerSetup.exe", "top");//打开新窗口alert("请先下载>安装>运行我们的服务程序,再刷新本页面......");}};}catch (ex) {if (iswsrun != true) {received_msg = "请先在当前电脑下载>安装>运行我们的服务程序......";window.open("http://www.icmcu.com/ICID15693-02V2test/RFIDWebServerSetup.exe", "top");//打开新窗口alert("请先下载>安装>运行我们的服务程序,再刷新本页面......");}}}</script><style>th {background-color:#F5F5F5;	color: blue;font-family:楷体;}td {background-color:#F5F5F5;		font-family:楷体;}#carduid ,#finduid,#textnewuid{text-align: center;color: red;}   </style>    </head><body>
<table width="866" height="526" border="1" align="center"><tr><th width="124" height="45" scope="row"><input name="butt_beep" type="submit" id="butt_beep" onclick="beep()" value="驱动发卡器响声" /></th><td width="716"><input name="butt_getdevnum" type="submit" id="butt_getdevnum" onclick="getdevicenumber()" value="读取发卡器唯一出厂序列号" />设备编号:<input style="color:red;text-align:center;" name="serialnumber" type="text" id="serialnumber" size="8" maxlength="8" /></td></tr><tr><th height="45" scope="row">&nbsp;</th><td>应用标识AFI:<input style="color:blue;text-align:center;" name="textafi" type="text" id="textafi" value="00" size="2" maxlength="2" onkeyup="this.value=this.value.replace(/[^0-9a-fA-F]/g,'')"/>,操作标志FLAG:<input style="color:blue;text-align:center;" name="textflag" type="text" id="textflag" value="00" size="2" maxlength="2" onkeyup="this.value=this.value.replace(/[^0-9a-fA-F]/g,'')"/>,数据存储格式标识DSFID:<input style="color:blue;text-align:center;" name="textdsfid" type="text" id="textdsfid" value="00" size="2" maxlength="2" onkeyup="this.value=this.value.replace(/[^0-9a-fA-F]/g,'')"/></td></tr><tr><th  height="103" scope="row"><p><input name="butt_readcard_15693" type="submit" id="butt_readcard_15693" onclick="readcard_15693()" value="轻松读15693卡" /></p><p>&nbsp;</p><p><input name="butt_writecard_15693" type="submit" id="butt_writecard_15693" onclick="writecard_15693()" value="轻松写15693卡" /></p></th><td><p>读写起始页:<input style="color:blue;blue-align:center;" name="startno" type="text" id="startno" value="0" size="3" maxlength="3" onkeyup="this.value=this.value.replace(/\D/g,'')"/>,读写页数:<input style="color:blue;text-align:center;" name="pagenumber" type="text" id="pagenumber" value="12" size="2" maxlength="2" onkeyup="this.value=this.value.replace(/\D/g,'')"/>,感应区内只能一张卡,每次最多读、写12页。</p><p>返回UID号:<input name="carduid" type="text" id="carduid" size="16" maxlength="16" /></p><p><textarea style="color:red;" name="RWdata" id="RWdata" cols="100" rows="3" ></textarea></p></td>  </tr>  <tr><th height="175" scope="row"><p><input name="butt_iso15693inventory16" type="submit" id="butt_iso15693inventory16" onclick="Searchcards()" value="寻找感应区内多张卡" /></p><p>&nbsp; </p><p><input name="butt_readblock" type="submit" id="butt_readblock" onclick="read15693block()" value="读取指定UID卡数据" /></p><p><input name="butt_writeblock" type="submit" id="butt_writeblock" onclick="write15693block()" value="写数据到指定UID卡" /></p></th><td><p>掩码长度:<input style="color:blue;text-align:center;" name="textmasklen" type="text" id="textmasklen" value="0" size="2" maxlength="2" onkeyup="this.value=this.value.replace(/\D/g,'')"/>,寻找到的卡片UID列表:<select style="color:red;" name="sel_finduid" id="sel_finduid" onchange="seleotheruit()"></select><input name="finduid" type="text" id="finduid" size="16" maxlength="16" /></p><p>读写起始页:<input style="color:blue;text-align:center;" name="startblock" type="text" id="startblock" value="0" size="3" maxlength="3" onkeyup="this.value=this.value.replace(/\D/g,'')"/>,读写页数:<input style="color:blue;text-align:center;" name="rwblocks" type="text" id="rwblocks" value="28" size="3" maxlength="3" onkeyup="this.value=this.value.replace(/\D/g,'')"/>,感应区内可以有多张卡,读写前必须指定卡片的UID。</p><p><textarea style="color:red;" name="textarea2" id="textarea2" cols="100" rows="5" ></textarea></p></td></tr><tr><th height="45" scope="row"><p><input name="butt_writeuid" type="submit" id="butt_writeuid" onclick="write15693uid()" value="1830卡写入新UID" /></p></th><td>新UID:<input name="textnewuid" type="text" id="textnewuid" size="16" maxlength="16" /></td></tr>  <tr><th height="78" scope="row"><p>操作提示</p></th><td><textarea style="color:blue;" name="textarea"  id="textarea" cols="100" rows="5" ></textarea></td></tr>
</table>
</body>
</html>

 USB免驱动15693读写器 15693-02 支持Windows、Android、Linux_广州荣士电子公司

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/238535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

camera 客观校准 (1)——抓图

#灵感# 客观校准很多平台都有&#xff0c;无非是抓raw&#xff0c;导入到calibration tool 中&#xff0c;设置一些参数&#xff0c;导出相应的校准数据。抓raw的方法&#xff0c;也是大差不差。但有些地方细节容易忽略&#xff0c;所以罗列一下。 目录 blc: lsc: color: …

ELFK日志收集

文章目录 第一章:ELK日志收集系统介绍日志收集重要性ELK介绍EFK介绍ELFK介绍ES部署Kibana部署第二章:Logstach日志收集Logstash介绍Logstash安装Logstash Input输入插件Logstash Filter过滤插件Logstash Output输出插件Input fileFilter mutatesplit示例add_field示例remove_…

ATFX期市:安哥拉宣布退出OPEC,减产计划还能否彻底执行?

ATFX期市&#xff1a;昨日&#xff0c;安哥拉矿产资源、石油和天然气部长迪亚曼蒂诺阿泽维多在首都罗安达宣布&#xff0c;安哥拉决定退出OPEC&#xff0c;原因是此前OPEC第36次会议将安哥拉的产量配额设定为111万桶&#xff0c;不及安哥拉方面提出的118万桶。安哥拉的退出预计…

操作系统期末知识点总结

第一章 1、操作系统&#xff1a;OS是一个大型的系统软件、它负责计算机的全部软件和硬件资源的管理&#xff0c;并为用户提供良好的应用界面&#xff0c;使整个计算机系统实现高效率和高度自动化 2、操作系统的形成 1&#xff09;手工操作阶段 2&#xff09;批处理系统&…

Pooling方法总结(语音识别)

Pooling layer将变长的frame-level features转换为一个定长的向量。 1. Statistics Pooling 链接&#xff1a;http://danielpovey.com/files/2017_interspeech_embeddings.pdf The default pooling method for x-vector is statistics pooling. The statistics pooling laye…

爬虫工具Curl!

爬虫工具Curl&#xff01; 链接: Curl 使用它可以将网站内的信息转成python可用格式 打开开发工具中的网络选项卡右键单击&#xff08;或按住 Ctrl 键单击&#xff09;请求单击“复制”→ “复制为 cURL”粘贴到上面的curl命令框中 !!!警告&#xff1a;复制的命令可能包含 co…

redis基本用法学习(C#调用NRedisStack操作redis)

redis官网文档中推荐C#中使用NRedisStack包连接并操作redis&#xff0c;本文学习C#调用NRedisStack操作redis的基本方式。   新建Winform项目&#xff0c;在Nuget包管理器中搜索并安装NRedisStack包&#xff0c;如下图所示&#xff1a; 主要调用StackExchange.Redis命名空间下…

从及格走向优秀的纷享销客,成为了SaaS“全村的希望”

前不久&#xff0c;国漫《长安三万里》爆火&#xff0c;让很多观众看到破防 。尤其是影片结尾李白的那一句“轻舟已过万重山”&#xff0c;更是戳中无数成年人泪点。 与很多创业公司一样&#xff0c;在过去十几年&#xff0c;纷享销客始终在中国SaaS产业摸爬滚打。同质化之争、…

如何实现设备远程控制?

在工业自动化领域&#xff0c;设备远程控制是一项非常重要的技术。它使得设备可以在远离现场的情况下进行远程操作和维护&#xff0c;大大提高了设备的可用性和效率。 设备远程控制的应用场景有哪些&#xff1f; 远程故障排除&#xff1a;当设备出现故障时&#xff0c;工程师…

QC/PD快充电源产品应用介绍

• 原边650-700V SJ MOSFET采用低FOM值的ESM 技术&#xff0c;有利于提高系统效 率&#xff0c; 以及更佳的EAS和EMI等特性&#xff0c;对于一些不含PFC电路的系统更友好。 • 副边采用低FOM值的SGT同步整流电路&#xff0c;相比肖特基二极管整流能有更低的 损耗&#xff0c;有…

CQ 社区版 V2.7.0 发布 | 数据源版本扩充、新增批量执行功能等

2023 年的最后一个社区版本来啦&#xff01;提前祝大家新年快乐~ ✿✿ヽ(▽)ノ✿ 应社区小伙伴的建议&#xff0c;本次版本增加了大量已支持数据源的适配版本&#xff01;&#xff01;&#xff01;&#xff08;是听劝的官方没错&#xff09;同时&#xff0c;新增批量执行、Blo…

elasticsearch-py 8.x的一些优势

​ 早在 2022 年 2 月,当 Elasticsearch 8.0 发布时,Python 客户端也发布了 8.0 版本。它是对 7.x 客户端的部分重写,并带有许多不错的功能(如下所述),但也带有弃用警告和重大更改。今天,客户端的 7.17 版本仍然相对流行,每月下载量超过 100 万次,占 8.x 下载量的 ~50…

comfyUI + animateDiff video2video AI视频生成工作流介绍及实例

原文&#xff1a;comfyUI animateDiff video2video AI视频生成工作流介绍及实例 - 知乎 目录 收起 前言 准备工作环境 comfyUI相关及介绍 comfyUI安装 生成第一个视频 进一步生成更多视频 注意事项 保存为不同的格式 视频宽高设置 种子值设置 提示词与负向提示词…

计算机毕业设计------企业ERP报销管理系统、

项目介绍 本项目分为前台和后台&#xff0c;用户有员工和管理员 员工主要功能有注册登录、查看公告、申请报销、个人信息修改等&#xff1b; 管理员主要功能登录登出、个人中心管理、员工管理、部门管理、报销种类管理、报销信息管理、系统管理等。 环境需要 1.运行环境&…

Rust学习:HelloWorld

Rust学习&#xff1a;HelloWorld HelloWorldRust语言简介主要特点先看程序分析程序 HelloWorld Rust语言简介 Rust是一种系统编程语言&#xff0c;旨在提供内存安全、并发性和性能。它由Mozilla Research开发&#xff0c;旨在解决C和C语言中的一些关键问题&#xff0c;特别是…

ESP8266 TCP/串口透传

简介 先在PC上做测试, 使用串口软件对ESP8266 模块进行设置, 使用网络助手软件与串口软件进行自由收发设置 ATRST ## 复位 ATCWMODE_DEF1 ## 设置为Station模式 ATCWJAP_DEF“路由器wifi名称”,“路由器wifi密码” ## 设置ESP连接的路由器名称密码 ATCIPSTART“TCP”,“192.1…

防止头文件重复包含

1. 使用#ifndef 这种方式是可跨平台的 #ifndef _TESTLIB1_ /*这种是跨平台的*/ #define _TESTLIB1_int sum(int a, int b); int sub(int a, int b);#endif // !TESTLIB12.使用#pragma once 使用之后,表示该文件只会被编译一次,但是只能在vs和vc等IDE使用。不具备跨平台。 注意:…

系统架构设计师教程(九)软件可靠性基础知识

软件可靠性基础知识 9.1 软件可靠性基本概念9.1.1 软件可靠性定义9.1.2 软件可靠性的定量描述9.1.3 可靠性目标9.1.4 可靠性测试的意义9.1.5 广义的可靠性测试与狭义的可靠性测试 9.2 软件可靠性建模9.2.1 影响软件可靠性的因素9.2.2 软件可靠性的建模方法9.2.3 软件的可靠性模…

15个热门的开源数据可视化项目

数据可视化(即 BI仪表盘)是图形表示的数据。它涉及产生将表示的数据之间的关系传达给图像查看者的图像。这种通信是通过在可视化过程中使用图形标记和数据值之间的系统映射来实现的。该映射建立了如何在视觉上表示数据值,确定图形标记的属性(例如大小或颜色)如何以及在多大程…