dongwo1914 2018-03-13 16:04
浏览 192

在Linux上读写串口

I use github.com/jacobsa/go-serial/serial package to work with serial port in my Go program.

Simplified example:

options := serial.OpenOptions{
        PortName: "/dev/ttyUSB0",
        BaudRate: 115200,
        DataBits: 8,
        StopBits: 1,
        MinimumReadSize = 0,
        InterCharacterTimeout = 100,
    }       


    port, _ := serial.Open(options)
    defer port.Close()

    res := make([]byte, 1024)
    var err error
    var i int = 0

    for i == 0 {
        i, err = port.Read(res)
        if err != nil && err != io.EOF {
            log.Printf("port.Read: %v", err)
            err = errors.New("I/O error")
        }

}
log.Println("Read bytes: ", i)

// do something else

When data is not ready, we have io.EOF error. But, when there is connection lost, there is also io.EOF errror! How could I distinguish waiting for new data and disconnection? If there is no data, FOR cycle need to be continue untill timeout is reached, but if connection is lost, I need to re-open port, because it's descriptor becames wrong. What is the good practice to handle these cases?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
    • ¥15 lingo18勾选global solver求解使用的算法
    • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
    • ¥15 Python3.5 相关代码写作
    • ¥20 测距传感器数据手册i2c
    • ¥15 RPA正常跑,cmd输入cookies跑不出来
    • ¥15 求帮我调试一下freefem代码
    • ¥15 matlab代码解决,怎么运行
    • ¥15 R语言Rstudio突然无法启动
    • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像