Ich verwende vxworks installiert auf einer UEIPAC 600 1-G-Box. Ich versuche Daten von einer seriellen Schnittstelle zu lesen. Das ist mein Code.vxworks serielle Schnittstelle Lese-Timeout
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);
}
, wenn ich es führen Sie es einfach mal aus, bis ich die Tastatureingabe schlagen gibt dann wie so
number of bytes read 1
displaying the bytes read:
Pp
Wie ich dies tun zu beheben richtig von der seriellen Schnittstelle zu lesen.
Welcher Wert wurde von 'fd = open (...)' zurückgegeben? Sie müssen das überprüfen, nicht blindlings weitermachen. Ich frage mich auch, was der Sinn von 'char dev_name [] ="/tyCo/0 "ist; 'wenn du es nicht mal zum öffnen benutzt. Und haben Sie einen 'nul' Terminator am Ende von' re' platziert, bevor Sie ihn an 'printf' senden? –