Files
Web_CRICS_Server_VS2010_Prod/WebSite/touchuantest.htm
2025-12-11 09:17:16 +08:00

340 lines
9.8 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>透传设置界面</title>
<style type="text/css">
*
{
box-sizing: border-box;
margin: 0;
padding: 0;
}
body
{
font-family: 'Segoe UI' , Tahoma, Geneva, Verdana, sans-serif;
line-height: 1.4;
color: #333;
background-color: #f5f7fa;
padding: 16px;
max-width: 1000px;
margin: 0 auto;
}
h1
{
font-size: 1.5rem;
margin-bottom: 20px;
color: #2c3e50;
border-bottom: 1px solid #e1e4e8;
padding-bottom: 10px;
}
.card
{
background: white;
border-radius: 6px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
overflow: hidden;
}
.card-header
{
background-color: #f8f9fa;
padding: 12px 16px;
border-bottom: 1px solid #e9ecef;
font-weight: 600;
}
.card-content
{
padding: 16px;
}
.form-row
{
display: flex;
flex-wrap: wrap;
gap: 15px;
margin-bottom: 15px;
align-items: flex-end;
}
.form-group
{
display: flex;
flex-direction: column;
}
.form-row-inline
{
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 15px;
}
label
{
font-size: 0.85rem;
font-weight: 600;
margin-bottom: 5px;
color: #495057;
}
input, textarea, button
{
font-family: inherit;
font-size: 0.9rem;
}
input[type="text"], textarea
{
padding: 8px 12px;
border: 1px solid #ced4da;
border-radius: 4px;
transition: border-color 0.15s;
}
input[type="text"]:focus, textarea:focus
{
outline: none;
border-color: #4285f4;
box-shadow: 0 0 0 2px rgba(66, 133, 244, 0.2);
}
textarea
{
min-height: 80px;
resize: vertical;
width: 100%;
}
button
{
background-color: #4285f4;
color: white;
border: none;
border-radius: 4px;
padding: 8px 16px;
cursor: pointer;
font-weight: 500;
transition: background-color 0.15s;
}
button:hover
{
background-color: #3367d6;
}
#send
{
background-color: #34a853;
}
#send:hover
{
background-color: #2e9449;
}
.checkbox-group
{
display: flex;
align-items: center;
gap: 8px;
}
.message-container
{
max-height: 300px;
overflow-y: auto;
border: 1px solid #e9ecef;
border-radius: 4px;
padding: 12px;
background-color: #f8f9fa;
font-family: 'Courier New' , monospace;
font-size: 0.85rem;
}
.message-item
{
padding: 6px 0;
border-bottom: 1px solid #e9ecef;
}
.message-item:last-child
{
border-bottom: none;
}
#result
{
margin-top: 10px;
font-size: 0.85rem;
color: #28a745;
min-height: 20px;
}
@media (max-width: 768px)
{
.form-row
{
flex-direction: column;
gap: 10px;
}
.form-group
{
width: 100%;
}
}
</style>
</head>
<body>
<h1>
透传设置界面</h1>
<!-- 设置透传卡片 -->
<div class="card">
<div class="card-header">
设置透传</div>
<div class="card-content">
<div class="form-row">
<div class="form-group">
<label for="txthostnumber">
主机编号:</label>
<input id="txthostnumber" type="text" placeholder="请输入主机编号">
</div>
<div class="form-group">
<button id="btn_set">
设置</button>
</div>
</div>
<div id="result">
</div>
</div>
</div>
<!-- 发送内容卡片 -->
<div class="card">
<div class="card-header">
发送内容</div>
<div class="card-content">
<div class="form-row-inline">
<div class="checkbox-group">
<input id="isprotocol" type="checkbox" checked>
<label for="isprotocol" style="margin-bottom: 0;">
自动加上协议头</label>
</div>
<div class="form-group" style="flex-direction: row; align-items: center; gap: 8px;">
<label for="protocoltype" style="margin-bottom: 0;">
协议类型:</label>
<input id="protocoltype" type="text" placeholder="如01,02,0A" style="width: 100px;">
</div>
</div>
<div class="form-group">
<label for="content">
透传内容16进制:</label>
<textarea id="content" placeholder="请输入16进制内容"></textarea>
</div>
<button id="send">
发送内容</button>
</div>
</div>
<!-- 接收数据卡片 -->
<div class="card">
<div class="card-header">
下位机透传来的数据</div>
<div class="card-content">
<div id="touchuan_content" class="message-container">
<!-- 消息将在这里显示 -->
</div>
</div>
</div>
<script src="Scripts/jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="Scripts/mqtt.min.js" type="text/javascript"></script>
<script>
function lianjie(hghg) {
const options = {
clientId: 'touchuan_' + Math.random().toString(16).substr(2, 8),
username: "blwws",
password: "E!9~3~H=M.&2STW",
protocolVersion: 5
};
const client = mqtt.connect("wss://gua.blv-oa.com:8084/mqtt", options);
client.on("connect", (error) => {
console.log("连接上了");
client.unsubscribe("blw/touchuan/report" + hghg);
client.subscribe("blw/touchuan/report/" + hghg, (err) => {});
});
client.on("message", (topic, message) => {
var data = message.toString();
console.log(data);
$("#touchuan_content").append("<div class='message-item'>" + data + "</div>");
// 自动滚动到底部
$("#touchuan_content").scrollTop($("#touchuan_content")[0].scrollHeight);
});
}
$(function() {
$("#btn_set").click(function() {
let hhh = $("#txthostnumber").val();
let mac = "";
let jjj = {
hostnumber: hhh,
mac: mac,
add_or_remove: "add"
};
$.ajax({
url: '/api/SetTouChuanData',
type: 'Post',
contentType: 'application/x-www-form-urlencoded',
data: jjj,
success: function(response) {
console.log(response);
$("#result").text("设置成功: " + response);
lianjie(hhh);
},
error: function(xhr, status, error) {
console.log(error);
$("#result").text("设置失败: " + error);
}
});
});
$("#send").click(function() {
let is_add_header = $("#isprotocol").prop("checked");
let ccc = $("#content").val();
let hhh = $("#txthostnumber").val();
let mac = "";
let p_type = $("#protocoltype").val();
let jjj = {
hostnumber: hhh,
mac: mac,
bytelist: ccc,
cmdtype: p_type,
isoriginal: is_add_header
};
$.ajax({
url: '/api/SendUDPPackage',
type: 'Post',
contentType: 'application/x-www-form-urlencoded',
data: jjj,
success: function(response) {
console.log(response);
// 将发送的内容也显示在接收区域
$("#touchuan_content").append("<div class='message-item' style='color: #4285f4;'>发送: " + ccc + "</div>");
$("#touchuan_content").scrollTop($("#touchuan_content")[0].scrollHeight);
},
error: function(xhr, status, error) {
console.log(error);
}
});
});
});
</script>
</body>
</html>