第一次使用web控制一个实体硬件,需要通过网页调用串口,摸索了一阵子,终于选定用python+php+jQuery+html实现了。

第一部分:web首页界面 index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>继电器调控测试</title>
<script src="/public/js/jquery.js"></script>
<script>
$(document).ready(function(){
$("input").each(function(){
$(this).bind("click",function(){
com($(this)[0].checked,$(this).attr("lu"))
})
})
})

function com(s,lu){
$.ajax({
type:'get',
async:true,
timeout : 20000,//20秒
url: "http://bsfx.longsunhd.com:60096/jdq.php?lu="+lu+"&s="+s,
data: "",
dataType: "html",
success: function(html){
}
});
}
</script>

</head>
<body>
<input type=checkbox on="FE 05 00 00 FF 00 98 35" off="FE 05 00 00 00 00 D9 C5" lu="0">第1路<br>
<input type=checkbox on="FE 05 00 01 FF 00 C9 F5" off="FE 05 00 01 00 00 88 05" lu="1">第2路<br>
<input type=checkbox on="FE 05 00 02 FF 00 39 F5" off="FE 05 00 02 00 00 78 05" lu="2">第3路<br>
<input type=checkbox on="FE 05 00 03 FF 00 68 35" off="FE 05 00 03 00 00 29 C5" lu="3">第4路<br>
<input type=checkbox on="FE 05 00 04 FF 00 D9 F4" off="FE 05 00 04 00 00 98 04" lu="4">第5路<br>
<input type=checkbox on="FE 05 00 05 FF 00 88 34" off="FE 05 00 05 00 00 C9 C4" lu="5">第6路<br>
<input type=checkbox on="FE 05 00 06 FF 00 78 34" off="FE 05 00 06 00 00 39 C4" lu="6">第7路<br>
<input type=checkbox on="FE 05 00 07 FF 00 29 F4" off="FE 05 00 07 00 00 68 04" lu="7">第8路<br>
<input type=checkbox on="FE 05 00 08 FF 00 19 F7" off="FE 05 00 08 00 00 58 07" lu="8">第9路<br>
<input type=checkbox on="FE 05 00 09 FF 00 48 37" off="FE 05 00 09 00 00 09 C7" lu="9">第10路<br>
<input type=checkbox on="FE 05 00 0A FF 00 B8 37" off="FE 05 00 0A 00 00 F9 C7" lu="10">第11路<br>
<input type=checkbox on="FE 05 00 0B FF 00 E9 F7" off="FE 05 00 0B 00 00 A8 07" lu="11">第12路<br>
<input type=checkbox on="FE 05 00 0C FF 00 58 36" off="FE 05 00 0C 00 00 19 C6" lu="12">第13路<br>
<input type=checkbox on="FE 05 00 0D FF 00 09 F6" off="FE 05 00 0D 00 00 48 06" lu="13">第14路<br>
<input type=checkbox on="FE 05 00 0E FF 00 F9 F6" off="FE 05 00 0E 00 00 B8 06" lu="14">第15路<br>
<input type=checkbox on="FE 05 00 0F FF 00 A8 36" off="FE 05 00 0F 00 00 E9 C6" lu="15">第16路<br>
<input type=checkbox on="FE 05 00 10 FF 00 99 F0" off="FE 05 00 10 00 00 D8 00" lu="16">第17路<br>
<input type=checkbox on="FE 05 00 11 FF 00 C8 30" off="FE 05 00 11 00 00 89 C0" lu="17">第18路<br>
<input type=checkbox on="FE 05 00 12 FF 00 38 30" off="FE 05 00 12 00 00 79 C0" lu="18">第19路<br>
<input type=checkbox on="FE 05 00 13 FF 00 69 F0" off="FE 05 00 13 00 00 28 00" lu="19">第20路<br>
<input type=checkbox on="FE 05 00 14 FF 00 D8 31" off="FE 05 00 14 00 00 99 C1" lu="20">第21路<br>
<input type=checkbox on="FE 05 00 15 FF 00 89 F1" off="FE 05 00 15 00 00 C8 01" lu="21">第22路<br>
<input type=checkbox on="FE 05 00 16 FF 00 79 F1" off="FE 05 00 16 00 00 38 01" lu="22">第23路<br>
<input type=checkbox on="FE 05 00 17 FF 00 28 31" off="FE 05 00 17 00 00 69 C1" lu="23">第24路<br>
<input type=checkbox on="FE 05 00 18 FF 00 18 32" off="FE 05 00 18 00 00 59 C2" lu="24">第25路<br>
<input type=checkbox on="FE 05 00 19 FF 00 49 F2" off="FE 05 00 19 00 00 08 02" lu="25">第26路<br>
<input type=checkbox on="FE 05 00 1A FF 00 B9 F2" off="FE 05 00 1A 00 00 F8 02" lu="26">第27路<br>
<input type=checkbox on="FE 05 00 1B FF 00 E8 32" off="FE 05 00 1B 00 00 A9 C2" lu="27">第28路<br>
<input type=checkbox on="FE 05 00 1C FF 00 59 F3" off="FE 05 00 1C 00 00 18 03" lu="28">第29路<br>
<input type=checkbox on="FE 05 00 1D FF 00 08 33" off="FE 05 00 1D 00 00 49 C3" lu="29">第30路<br>
<input type=checkbox on="FE 05 00 1E FF 00 F8 33" off="FE 05 00 1E 00 00 B9 C3" lu="30">第31路<br>
<input type=checkbox on="FE 05 00 1F FF 00 A9 F3" off="FE 05 00 1F 00 00 E8 03" lu="31">第32路<br>
<br>
<input type=checkbox on="FE 05 00 1F FF 00 A9 F3" off="FE 05 00 1F 00 00 E8 03" lu="32">全路<br>
</body>
</html>

