自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GKoSon的博客

活捉一枚野生程序猿

  • 博客(1009)
  • 资源 (15)
  • 收藏
  • 关注

原创 mongoose培训

【代码】mongoose培训。

2022-08-30 17:13:21 632 1

原创 灯语代码准备

这样可以执行gcc main.c。或者在main.c前面写成。可以在vscode执行。

2022-08-26 15:24:28 319

原创 单片机延时函数us

测试的时候 万用表鳄鱼夹----一排口的COM标识的2个随便 都是GND。尖头---PWR(V)的靠近 近距离边缘的LED。这个函数 执行一次 预计延时是3us。那么12*1/40=0.3us。基本就是3US的 符合要求!看图我们是40MHZ的晶振。...

2022-08-12 15:40:38 954

原创 学习ethernetIP协议

看文档百度翻译 文档。

2022-08-04 17:48:19 293

原创 ESP32蓝牙主机nus服务

宏定义是 一个数组 成员是1个 也就是1 0 我把全局的加进去TX RX齐活了!发送函数 不要额外的变量了 就是全局的 放进去!代码/* * SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Unlicense OR CC0-1.0 *//***************************************...

2022-05-03 21:38:09 452

原创 ESP32定时器

ESP32 之 ESP-IDF 教学(四)——高分辨率软件定时器(esp_timer)_Augtons正(单片机)的博客-CSDN博客_esp32定时器kESP32 之 ESP-IDF 教学(四)——高分辨率软件定时器(esp_timer)_Augtons正(单片机)的博客-CSDN博客_esp32定时器k就是这个效果放在mian.即可timer1Init();#include "esp_timer.h"esp_timer_handle_t timer1;.

2022-05-02 17:21:23 1642 1

原创 ESP32蓝牙主机NUS-收发消息

参考问题遗留-ESP32主机-52840从机_GKoSon的博客-CSDN博客现在情况好像不同 了代码1---此时esp32可以使能从机 可以收到从机的nus消息但是主机准备发消息的时候会失败E (32327) KOSON: A: acked ----311--write char failed, error status = 3这是因为ESP的源码只给出一个服务一个特征值 而nus是有2个直接发送的话 那个函数 的 一个成员 是需要句柄的我用的是TX的 而用RX的才可以

2022-05-02 11:43:53 816

原创 树莓派主机测试程序

/*2022/04/26 07:56:11 Failed Scan Resource Not Ready2022/04/26 07:56:11 Scanning...692022/04/26 07:56:11 Failed Scan Resource Not Ready2022/04/26 07:56:11 Scanning...702022/04/26 07:56:11 Scanned name M_IZAR_TEST MAC DF:5F:34:32:3A:442022/04/26 07:5.

2022-04-28 20:43:50 2503

原创 调试ESP32蓝牙

1--一个从机都没有 扫描时间到了 就停止了 case ESP_GAP_SEARCH_INQ_CMPL_EVT: ESP_LOGI(HCI_TAG, "X ESP_GAP_SEARCH_INQ_CMPL_EVT 程序会截至到这里 表示扫描的时间到了 一个满足条件的从机都没有扫到"); esp_ble_gap_start_scanning(10);//我再次开始扫描 这里是10S 使用串口工具看 就是实打实的10S 如果还是没有满足条件的从机

2022-04-25 17:55:15 1115

原创 通道满了 继续往里面发 会如何?

答案:消息不会丢 有人消费消息了 后面的消息会继续发进去案例先放后拿老铁没毛病!package mainimport "fmt"func main() { ch := make(chan int, 5) for i := 0; i < 5; i++ { ch <- i } close(ch) // 关闭ch for i := 0; i < 10; i++ { e, ok := <-ch fmt.Printf("%v, %v..

2022-04-21 16:02:03 207

原创 Github学习

1---释放一个什么样的形式 看它的readme2--简单的代码 从机+广播+服务 不要本地代码3--封装bash 它的shell很不错4--怎么沟通的样子GitHub - DiscreteTom/ble-raspi-manager: Manage Raspberry Pi using Bluetooth Low Energy它没有放在里面 全局DiscreteTom我们是module mcubemems.com/m_izar_rpi_gwgo 1.16

2022-04-19 10:04:18 153

原创 logrus的使用

基础1package mainimport ( log "github.com/sirupsen/logrus")func main() { log.WithFields(log.Fields{ "animal": "dog", }).Info("一条舔狗出现了。") log.SetLevel(log.TraceLevel) //输出级别 //log.SetReportCaller(true)//行号 //log.SetFormatter(&log.JSONForm

2022-04-18 20:07:06 360

原创 Go套路 Scan 轮询变中断

V1.0package mainimport ( "fmt" "time")func loopcheck(ch chan bool) { var i int = 0 for { time.Sleep(time.Second) i++ if i == int(2) { ch <- true } }}func main() { ch := make(chan bool) go loopcheck(ch) ticker_period := 1000

2022-04-18 11:47:15 329

原创 Go基于MAP数据结构生产-消费通讯

当前写法 不够高级 暂时当前package bwmaptype Data struct { Timeout uint8 Ctrl_cmd uint8 Version uint32}var CtrlCMD map[string]Datafunc init() { CtrlCMD = make(map[string]Data, 5) } /*完成[6]byte--->[]byte--->string*/ var tmp []byte tmp = cc.

