Ik ben voor mijn stage bezig met een universal communicator.
Het is een apparaat met een ethernet ingang/uitgang en een 8 tal seriele poorten.
Aan iedere poort hangen een x aantal display.
De communicator moet het tcp-ip pakketje ontvangen van een server(dit werkt al)
Vervolgens moet hij dit omzetten en vertalen naar hexadicmale getallen en die moeten op de seriele lijn gezet worden. (de displays checken zelf ieder berichtje af of het voor hun is)
Ik krijg het nu niet voor elkaar om die data goed op de lijn te zetten, ik gebruik deze code : (ps die communcator draait op een linux kernel)
dit werkt dus niet. er gebeurt namelijk nix op de displays terwijl dit wel zo moeten gebeuren. De baudrate moet 9k6 zijn. Wat doe ik fout, kan je ook op een andere manier data op de seriele poort zetten. de poort bevindt zich overigens in /dev/ttyM0
Het is een apparaat met een ethernet ingang/uitgang en een 8 tal seriele poorten.
Aan iedere poort hangen een x aantal display.
De communicator moet het tcp-ip pakketje ontvangen van een server(dit werkt al)
Vervolgens moet hij dit omzetten en vertalen naar hexadicmale getallen en die moeten op de seriele lijn gezet worden. (de displays checken zelf ieder berichtje af of het voor hun is)
Ik krijg het nu niet voor elkaar om die data goed op de lijn te zetten, ik gebruik deze code : (ps die communcator draait op een linux kernel)
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
| #define sPort = "/dev/ttyM0"
stuct termios tty;
int rs485Handler, verzondenbytes, ret;
int main()
{ unsigned int temp;
rs485Handler = open(sPort, O_RDWR | O_NDELAY);
tty.c_cflag = CREAD | CLOCAL | B9600 | CS8 | CRTSCTS;
tty.c_oflag = 0;
tty.c_lflag = 0;
tty.c_iflag = 0;
tty.c_cc[VMIN] = 0;
tty.c_cc[VTIME] = 0;
tcsetattr(rs485Handler, TCSANOW, &tty);
ret = 0;
temp = 0x00;
verzondenBytes = write(rs485Handler, temp, ret);
close(rs485Handler);
} |
dit werkt dus niet. er gebeurt namelijk nix op de displays terwijl dit wel zo moeten gebeuren. De baudrate moet 9k6 zijn. Wat doe ik fout, kan je ook op een andere manier data op de seriele poort zetten. de poort bevindt zich overigens in /dev/ttyM0
