ik ben geloof ik weer eens een beetje chagerijnig 
Ik ben aan het proberen mijn seriele lcd aan te sturen.
hiervoor had ik op internet een programmaatje in C gevonden.
daarmee kon je als volgt naar het display schrijven:
write(fd,"DE TEKST",aantal-tekens-in-tekststring);
Dit werkt perfect.
Het display ondersteunt ook speciale commando's, als:
\001, \002, etc...
deze sturen dmv: write(fd,"\001",1);
gaat ook perfect.
Maar nu heb ik dit programma geïntegreerd in een socket-programma:
in dit stukje:
wordt een string van het netwerk opgevangen en in de string data gegooid.
vervolgens gooit write het naar het lcd.
maar nu komt het:
Het versturen van strings gaat goed.
Maar het versturen van commando's gaat fout.
Ik heb "het aantal tekens in de string" even op 1 gezet, zodat ik een commando kon testen.
Als ik \004 stuur, dan komt er in de string data netjes \004 te staan.
maar hij voert dat gewoon niet goed uit naar het display.
waarom niet!!!???
Ik ben aan het proberen mijn seriele lcd aan te sturen.
hiervoor had ik op internet een programmaatje in C gevonden.
daarmee kon je als volgt naar het display schrijven:
write(fd,"DE TEKST",aantal-tekens-in-tekststring);
Dit werkt perfect.
Het display ondersteunt ook speciale commando's, als:
\001, \002, etc...
deze sturen dmv: write(fd,"\001",1);
gaat ook perfect.
Maar nu heb ik dit programma geïntegreerd in een socket-programma:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| #include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <termios.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include "ServerSocket.h"
#include "SocketException.h"
#include <string>
int main ( int argc, int argv[] )
{
int fd;
std::cout << "running....\n";
//LCDTEST
struct termios termios;
fd=open("/dev/ttyS0",O_WRONLY|O_EXCL);
if (fd==-1) exit(1);
if (tcgetattr(fd,&termios)==-1) exit(1);
cfmakeraw(&termios);
cfsetospeed(&termios,B19200);
if (tcsetattr(fd,TCSANOW,&termios)==-1) exit(1);
usleep(850000);
// write(fd,"\004\024\030",3); /* hide cursor/wrap=off/scroll=off */
write(fd,"\004\023\020",3); /* hide cursor/wrap=off/scroll=off */
//EOF LCDTEST
try
{
// Create the socket
ServerSocket server ( 30000 );
while ( true )
{
ServerSocket new_sock;
server.accept ( new_sock );
try
{
while ( true )
{
std::string data;
new_sock >> data;
write(fd,data.c_str(),1);
}
}
catch ( SocketException& ) {}
}
}
catch ( SocketException& e )
{
std::cout << "Exception was caught:" << e.description() << "\nExiting.\n";
}
return 0;
} |
in dit stukje:
code:
1
2
3
| std::string data;
new_sock >> data;
write(fd,data.c_str(),2; |
wordt een string van het netwerk opgevangen en in de string data gegooid.
vervolgens gooit write het naar het lcd.
maar nu komt het:
Het versturen van strings gaat goed.
Maar het versturen van commando's gaat fout.
Ik heb "het aantal tekens in de string" even op 1 gezet, zodat ik een commando kon testen.
Als ik \004 stuur, dan komt er in de string data netjes \004 te staan.
maar hij voert dat gewoon niet goed uit naar het display.
waarom niet!!!???