2012-04-24 64 views
0

すべてのシリアルデータをVxWorksのプロセスにリダイレクトしようとしています。次のコードリダイレクトVxWorksシリアル入力

fd = open("/tyCo/0", O_RDWR,0); 
ioctl(fd, FIOSETOPTIONS, OPT_TERMINAL & ~OPT_7_BIT); 
read(fd, line, 100); 

を使用して移入されていない入力された最初の文字を除いて正しい入力を与えるが、端末に出力されます。だから私が "こんにちは"と入力すると、 "H"が出力され、行= "ello"になります。何も入力せずにリターンキーを押すと、VxWorksシェルからプロンプトが出ます。

私はVxWorksシェルがデータの最初の文字を傍受していると思います。私の推測では、STDIOを新しいプロセスのみにリダイレクトする必要がありますが、VxWorks 6.4 RTPでは使用できないioGlobalStdSet()を使用すると言われているdocumentationのすべてが見つかりました。 STDIOをリダイレクトするか、VxWorksシェルをプロセスから削除するにはどうすればよいですか?

答えて

0

VxWorksの設定とコンパイル中にシェルを無効にすると、問題は永久に削除されました。シェルでexitを入力して一時的に無効にすることもできます。

0

ioGlobalStdSetを使用してIOをパイプにリダイレクトすることが1つの回避策です。 次に、RTPでパイプを読み取りモードで開きます。私の頭の上から

- カーネルで:RTPで

dev = pipeDevCreate("/pipe/input", 10, 100); 
kernFd = open("/pipe/input", O_RD, 0) 
ioGlobalStdSet(1, kernFd) 

rtpFd =オープン( "/パイプ/入力"、O_RD、0); 読み取り(rtpFd、line、100);

関連する問題