2022-04-17 10:39:13 343 1

原创 Go FIFO

https://github.com/foize/go.fifo克隆到本地根据readme写代码go test它是OK的

2022-04-15 21:28:54 328

原创 muka/go-bluetooth 眼镜蛇

https://github.com/muka/pi-wifi.git/*本地IP 已经知道了 ws的echo*/眼镜蛇https://github.com/muka/go-bluetooth.git怎么使用眼镜蛇图片 框架module github.com/muka/go-bluetooth认真阅读MUKA的readme 有很多宝贝!宝贝1--眼镜蛇cd _examplesgo run main.go# print available example commands

2022-04-15 10:07:59 514

原创 biluz复位HCI接口

问题:树莓派做蓝牙主机 去连接从机时候 容易失败连接失败 就重现开始扫描 在连接希望在失败以后做一个复位蓝牙的动作如何复位一次hci接口?func Reset(adapterID string) error { err := Down(adapterID) if err != nil { log.Warnf("Down failed: %s", err) } return Up(adapterID)}怎么找到的?\muka\hw\linux\l...

2022-04-13 20:41:22 219

原创 Go编程 技巧 for range 和channl(除了select的另外一种)

案例:notify_ch, err := tx.EnableNotifications(func(value []byte) {在一个通道轮询 赌赛的 一旦通道有数据 拿马上拿出来 直到通道关闭 它也就死循环结束从而消亡了【相比较 select需要一个关闭条件的 这个不需要条件 通道关闭 它自动就关闭了go程自动结束】for range会一直读取数据直到,chan关闭。无缓冲chan相当于一个开关,不存储数据,同步阻塞类型,如果没有for rang不断读取数据,c...

2022-04-12 16:40:29 1607

原创 make(chan int, 1) 和 make (chan int) 的不同--回答之前select不能自己给自己发消息的问题

奇怪问题:通道的数目本次提交的代码 键盘输入8 可以正常ACK继续 键盘输入8 可以正常ACK继续 键盘输入8 可以正常ACK但是键盘输入1 云平台进去以后 就不可以 而且8也不可以!修改14行var Ble = tBle{ Status: make(chan int, 1),}就可以成功了!为什么make(chan int, 1) 和 make (chan int) 的不同无缓冲区channel用make(chan int) 创建的chan, 是无缓冲区的, se...

2022-04-11 17:04:36 132

原创 go build 通过文件名后缀实现不同平台的条件编译操作

go build 可以通过标签或者文件名的后缀来提供条件编译,我选择简单的---通过文件名的后缀来提供条件编译文件命名约定可以在go build 包里找到详细的说明,简单来说,就是源文件包含后缀:_$GOOS.go,那么这个源文件只会在这个平台下编译,_$GOARCH.go也是如此。这两个后缀可以结合在一起使用,但是要注意顺序:_$GOOS_$GOARCH.go,不能反过来用:_$GOARCH_$GOOS.go例如下面截图,是go的bluez的实现这些文件定义了对应不同平台下是否需要编译。

2022-04-11 14:54:56 477

原创 Go日志系统

上一篇文章基本是炮灰准备高性能开始GitHub - rs/zerolog: Zero Allocation JSON Logger遇到同样的问题 我run readme的代码 无法下载OKpackage mainimport ( "github.com/rs/zerolog" "github.com/rs/zerolog/log")func main() { // UNIX Time is faster and smaller than most tim.

2022-04-10 01:09:03 889

原创 Go编程 函数调用2和风格-包里面.和收纳到结构体

函数调用的两种风格1--类似OTA包这种 点 调用2--把函数绑定在结构体里面去 因为结构体里面都是数据成员 在外面人为加入成员函数案例:type CMD_INFO struct { // This struct is created for storage information of each data type Cmd uint16 Len uint16 Name string //convenience for log and debug}var SET_GW_DEF.

2022-04-09 13:40:41 157

原创 Go编程 利用键盘输入模块做生产-消费测试

小结:var cmd = make(chan byte)// cmd := make(chan byte)eventhandle(uint16(t)) //强转//定义函数指针type dowhat func()//定义结构体type event struct { Type uint16 Func dowhat}//var q [3]int = [3]int{1, 2, 3}//对的//var q [3]int = {1, 2, 3}//不对必须强转var e...

2022-04-09 10:41:45 146

原创 脚本 杀死进程

每天一个linux命令(43):killall命令 - peida - 博客园killall -9 bash和上图效果一样!!!被推出了!!!Linux系统中的killall命令用于杀死指定名字的进程(killprocessesbyname)。我们可以使用kill命令杀死指定进程PID的进程,一般是需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。killall[参数][进程名]改进1---killal...

2022-04-08 19:23:36 2026

原创 【无标题】

Go语言基础之并发 | 李文周的博客入门必看测试package mainimport ( "fmt")// Producer 返回一个通道// 并持续将符合条件的数据发送至返回的通道中// 数据发送完成后会将返回的通道关闭func Producer() chan int { ch := make(chan int) // 创建一个新的goroutine执行发送数据的任务 go func() { for i := 0; i < 5; i++ { //fmt

2022-04-08 15:26:00 114

原创 Go 事件驱动 实现事件的晌应和处理

在C语言里面也有 很多这样的代码 这里go版本基本观点:Go语言可以将类型的方法与普通函数视为一个概念,从而简化方法和函数混合作为回调类型时的复杂性。这个特性和 C# 中的代理(delegate)类似,调用者无须关心谁来支持调用,系统会自动处理是否调用普通函数或类型的方法。测试代码:package mainimport "fmt"// 声明一个结构体type class struct {}// 给结构体添加Do方法func (c *class) Do(v

2022-04-07 20:43:59 705

原创 前置校验web 定时关闭弹窗

问题:ZIP上传完毕以后 这个控件非常干净它已经完成了它的使命!但是现在我们要越俎代庖了!需要验证ZIP文件是不是OK 告诉UI需要提示刷新或者等待1--把后面的校验搬到前面OTA需要独立一个接口做chekc反馈2--怎么自动关闭UI弹窗html弹窗自动关闭,js弹窗提醒后自动关闭弹窗实现方法_邓炯源的博客-CSDN博客这个思路 刚刚做了隐藏进度条!但是时绕弯子63-Alert 自动消失-重写弹窗_Dream_by_Dream的博客..

2022-04-07 15:27:09 196

原创 树莓派CM4开机准备开发环境

微信 GKoSon攻城狮金华前面两篇文章描述树莓派4B从开箱到开机本文可以说是前面两篇文章的小结同时本文做活体测试的不再是树莓派4B而是树莓派的运算模组CM4为什么选择CM4做开发?因为它有独立的天线!第一部分 商品介绍CM4商品链接:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.20722e8dinxeHI&id=629526017603&_u=pvcquvh7e8a底板商品链...

2022-04-06 14:59:06 1928

原创 GO修改直线代码为事件驱动/蓝牙主机测试

package mainimport ( "fmt" "time")type WsManager struct { chan_disconnect chan bool chan_reportNewCome chan string chan_reportStatus chan string chan_reportHexData chan []byte chan_issueNodeCmd chan string chan_issueNodeOta chan string.

2022-04-05 21:11:57 459

原创 Go通道关闭以后还能继续使用吗

Go语言关闭通道后继续使用通道_月亮+六便士的博客-CSDN博客使用close()来关闭一个通道:close(ch)关闭的通道依然可以被访问,访问被关闭的通道将会发生一些问题。1--给被关闭通道发送数据将会触发panic2---从已关闭的通道接收数据将不会发送阻塞测试代码func rx() { //defer close(Wsm.Chan_ReadErr)//不要关闭 一旦关闭 以后不能使用了 for { mt, message, err := Wsm.WS_C

2022-04-05 20:00:36 616 1

原创 GO编程 利用interface传参(正向/反向)

问题:一个函数 调用它的时候 参数的传入 可能是string也可能是[]byte需要一个多态的办法处理怎么办?func tx(ws_conn WS_CONN, text string) error { ws_conn.Lock.Lock() defer ws_conn.Lock.Unlock() return ws_conn.C.WriteMessage(1, []byte(text)) //1-websocket.TextMessage 写死}它的调用是tx(...

2022-04-05 18:48:36 1419 1

原创 Go操作LINUX 系统信号

1--基础GO诸塞函数package mainimport ( "fmt" "time")func main() { done := make(chan bool) go func() { time.Sleep(2 * time.Second) fmt.Println("send") done <- true }() <-done fmt.Println("exiting")}主程序不是for{}或者time.Sleep毒蛇的而是通道毒蛇的

2022-04-03 16:58:09 2008

原创 Go编程程序传参的控制/值和址

案例 运行任务 传一个参数进去 这个任务时死循环 希望running的时候还可以修改这个参数不可以的package mainimport ( "fmt" "time")func main() { var num int = 4 go m_ble_task(num) time.Sleep(3 * time.Second) num = 5 time.Sleep(3 * time.Second)}func m_ble_task(conn_limit int) { for

2022-04-02 11:00:33 430

原创 Go编程 OTA解耦

var wg sync.WaitGroupwg.Add(2)--数据总量是2wg.Done()--执行一次数据减1wg.Wait()--等到数据减到0问题:WEBUI完成下载以后的弹窗WIN10可以Pi不行发现是最后的这个函数有问题那么就不在内部调用了用通讯触发源码:func http_upload(writer http.ResponseWriter, request *http.Request) { log.Printf("[http_upload] start\r\n")...

2022-04-02 10:26:21 260

原创 树莓派WEB-进度条问题颜色

.progress { padding: 6px; background: rgba(0, 0, 0, 0.5);/* background: #000; 这里是黑色 最后多一个a是透明度 半黑*/ border-radius: 6px;/*矩形框框的圆角 */ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px rgba(255, 255, 255, 0.08);/*阴影*/}最后修改.progress-bar {...

2022-04-02 10:24:45 132

原创 GO引用包

当前状态12module github.com/GKoSon/zipgo 1.17require github.com/looklzj/zip v0.0.0-20200513090408-42298eb91930require ( github.com/alexmullins/zip v0.0.0-20180717182244-4affb64b04d0 // indirect golang.org/x/crypto v0.0.0-20220214200702...

2022-03-25 17:23:16 747

原创 文件下载进度条

问题:win10run我的程序很好 但是PI跑的话比较慢优化用户体验参考https://studygolang.com/articles/26441?fr=sidebar我自己的一个下载链接http://www.ibinhub.com/upload/1487627177.bin很快我自己测试OK但是怎么在UI显示?继续package mainimport ( "fmt" "io" "net/http" "os")func main() { fileUrl

2022-03-18 10:52:21 342 1

原创 git忽略文件OTA

一个问题git来打包 如图$ git init$ git add .$ git commit -m "1"这样把.git 拿走 去别处 也可以还原但是 我不要这个文件!要额外出去!建立 .gitignore文件写一句话 zip_img就好了它不会参加打包!$ git reset --hard HEAD...

2022-03-17 12:12:35 98

原创 树莓派OTA脚本

第一步 死循环 1秒钟输出一次文件是1.sh 或者 1.bash 都是可以的 执行bash 1.sh#!/system/bin/shwhile truedo echo "HELLO WORLD" sleep 1done第二步 死循环一直监视 一旦出现某个任务 就kill掉#!/system/bin/shwhile truedo #echo "HELLO WORLD" gw_ps=$(pgrep -f rpi_gw) i.

2022-03-17 11:31:57 1461

原创 BLE-广播-公司名字company-identifiers

引言在蓝牙广播包的字段中有一个小字段 --公司ID它旨在用一个数字标识一个公司比如1表示诺基亚 6表示微软8表示摩托罗拉等本文将描述获得这个对应表的姿势​理论官网https://www.bluetooth.com/specifications/assigned-numbers/https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/..

2022-03-16 18:28:17 1268

iso15693Read.c

针对15693协议的NFC卡-ST25TV的操作 如果有开发需求可以参考 或者联系我

2022-01-12

麒麟座IIC测试AT24C02RET6.zip

通过中国移动的麒麟座开发板STM32F103软件模拟IIC读写板载的AT24C04测试的读写 基本工程--US延时--IIC模块--基于设备的对接层 含有git 和一个TOUCH的IICzip

2020-01-22

TOUCH-KING2.zip

OTA范例 现在成功完成自己的优化 保证SIM800C高性能的下载 成功率非常高 速度非常快 每次都是连接TCP执行下载

2019-11-21

TOUCH-KING.zip

自己做的OTA工程 包括BOOT工程 APP工程 合并的脚本 目前的这个HTTP下载思路比较独特它是SIM800C做一个HTTP下载部分 此后拿去头部在KFIFO中读写 成功率不是很好 打算后面优化这里

2019-11-20

统一蓝牙协议规范.docx

TLV的协议文档 很多场合都可以用 开始文档写好就可以做SDK了

2019-09-29

nanopb-执行完毕.C.H文件-3个文件

一个nanopb-0.3.9.3-windows-x86测试案例 如果编译出来 和我的.C.H一样 说明你成功了

2019-09-17

STM32-KEIL分散加载范例

以前看到IAR可以做 linux内核也可以做,一直以为是一个未解之谜,比如一个数组ARR[10]注意的话,你以后在每个模块.C.H用的时候用ARR[1] ARR[4]是不能在空白地方作为全局变量的 必须在函数内部 而 我们需要的是在空白地方做全局变量!分散加载就是这个技术!附件是我KEIL成功的!非常顺利,因为我从RTT源码里学习的

2019-04-24

W25Q64内部结构图

W25Q64内部结构图 方便快速管理内存 就像STLINK提供的工具一样

2019-04-09

STM32位带参考programming manual

HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin,GPIO_PIN_SET);//亮 这样的操作是库函数,试试位带吧。STM32F103有文章已经成功,但是L471貌似不可以,它GPIO的地址不在区间内!!但是可以自己写*p1=((uint16_t)0x0800);//不亮 看我文章吧

2018-12-26

NXPR663官方文档

NXP官网已经更新了,但是新包里面没有V2.0的描述,这个包是旧版本的,反而看的比较清楚。针对RC663开发有帮助

2018-12-05

STM32L471_HAL_SPI1_W24Q64读写代码

STM32L471_HAL_SPI1_W24Q64读写测试 之前都是标准库写的,这次换成了HAL库 可以看到风格是MX生成代码 然后搬运到对应的模块的地方

2018-11-14

STM32L471用户手册Reference manual

用户手册 比如在最后可以表达#define CHIP_ID_START 0x1FFF7590 #define CHIP_FLASHSIZE_START 0x1FFF75E0 完成芯片信息查询

2018-11-14

BM77数据手册的指令

bm77_read_mac(uint8_t *mac) bm77_write_mac(mac); 抽象2个函数 读写MAC地址

2018-11-12

M1卡读写上位机开发库函数说明文档

读写M1的3个流程,寻卡--防冲突--选卡 该文档指导库函数中返回值的意义SAK。这是最新版,增加了UID白卡的操作函数

2018-11-06

BB0906蓝牙协议

BB0906蓝牙模块,本文描述各种收发指令。安卓是bm77的设备使用蓝牙3.0协议spp,0906使用的是ble协议。

2018-10-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除