第二部分 jdq.php
<?php
$_REQUEST[s]=($_REQUEST[s]=="true")?0:1;
$result=shell_exec("D:/Python/python.exe com.py $_REQUEST[lu] $_REQUEST[s]");

第三部分 COM.py
 
 from sys import argv
import serial
import string
import time
import binascii
import sys
import struct
import re
f,lu,s = argv

cm=[]
cm.append([[0xFE,0x05,0x00,0x00,0xFF,0x00,0x98,0x35],[0xFE,0x05,0x00,0x00,0x00,0x00,0xD9,0xC5]])
cm.append([[0xFE,0x05,0x00,0x01,0xFF,0x00,0xC9,0xF5],[0xFE,0x05,0x00,0x01,0x00,0x00,0x88,0x05]])
cm.append([[0xFE,0x05,0x00,0x02,0xFF,0x00,0x39,0xF5],[0xFE,0x05,0x00,0x02,0x00,0x00,0x78,0x05]])
cm.append([[0xFE,0x05,0x00,0x03,0xFF,0x00,0x68,0x35],[0xFE,0x05,0x00,0x03,0x00,0x00,0x29,0xC5]])
cm.append([[0xFE,0x05,0x00,0x04,0xFF,0x00,0xD9,0xF4],[0xFE,0x05,0x00,0x04,0x00,0x00,0x98,0x04]])
cm.append([[0xFE,0x05,0x00,0x05,0xFF,0x00,0x88,0x34],[0xFE,0x05,0x00,0x05,0x00,0x00,0xC9,0xC4]])
cm.append([[0xFE,0x05,0x00,0x06,0xFF,0x00,0x78,0x34],[0xFE,0x05,0x00,0x06,0x00,0x00,0x39,0xC4]])
cm.append([[0xFE,0x05,0x00,0x07,0xFF,0x00,0x29,0xF4],[0xFE,0x05,0x00,0x07,0x00,0x00,0x68,0x04]])
cm.append([[0xFE,0x05,0x00,0x08,0xFF,0x00,0x19,0xF7],[0xFE,0x05,0x00,0x08,0x00,0x00,0x58,0x07]])
cm.append([[0xFE,0x05,0x00,0x09,0xFF,0x00,0x48,0x37],[0xFE,0x05,0x00,0x09,0x00,0x00,0x09,0xC7]])
cm.append([[0xFE,0x05,0x00,0x0A,0xFF,0x00,0xB8,0x37],[0xFE,0x05,0x00,0x0A,0x00,0x00,0xF9,0xC7]])
cm.append([[0xFE,0x05,0x00,0x0B,0xFF,0x00,0xE9,0xF7],[0xFE,0x05,0x00,0x0B,0x00,0x00,0xA8,0x07]])
cm.append([[0xFE,0x05,0x00,0x0C,0xFF,0x00,0x58,0x36],[0xFE,0x05,0x00,0x0C,0x00,0x00,0x19,0xC6]])
cm.append([[0xFE,0x05,0x00,0x0D,0xFF,0x00,0x09,0xF6],[0xFE,0x05,0x00,0x0D,0x00,0x00,0x48,0x06]])
cm.append([[0xFE,0x05,0x00,0x0E,0xFF,0x00,0xF9,0xF6],[0xFE,0x05,0x00,0x0E,0x00,0x00,0xB8,0x06]])
cm.append([[0xFE,0x05,0x00,0x0F,0xFF,0x00,0xA8,0x36],[0xFE,0x05,0x00,0x0F,0x00,0x00,0xE9,0xC6]])
cm.append([[0xFE,0x05,0x00,0x10,0xFF,0x00,0x99,0xF0],[0xFE,0x05,0x00,0x10,0x00,0x00,0xD8,0x00]])
cm.append([[0xFE,0x05,0x00,0x11,0xFF,0x00,0xC8,0x30],[0xFE,0x05,0x00,0x11,0x00,0x00,0x89,0xC0]])
cm.append([[0xFE,0x05,0x00,0x12,0xFF,0x00,0x38,0x30],[0xFE,0x05,0x00,0x12,0x00,0x00,0x79,0xC0]])
cm.append([[0xFE,0x05,0x00,0x13,0xFF,0x00,0x69,0xF0],[0xFE,0x05,0x00,0x13,0x00,0x00,0x28,0x00]])
cm.append([[0xFE,0x05,0x00,0x14,0xFF,0x00,0xD8,0x31],[0xFE,0x05,0x00,0x14,0x00,0x00,0x99,0xC1]])
cm.append([[0xFE,0x05,0x00,0x15,0xFF,0x00,0x89,0xF1],[0xFE,0x05,0x00,0x15,0x00,0x00,0xC8,0x01]])
cm.append([[0xFE,0x05,0x00,0x16,0xFF,0x00,0x79,0xF1],[0xFE,0x05,0x00,0x16,0x00,0x00,0x38,0x01]])
cm.append([[0xFE,0x05,0x00,0x17,0xFF,0x00,0x28,0x31],[0xFE,0x05,0x00,0x17,0x00,0x00,0x69,0xC1]])
cm.append([[0xFE,0x05,0x00,0x18,0xFF,0x00,0x18,0x32],[0xFE,0x05,0x00,0x18,0x00,0x00,0x59,0xC2]])
cm.append([[0xFE,0x05,0x00,0x19,0xFF,0x00,0x49,0xF2],[0xFE,0x05,0x00,0x19,0x00,0x00,0x08,0x02]])
cm.append([[0xFE,0x05,0x00,0x1A,0xFF,0x00,0xB9,0xF2],[0xFE,0x05,0x00,0x1A,0x00,0x00,0xF8,0x02]])
cm.append([[0xFE,0x05,0x00,0x1B,0xFF,0x00,0xE8,0x32],[0xFE,0x05,0x00,0x1B,0x00,0x00,0xA9,0xC2]])
cm.append([[0xFE,0x05,0x00,0x1C,0xFF,0x00,0x59,0xF3],[0xFE,0x05,0x00,0x1C,0x00,0x00,0x18,0x03]])
cm.append([[0xFE,0x05,0x00,0x1D,0xFF,0x00,0x08,0x33],[0xFE,0x05,0x00,0x1D,0x00,0x00,0x49,0xC3]])
cm.append([[0xFE,0x05,0x00,0x1E,0xFF,0x00,0xF8,0x33],[0xFE,0x05,0x00,0x1E,0x00,0x00,0xB9,0xC3]])
cm.append([[0xFE,0x05,0x00,0x1F,0xFF,0x00,0xA9,0xF3],[0xFE,0x05,0x00,0x1F,0x00,0x00,0xE8,0x03]])
cm.append([[0xFE,0x0F,0x00,0x00,0x00,0x10,0x02,0xFF,0xFF,0xA6,0x64],[0xFE,0x0F,0x00,0x00,0x00,0x10,0x02,0x00,0x00,0xA7,0xD4]])
#需要将硬件RTU格式命令(十六进制)如 FE 05 00 00 FF 00 98 35,转成字节码形式,即在前面加0x,变成数组形式[0xFE,0x05,0x00,0x00,0xFF,0x00,0x98,0x35]输送给硬件串口,以实现指令过程。

