酸汤面的串口

从官方的demo来看,串口分为ComDMA、ComIT、ComPolling三个例程,字面意思是DMA、中断、轮询。
其中还有个球猫老师早就知道空闲中断,就是闲得就中断...

建立一个叫Echo的工程,打开串口中断,确认115200-N-8-1,还得打开debuger的自动reset and run

uint8_t usart_rx_buffer[128];

HAL_UART_Receive_IT(&huart2, (uint8_t*)usart_rx_buffer, 1);  

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)  
{  
    if(huart ->Instance == USART2){  
        printf("%c",usart_rx_buffer[0]);  
        HAL_UART_Receive_IT(&huart2, (uint8_t*)usart_rx_buffer, 1);  
    }  
}

- 阅读剩余部分 -

frp很好玩,球猫说的,内网穿透

官网地址
https://github.com/fatedier/frp
下载地址
https://github.com/fatedier/frp/releases
服务端配置

wget https://github.com/fatedier/frp/releases/download/v0.34.0/frp_0.34.0_linux_amd64.tar.gz
tar -xvf frp_0.34.0_linux_amd64.tar.gz

可以建立一个frps_xxx.ini的配置文件

[common]
bind_port = 4001
dashboard_addr = 0.0.0.0
dashboard_port = 4002
dashboard_user = admin
dashboard_pwd = password
enable_prometheus = true
log_file = ./frps_xxx.log
use_encryption = true
use_compression = true
authentication_method = token
token = asdasd

然后用./frps -c ./frps_xxx.ini &来启动服务端
需要开放4001端口给外网,可以通过http://ip:4002访问网页

客户端仅需要frpc和frpc.ini就可以

[common]
server_addr = ip
server_port = 4001
token = asdasd
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 1234
use_encryption = true
use_compression = true

把本地的ssh端口映射到服务端的1234,执行./frpc -c ./frpc.ini &

串口转MQTT,串口桥

有啥用?暂时还不知道
首先是一些定义,串口设备需要一个id,比如通信模块可以用型号+imei,其它模块可以型号+序列号等
串口到MQ的主题:uart/id/miso
MQ到串口的主题:uart/id/mosi
首先初始化串口,由于mono下DataReceived有bug,所以采用线程处理

serialPort1 = new SerialPort();
serialPort1.BaudRate = 115200;
serialPort1.PortName = "/dev/ttyUSB4";
//mono补丁
Thread spThread = new Thread(new ThreadStart(DataReceived));
spThread.Start();
//serialPort1.DataReceived += SerialPort1_DataReceived;
serialPort1.Open();

- 阅读剩余部分 -

github局部部分下载,zip打包

1、安装SVN
2、获取路径地址,将'/tree/master'替换为'/trunk/'
3、svn checkout 新的地址

实例,下载NUCLEO-G070RB的官方项目
https://github.com/STMicroelectronics/STM32CubeG0/tree/master/Projects/NUCLEO-G070RB
结果也不知道是否checkout结束
svn: E130003: The XML response contains invalid XML

sudo apt-get install zip
zip -r NUCLEO-G070RB.zip NUCLEO-G070RB/

参考文献:
https://blog.csdn.net/nqwzl/article/details/98741155
https://cloud.tencent.com/developer/article/1619411
https://my.oschina.net/u/4344027/blog/3393697
DownGit项目
http://t.cn/RfyGcPX
https://github.com/MinhasKamal/DownGit
https://minhaskamal.github.io/DownGit/

Go和Excel

获取包
go get github.com/360EntSecGroup-Skylar/excelize(不需要,程序自动获取v2)
建立test.go

package main

import (
    "fmt"

    "github.com/360EntSecGroup-Skylar/excelize/v2"
)

func main() {
    f := excelize.NewFile()
    // 创建一个工作表
    index := f.NewSheet("Sheet2")
    // 设置单元格的值
    f.SetCellValue("Sheet2", "A2", "Hello world.")
    f.SetCellValue("Sheet1", "B2", 100)
    // 设置工作簿的默认工作表
    f.SetActiveSheet(index)
    // 根据指定路径保存文件
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

go mod init main
go run test.go
生成Book1.xlsx,包含两个Sheet

- 阅读剩余部分 -