Wie kan mij helpen met het volgende probleem. Ik wil vanuit linux naar de seriele poort schrijven. Deze stel ik als volgt in:
Als ik nu een write(fd,&karakter,1) uitvoer, lukt dit niet. (returned geen 0).
Kan iemand mij hiermee helpen of aan een voorbeeldje?
PS. printerror is gewoon een functietje die een error afdrukt
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| int fd;
struct termios newset;
void init() {
// Open de seriele poort
// O_RDWR = Open for reading and writing
// O_NOCTTY = Port doesn't become controlling terminal
// O_NONBLOCK = Causes the calling proces not to wait
fd = open(DEVICE,O_RDWR | O_NOCTTY | O_NONBLOCK);
// Error if open fails
if (fd < 0) {
perror(DEVICE);
exit(-1);
}
// Poort instellen
// CLOCAL = Ignore modem control lines
// CRTSCTS = Flow control
// CREAD = Enable receiver
if(fcntl(fd, F_SETOWN, getpid())!=0) printerror("fcntl");
if(fcntl(fd, F_SETFL, O_ASYNC)!=0) printerror("fcntl");
newset.c_cflag = BAUDRATE | DATABITS | CLOCAL | CRTSCTS | CREAD;
newset.c_iflag = IGNPAR; // IGNPAR = Ignore framing and parity errors
newset.c_oflag = 0; // OPOST = Post process output
newset.c_lflag = 0;
newset.c_cc[VMIN] = 1;
if (tcflush(fd,TCIFLUSH)!=0) printerror("tcflush");
if (tcsetattr(fd,TCSANOW,&newset)!=0) printerror("tcsetattr");
} |
Als ik nu een write(fd,&karakter,1) uitvoer, lukt dit niet. (returned geen 0).
Kan iemand mij hiermee helpen of aan een voorbeeldje?
PS. printerror is gewoon een functietje die een error afdrukt