try:
ser = serial.Serial('COM3', 9600)  #需要连接串口线后,通过在硬件管理里查看串口的名字(这里是COM3)。
except:
print('open serial failed.')
exit(1)

cmd_send=cm[int(lu)][int(s)]
s=ser.write(cmd_send)
print(cmd_send)
ser.close()

转载于:https://www.cnblogs.com/yzs1013/p/7761835.html

网页控制聚英继电器JY-DAM3200代码相关推荐

  1. esp8266舵机驱动_使用Arduino和ESP8266通过网页控制舵机

    在本文中,我们将尝试通过网页来控制舵机,通过滑动网页上对应的滑块,促使舵机做相应地运动.这样的尝试在做一些远程开关或者远程控制的小设备时非常有用,比如把 宠物定时喂食器 改造成网页控制的也是可以实现的 ...

  2. 机智云小程序启蒙:WebSocket网页控制

    机智云小程序启蒙:WebSocket网页控制 机智云Web版的JS远程控制设备,是调用了机智云开放的Open API和WebSocket API来实现的.这个是设计小程序最好的基础,也可以使无安卓设备 ...

  3. MQTT基础:本地网页控制LED灯(SIOT+MQTT+掌控板)

    前言 该项目是在本地搭建一个MQTT服务器,网页连接MQTT客户端,并发布消息到对应topic到MQTT服务器,掌控板连接WiFI,与SIOT处于同一局域网.当网页的topic发布消息(按键交互之类的 ...

  4. esp8266烧录Html文件,实现内置网页控制设备!

    代码地址如下: http://www.demodashi.com/demo/14321.html 一.前言: 这个月也快结束了,时间真快,我服务器知识自学依然在路途中,这几天听到热点网页配置esp82 ...

  5. nginx服务器硬件配置要求_聚英国际|Filecoin网络对服务器硬件要求及工作流程分析...

    IPFS&Filecoin--2020年最受瞩目的明星级项目.Filecoin作为一个去中心化存储项目,落地实体才能让生态发展得越长远,随着生态的扩大,真正应用上的存储需求被提出,Fileco ...

  6. 通过网页控制嵌入式设备

    什么是CGI? CGI即通用网关接口(Common Gateway Interface),是一个Web服务器主机提供信息服务的标准接口.通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服 ...

  7. ESP32作为服务器,使用网页控制LED小灯

    ESP32作为服务器,使用网页控制LED小灯 项目描述 ESP32-S开发板加入局域网,使用platformIO编写好ESP32的代码后,编译下载到ESP32中,访问ESP32的IP地址,使用网页控制 ...

  8. ur机械臂 + robotiq gripper + robotiq ft sensor + gazebo + 连接真实机械臂 + 网页控制

    ur机械臂 + robotiq gripper + robotiq ft sensor + gazebo + 连接真实机械臂 + 网页控制 仓库地址:[ur_ws](https://github.co ...

  9. 【聚英云农】自动化节水灌溉系统

    在倡导环保节能的现在,对传统农业的灌溉量.利用率提出了新挑战.节水灌溉,是目前严峻的农业用水浪费形式,当下主流的农业灌溉模式,缓解水资源不足的方式之一.目前常用的节水灌溉方式主要有滴灌.喷灌.微喷灌等 ...

最新文章

  1. JavaWeb--过滤器
  2. 设计模式(行为型模式)——备忘录模式(Memento)
  3. Fedora 26 将助力云、服务器、工作站系统
  4. 服务器虚拟化架构设计,服务器虚拟化与数据中心I/O网络架构设计
  5. Redis实现分布式Session管理
  6. 单例模式android应用场景,应用最广的模式-单例模式(结合Android源码)
  7. 面向对象(匿名内部类重写多个方法调用)
  8. fullgc频繁的原因_系统运行缓慢,CPU 100%,Full GC次数过多,这一招帮你全搞定
  9. java 字符串转dom对象_xml类型的字符串转换为Dom对象
  10. 轻量级 HTTP(s) 代理 TinyProxy
  11. 想赚钱,需要脑袋能开窍
  12. 从 SGD 到 Adam —— 深度学习优化算法概览(一) 重点
  13. 关于绕开百度文库复制限制的那档子事
  14. vue改页面顶部浏览器标题栏图标、名称和地址栏详细教程
  15. 让Myeclipse10支持Mac OSX – Retina显示屏
  16. iOS Safari扩展开发构建版本时出现的常见问题的解决方法
  17. 2018年福建省计算机二级acess试题,2018年计算机二级Access试题及答案(一)
  18. 基于U-Net+残差网络的语义分割缺陷检测
  19. 干掉Intel、AMD?国产处理器架构都有哪些?
  20. 主成分回归python实现

热门文章

  1. ARM 指令集 VS Thumb 指令集
  2. xcode清除最近打开的文件列表
  3. React开发(257):react项目理解 ant design model提示问题
  4. [react] 在react中页面重新加载时怎样保留数据?
  5. [react] 有用过react的Fragment吗?它的运用场景是什么
  6. [react] 请说说什么是useImperativeHandle?
  7. React开发(214):React中的Fragments
  8. react(95)--外部定义变量
  9. 前端学习(3152):react-hello-react之初始化react
  10. 前端学习(3051):vue+element今日头条管理-表格组件基本使用