# pi4b-goweb **Repository Path**: koson/pi4b-goweb ## Basic Information - **Project Name**: pi4b-goweb - **Description**: 跑在树莓派上的小webUI 通过UI操作本地文本文件 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2022-03-11 - **Last Updated**: 2022-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 项目意义: 做一个WEB页面 通过UI的操作 实现对本地配置文件的读写 该程序跑在树莓派上 情况A> 树莓派做一个路由器 树莓派IP是192.168.50.1 你的PC或者手机接入这个路由器你的IP可能是 192.168.50.X 你操作 http://192.168.50.1:8079/ 这个UI完成树莓派本地文件的读写 情况B> 树莓派和你的PC都在一个路由器下面 树莓派IP是10.60.32.22 你PC的IP是10.60.32.24 你操作 http://10.60.32.22:8079 这个UI完成树莓派本地文件的读写 项目来源: 1---把网关代码仓库的文件夹config剪切出来 自己写main 直接run失败 提示如下 package main import ( "config/config" ) func main() { config.Start() } [Running] go run "c:\Users\Koson.Gong\Desktop\WEB\main.go" main.go:4:2: package config/config is not in GOROOT (C:\go\src\config\config) 解决: PS C:\Users\Koson.Gong\Desktop\WEB> go mod init github.com/GKoSon/myweb PS C:\Users\Koson.Gong\Desktop\WEB> go mod tidy 此时我们做了mod 那么应用外面的包就是路径+报名 我的路径是 github.com/GKoSon/myweb package main import ( "github.com/GKoSon/myweb/config" ) func main() { config.Start() } 此时可以run 2--怎么进去 树莓派说明书是http://192.168.50.1:8079/ 因为这是它的IP地址 我运行在自己本地PC那就是自己用自己Ip ipconfig IPv4 地址 . . . . . . . . . . . . : 10.60.32.22 http://10.60.32.22:8079/ 可以进去 http://10.60.32.22:8079/admin 可以用代码写的密码进去 user := []byte("izar") passwd := []byte("53029625") 3--直接点击一下 上次写的 使能详细LOG的功能按键 看到vscode有输出 我准备一个文件在本地 config.json 在run一次 可以看到VSCODE log输出正常 但是 config.json 文件没有变化 因为下面的接口我没有实现 WriteToConfig(detail_log_key, enable_log) 正式开始任务: 做一个按键 可以把ZIP文件上传进来 我已经修改HTML 可以看到一个按键 问题1--怎么显示的中文? 问题2--按键以后的操作? 2022/03/22 准备做进度条 参考 https://blog.csdn.net/weixin_42381351/article/details/123569244 的评论 文章的code直接拿过来 它是分步去获得文件的 于是获得了进度 现在cmd或者VSCODE可以看到有log输出 我自己加了一句话 257 行 io.WriteString(w, string(int(p))) 它为什么没有在webui展示出来? 2022/03/24 WIN10测试步骤: 1-拉取代码git clone git@gitee.com:koson/pi4b-goweb.git 2-(非必要)拉取依赖(go mod init XX // go mod tidy)开始编译go build main.go 3-使用cmd黑框框执行exe文件 \pi4b-goweb>main.exe 4-查询本机ip ipconfig 我的是手机热点 192.168.43.196 5-打开192.168.43.196:8097 或者192.168.43.196:8099/admin (izar/53029625) 6-最下的框框测试上传ZIP文件 它在本机执行 是一个文件copy的效果 7-main是直接在PI运行的 追加JS+HTML控制进度条可见性 https://www.cnblogs.com/yxpblog/p/4231835.html 追加自己文章 定时关闭弹窗 任意控制弹窗 需要前置校验文件 https://blog.csdn.net/weixin_42381351/article/details/124012682 gitee静态网页开发视频PI-OTA.mp4 百度网盘mcube文件夹 本次测试OTA的通道 2中方式 当前的做法是 ota.OtaSetup <- "www.baidu.com" func Task() { for { select { case url := <-OtaSetup: fmt.Println("HTTP OtaStart %s", url) } } } go ota.Task() 三部分 生产--消费 把一个石头丢到河里 消费也可以是for rang 2022/04/22 增加文件操作代码进来 目前就是测试 计划是单独做一个文件和另外一个工程一起使用 两个进程通过文件交互! 意义:设备程序panic的时候网页会挂死 看不到进程状态 OTA以后是404找不到 我需要一个独立的服务 就是它! 操作JS 【处理MAP写文件的时候没有换行】 https://www.csdn.net/tags/MtTaEgxsNTE4NDEyLWJsb2cO0O0O.html 写一个MAPFILE函数 2022/05/13 准备启用这个项目 完成分离 它就是文本文件的展示 只是写文件 gw_hostname 全局这个 我已经全部明白了! 思路就是 文件1--独立写参数 2--如何读取参数 http_get_config---mux.HandleFunc("/config", http_get_config) window.addEventListener("load", function (event) { let oReq = new XMLHttpRequest(); oReq.open('GET', '/config'); function reqListener () { 就是一打开 就执行这个函数 oReq.open('GET', '/config'); 然后做了一个回调在监听 回答 reqListener 一旦 http_get_config 有回答 就会赋值