私はUEIPAC 600 1-Gボックスにインストールされているvxworksを使用しています。シリアルポートからデータを読み込もうとしています。これは私のコードです。vxworksシリアルポート読み取りタイムアウト
void read_serial(int n){
/* store number of bytes read = int n*/
int num=0;
/* hold the file descriptor */
int fd = 0;
/* dev name from iosDevShow output */
char dev_name[] = "/tyCo/0";
/* buffer to receive read */
char re[n];
/* length of string to read */
int re_len = n;
/* open the device for reading. */
fd = open("/tyCo/0", O_RDWR, 0);
num = read(fd, re, re_len); /* read */
close(fd); /* close */
printf("number of bytes read %d\n",num); /* display bytes read*/
printf("displaying the bytes read: %s\n",re);
}
私は、キーボード入力を打つまで、私はそれだけの時間をそれを実行するので、
number of bytes read 1
displaying the bytes read:
Pp
私が正しくシリアルポートから読み取るために、この問題を解決するにはどうすればよいのように出力します。
'fd = open(...) 'によってどのような値が返されましたか?あなたは*これをチェックして、盲目的に実行してはいけません。私は 'char dev_name [] ="/tyCo/0 "のポイントが何であるか不思議です。あなたがそれを開くのに使っていないときにも。そして、 'print'に送る前に' re'の終わりに 'nul'ターミネーターを置いていますか?ヒントのための –