真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言串口操作 go語言串口通信

golang開發(fā)modbus-rtu通信

用到的gomodbus包是壇友slzm40編寫和共享的,感謝他的無私分享,本帖只是拋磚引玉,將我自己學(xué)習(xí)的一些經(jīng)歷分享給大家;有關(guān)modbus包可以直接向slzm40請教或一起討論;

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、平川網(wǎng)絡(luò)推廣、小程序開發(fā)、平川網(wǎng)絡(luò)營銷、平川企業(yè)策劃、平川品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供平川建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com

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

添加一對虛擬串口

打開modbus-slave從機(jī)軟件,用來測試從機(jī);

需要注意設(shè)置通信地址和讀取寄存器的地址和數(shù)量;

查看可用串口,因為虛擬串口選擇com1和com2,虛擬中我選擇使用/dev/ttyS1

編譯運(yùn)行,會提示串口打開失敗,這是因為linux對設(shè)備的權(quán)限做了限制

獲取串口讀寫、運(yùn)行等權(quán)限

我們已經(jīng)能正確讀取03寄存器的值;其他功能可以自行測試;

package main

import (

"fmt"

modbus "github.com/thinkgos/gomodbus"

"github.com/thinkgos/gomodbus/mb"

"time"

)

func main(){

//調(diào)用RTUClientProvider的構(gòu)造函數(shù),返回結(jié)構(gòu)體指針

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語言做串口通信,我應(yīng)該從什么地方入手,IO是什么?有什么用?

//創(chuàng)建一個串口通訊

SerialPort CurrentPort = null;

CurrentPort = new SerialPort();

CurrentPort.ReadBufferSize = 128;

CurrentPort.PortName = comName; //端口號

CurrentPort.BaudRate = bandRate; //比特率

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

CurrentPort.StopBits = stop;//停止位

CurrentPort.DataBits = databit;//數(shù)據(jù)位

CurrentPort.ReadTimeout = 1000; //讀超時,即在1000內(nèi)未讀到數(shù)據(jù)就引起超時異常

//綁定數(shù)據(jù)接收事件,因為發(fā)送是被動的,所以你無法主動去獲取別人發(fā)送的代碼,只能通過這個事件來處理

CurrentPort.DataReceived += Sp_DataReceived;

CurrentPort.Open();

定義一個變量 byte[] receiveStr;

//綁定的事件處理函數(shù)

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;//當(dāng)然你可以通過轉(zhuǎn)換將byte[]轉(zhuǎn)換為字符串。

}

//你要求的按鈕事件可以這么寫

private void button1_Click(object sender, EventArgs e)

{

if(receiveStr!=null)

{

變量 xxx=receiveStr;

}

}

go語言做串口通信,我應(yīng)該從什么地方入手,IO是什

//創(chuàng)建一個串口通訊 SerialPort CurrentPort = null; CurrentPort = new SerialPort(); CurrentPortReadBufferSize = 128; CurrentPortPortName = comName; //端口號 CurrentPortBaudRate = bandRate; //比特率 CurrentPortParity =parity;/go語言做串口通信,我應(yīng)該從什么地方入手,IO是什


網(wǎng)頁題目:go語言串口操作 go語言串口通信
網(wǎng)址分享:http://weahome.cn/article/dosgepd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部