2016-08-29 46 views
1

我在編寫程序以允許使用串行接口的標準應用程序,通過以太網進行通信。如何在posix_openpt()中定義名稱

我使用posix_openpt創建新的串行接口。它的工作完美,但每個電話posix_openpt,串行接口有不同的名稱(如"/dev/pts/4""/dev/pts/5" ...)。

我需要指定名稱(數字),或使用像udev規則來創建符號鏈接來糾正pty。

有些想法?

感謝

+1

我認爲你需要解釋一下。爲什麼你需要指定名稱?你不能使用生成的? –

+0

我有使用串口的應用程序通信(並在配置文件中指定了端口名稱)。這個應用程序在嵌入式系統上自動啓動。現在我需要通過特殊的協議將串口重定向到以太網。我認爲最好的方法是使用pty。但我必須確定,這個應用使用corect pty(corect串行端口)。 – pou

+0

您是否熟悉tha [XY問題](http://xyproblem.info)。我之前完成了這個。沒有ptys需要,你正在採取錯誤的解決方案。你想將串口重定向到tcp?所以你想發送到你的* ttyS?*的命令到TCP套接字?請注意,您要求的是完全不同的事情。 –

回答

1

我用符號鏈接:

fd = posix_openpt(O_RDWR); 
if (fd < 0){ 
    return -1; 
} 

if ((slavename = ptsname(fd)) == NULL) { 
    Close(); 
    return -1; 
} 

rc = grantpt(fd); 
if (rc != 0){ 
    Close(); 
    return -1; 
} 

rc = unlockpt(fd); 
if (rc != 0){ 
    Close(); 
    return -1; 
} 

fcntl(fd, F_SETFL, FNDELAY); 
unlink(SER_PORT_NAME); 
if(symlink(slavename,SER_PORT_NAME)){ 

} 

.....

相關問題