2016-08-29 6 views
1

私はシリアルインタフェース、comunicate throught ethernetを使用して標準的なアプリケーションを許可する書き込みプログラムを試しています。posix_openpt()で名前を定義するには

新しいシリアルインターフェイスを作成するためにposix_openptを使用します。それは完全に動作しますが、すべての電話posix_openpt、シリアルインターフェイスは異なる名前("/dev/pts/4"または"/dev/pts/5" ...のように)を持っています。

ptyを修正するためのシンボリックリンクを作成するには、名前(番号)を指定するか、udevルールのようなものを使用する必要があります。

いくつかのアイデアですか?

おかげ

+1

私はあなたがもう少し説明する必要があると思います。なぜ名前を指定する必要がありますか?あなたは生成されたものを使用できませんか? –

+0

私はシリアルポートを使用してアプリケーション通信をしています(また、設定ファイルでポート名を指定しています)。このアプリケーションは組み込みシステムで自動的に開始されます。今私は特別なプロトコルを介してイーサネットにシリアルポートをリダイレクトする必要があります。私はこれを行うための最良の方法はuse ptyだと思います。しかし、私はこのアプリケーションがcorect pty(corectシリアルポート)を使用することを確認する必要があります。 – pou

+0

あなたは[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)){ 

} 

.....

関連する問題