成都网站建设设计

将想法与焦点和您一起共享

go语言写个串口 golang 串口通信

go语言做串口通信,我应该从什么地方入手,IO是什么?有什么用?

//创建一个串口通讯

创新互联建站服务项目包括赤峰网站建设、赤峰网站制作、赤峰网页制作以及赤峰网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,赤峰网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到赤峰省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

SerialPort CurrentPort = null;

CurrentPort = new SerialPort();

CurrentPort.ReadBufferSize = 128;

CurrentPort.PortName = comName; //端口号

CurrentPort.BaudRate = bandRate; //比特率

CurrentPort.Parity =parity;//奇偶校验

CurrentPort.StopBits = stop;//停止位

CurrentPort.DataBits = databit;//数据位

CurrentPort.ReadTimeout = 1000; //读超时,即在1000内未读到数据就引起超时异常

//绑定数据接收事件,因为发送是被动的,所以你无法主动去获取别人发送的代码,只能通过这个事件来处理

CurrentPort.DataReceived += Sp_DataReceived;

CurrentPort.Open();

定义一个变量 byte[] receiveStr;

//绑定的事件处理函数

private static void Sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)

{

SerialPort sp = sender as SerialPort;

if (sp == null)

return;

byte[] readBuffer = new byte[sp.ReadBufferSize];

sp.Read(readBuffer, 0, readBuffer.Length);

//赋值

receiveStr=readBuffer;//当然你可以通过转换将byte[]转换为字符串。

}

//你要求的按钮事件可以这么写

private void button1_Click(object sender, EventArgs e)

{

if(receiveStr!=null)

{

变量 xxx=receiveStr;

}

}

go语言做串口通信,我应该从什么地方入手,IO是什

//创建一个串口通讯 SerialPort CurrentPort = null; CurrentPort = new SerialPort(); CurrentPortReadBufferSize = 128; CurrentPortPortName = comName; //端口号 CurrentPortBaudRate = bandRate; //比特率 CurrentPortParity =parity;/go语言做串口通信,我应该从什么地方入手,IO是什

go语言适合做什么?

Go语言。他主要是在一些网页版的服务器中用于系统编程的一种语言。他是谷歌开发的一种编程语言。在一定程度上,谷歌有一定的垄断作用。不能随随便便的在语言当中添加其他的语言成分。

golang开发modbus-rtu通信

用到的gomodbus包是坛友slzm40编写和共享的,感谢他的无私分享,本帖只是抛砖引玉,将我自己学习的一些经历分享给大家;有关modbus包可以直接向slzm40请教或一起讨论;

包地址"github.com/thinkgos/gomodbus";

添加一对虚拟串口

打开modbus-slave从机软件,用来测试从机;

需要注意设置通信地址和读取寄存器的地址和数量;

查看可用串口,因为虚拟串口选择com1和com2,虚拟中我选择使用/dev/ttyS1

编译运行,会提示串口打开失败,这是因为linux对设备的权限做了限制

获取串口读写、运行等权限

我们已经能正确读取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)

}

}


文章名称:go语言写个串口 golang 串口通信
转载源于:http://chengdu.cdxwcx.cn/article/hpgehi.html