串口转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

- 阅读剩余部分 -

关于nginx的proxy_pass

常用配置

location /api {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://192.168.1.11:8070/;
}

服务在192.168.1.11:8070的/api/路径下
如果配置8070/需要访问/api/api/才能访问到
如果配置中不带/就可以/api/访问到了
替换时location /newapi时需要配置/api,不带结尾的/
总结proxy_pass后尽量不要带/
如果不替换,配置是否带/api似乎差别不大

跨域问题Access-Control-Allow-Origin

Access-Control-Allow-Origin是HTML5中定义的一种解决资源跨域的策略。

他是通过服务器端返回带有Access-Control-Allow-Origin标识的Response header,用来解决资源的跨域权限问题。

add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

最好不跨