go语言串口通话 golang串口

golang开发modbus-rtu通信用到go语言串口通话的gomodbus包是坛友slzm40编写和共享的go语言串口通话,感谢go语言串口通话他的无私分享,本帖只是抛砖引玉 , 将我自己学习的一些经历分享给大家go语言串口通话;有关modbus包可以直接向slzm40请教或一起讨论;
包地址"github.com/thinkgos/gomodbus";
添加一对虚拟串口
打开modbus-slave从机软件,用来测试从机;
需要注意设置通信地址和读取寄存器的地址和数量;
查看可用串口,因为虚拟串口选择com1和com2,虚拟中我选择使用/dev/ttyS1
编译运行,会提示串口打开失败 , 这是因为linux对设备的权限做go语言串口通话了限制
获取串口读写、运行等权限
我们已经能正确读取03寄存器的值;其他功能可以自行测试;
package main
import (
"fmt"
modbus "github.com/thinkgos/gomodbus"
"github.com/thinkgos/gomodbus/mb"
"time"
)
func main(){
//调用RTUClientProvider的构造函数,返回结构体指针
p := modbus.NewRTUClientProvider()
p.Address = "/dev/ttyS1"
p.BaudRate = 115200
p.DataBits = 8
p.Parity = "N"
p.StopBits = 1
p.Timeout = 100 * time.Millisecond
client := mb.NewClient(p)
client.LogMode(true)
err := client.Start()
if err != nil {
fmt.Println("start err,", err)
return
}
for {
value, err := client.ReadHoldingRegisters(1, 1, 3)
if err != nil {
fmt.Println("readHoldErr,", err)
} else {
fmt.Printf("%#v\n", value)
}
time.Sleep(time.Second * 3)
}
}
windows如何读取安卓串口数据读取1、安装串口监控软件:安装串口监控软件,如RealTerm,Putty等,可以实现对安卓串口数据的读?。?
2、使用串口工具:Windows系统提供的串口工具Device Manager,可以实现与安卓设备的通讯;
3、使用安卓串口库调用:通过安卓串口库调用,从安卓串口中读取数据;
4、使用三方SDK:第三方软件开发工具 , 比如M2MGO SDK , 也可以从安卓串口中读取数据 。
51单片机与PC串口通信程序 , 求指导 ! 具体要求如下:要求用什么语言?
------------------------------
网友“星心晨梦”的回答go语言串口通话 , 是可以满足题目要求的 。
我实验go语言串口通话了go语言串口通话,是成功的,没有任何错误 。
楼主应该检查自己的电路、串口设置等等 。
------------------------------
网友“星心晨梦”的回答,篇幅稍稍长go语言串口通话了一些 。
缩减一半就可以正常工作了,可读性更好一些 。
建议看看下面的 。
------------------------------
#include AT89X51.h
#include intrins.h
#define ucharunsigned char
#define uintunsigned int
//---------------------------------------------------
ucharidata trdata1[] = {
'W','E','L','C','O','M','E',' ','T','O',' ','C','H','I','N','A','!',0x0d,0x0a,0x00};
ucharidata trdata2[] = {
'M','Y',' ','N','A','M','E',' ','I','S',' ','L','I','M','I','N','G',0x0d,0x0a,0x00};
ucharidata trdata3[] = {
'Y','I','N','G','Y','O','N','G','K','E','X','U','E','X','U','E','Y','U','A','N',0x0d,0x0a,0x00};
ucharRxBuf[5], Rx_p, Rx_i, TX_p, Tx_i;
//---------------------------------------------------
void UART_Init(void) //串口初始化
{
PCON = 0x00;
SCON = 0x50; //串口工作方式为1,允许接收.
TMOD = 0x20; // T1 定时方式2
TH1 = 0xfd;//波特率 9600bps @ fosc = 11.0592MHz
TL1 = 0xfd;
TR1 = 1;//启动T1
ES = 1;//开串口中断.
EA = 1;//开总中断.
}
//---------------------------------------------------

推荐阅读