似乎紫猫用自己的插件和命令可以构建一个完整的中控系统 不错 看看能不能解决我自己的服务端定期刷新数据库的问题 不过老师实现的是本地中控 没有涉及到互联网中控 不过区别不大 无非就是服务端是在本地机器上还是网络空间上
QM[zm]04.01 网络共享数据之搭建PHP环境(VIP)
1. 下载phpstudy来搭建自己的php环境 测试能否正常访问php网页 能否正常登陆到数据库里面 个人习惯使用wamp
2. 注意 本地(局域网)中控 所有的脚本运行的设备需要在一个wifi下(直接看ip的前三个就知道了 或者更细致点看子网掩码是否也一致)
3. 原理很简单 脚本把数据提交给 服务端 服务端处理后把对应的信息反馈给脚本端 实现了脚本端和服务端的数据交互 这也是网络共享数据的基础 在此基础上可以开发中控或者其他的功能皆可
4. 把插件的demoo.php和sql.Php扔到网站根目录下
小知识:如何让wamp开启外网访问 或者目前而言开启局域网访问
原帖地址:https://blog.****.net/weixin_41692437/article/details/80527831
QM[zm]04.02 网络共享数据之初始化数据表(VIP)
本节课主要是介绍了 zm.NetDataInit 的作用
zm.NetDataInit "http://192.168.1.100/sql.php", "测试脚本"
它的作用是 访问局域网内的指定地址的sql.php网页接口 创建一个对应的表(上面命令就是创建一个叫测试脚本的表) 如果选择第三个参数 会顺便清空该表
注意:任何的网络共享数据操作之前必须要初始化下
Php源码:从php源码看 这个初始化很明显是创建了包含 id key value type四个字段的一个表 用来作为网络数据的中转站之用
注意:
1. 目前看按照视频上看 似乎它只能访问局域网(不确定) 对于网络空间的访问无效 因为很多网络数据库并不支持这样直接访问
2. 数据库的账号密码必须都是root root 不然该命令无法连接到数据库 导致后续的全面崩溃 比如wamp的默认账号密码账号为root 密码为空 这就很尴尬了
3. 数据库里面必须有个test数据库 不然操作依然会失败
4. 总结下 老师的插件使用必须要做不少的初始化工作 不然会很容易出现一些特殊情况 但是总体而言的确给了不懂网页制作的人一个省事的路子来搭建自己的中控
QM[zm]04.03 网络共享数据之设置数据(VIP)
zm.NetDataSet(键名, 键值[, 数据表名]) 没什么说的 只是把键值对扔到对应表里面 如果该脚本的key在数据库里面没有任何记录 那么就不是update 而是insert 下面是php源码
修正问题(解决):脚本对应的Id值是怎么来的 我原来的处理办法是每次脚本访问接口 会传递设备Id 然后在网络数据库里面查找 找到了则update 没有找到则insert 老师似乎没有如此的繁琐
不过想了想 这个只是一个 网络数据共享的功能 一个key对应一个数据库记录
QM[zm]04.04 网络共享数据之获取数据(VIP)
结果 = zm.NetDataGet(键名[, 数据表名][, 是否删除])
注意第三个参数 如果为true 那么读取到了该值后 数据库会自动把该条记录删除干净 再次读取就会为空了
注意一点: 每个key 对应数据库里面的一条记录 而不是我原来想的那样
QM[zm]04.05 网络共享数据之删除数据(VIP)
结果 = zm.NetDataDel(键名[, 数据表名])
没什么可说的 不过注意 没有返回值
QM[zm]04.06 网络共享数据之多台设备共享实例(VIP)
到了实例演示的部分了
自己的测试代码
UI代码:
界面1: { 综合: { 下拉框: { 注释:"初始选项是可选属性,默认值为0。模版中设置了三个选项,您可以根据需要增加或减少,注意各选项之间用逗号分隔。", 名称:"功能切换", 点击响应:"函数名1", 选项: [ "监控网络数据", "修改网络数据", "删除网络数据", ], 初始选项:0 }, }, }
源代码:
Dim 功能切换=ReadUIConfig("功能切换") Dim 网络数据库接口地址="http://192.168.0.102/sql.php" zm.NetDataInit 网络数据库接口地址, "测试数据库" If 功能切换 = 0 Then //无限显示当前字段内容 Dim 等级 = zm.NetDataGet("等级") Dim 昵称 = zm.NetDataGet("昵称") Dim 显示字符串="等级:["&zm.NetDataGet("等级")&"]\n昵称:["&zm.NetDataGet("昵称")&"]" Do 显示字符串="等级:["&zm.NetDataGet("等级")&"]\n昵称:["&zm.NetDataGet("昵称")&"]" ShowMessage 显示字符串 Delay 3000 Loop ElseIf 功能切换 = 1 Then //修改某个字段记录 zm.NetDataSet Dialog.InputBox("请输入要修改的的key"), Dialog.InputBox("请输入要修改的的value") ElseIf 功能切换 = 2 Then //删除某个字段记录 //Dialog.InputBox("请输入您的名字") zm.NetDataDel Dialog.InputBox("请输入要删除的key") End If