簡體   English   中英

在Linux中還原串口

[英]Restoring serial port in linux

我試圖通過串行端口與PLC進行通信,該PLC控制機械門以完成行業任務。 由於對本主題沒有很豐富的經驗,所以我不急着存儲舊設置並在程序退出時恢復它們的重要性。 更改了termios結構中的某些字段后,即使使用了與其他端口(ttyD0)完全相同的端口功能打開功能(對於這些設置也可以正常使用),我再也無法從端口讀取任何內容。 關於如何將ttyD1恢復到工作狀態有什么建議嗎?

用於打開端口的代碼如下:

int OpenPort()
{
    fd = open("/dev/ttyD0", O_RDWR | O_NOCTTY);

    if (fd < 0)
    {
        cerr << "open error " << errno << strerror(errno) << endl;
    }
    else
    {
        struct termios my_termios;
        fcntl(fd, F_SETFL, 0);
        tcgetattr(fd, &my_termios);
        //bzero(&my_termios, sizeof(my_termios));
        tcflush(fd, TCIFLUSH);      
        my_termios.c_cflag = B115200 | CS8 | CREAD | CLOCAL | HUPCL;
        //my_termios.c_lflag = ICANON;
        //cfsetospeed(&my_termios, B115200);
        tcsetattr(fd, TCSANOW, &my_termios); 
    }
    return fd;
}

只需復制從第一個tcgetattr收到的結構,然后在退出時將其提供給tcsetattr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM