Code:
#include <iostream>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <termios.h>
using namespace std;
char buffersend[1024];
char outport11[] = "setport 1.1\r\n";
char outport10[] = "setport 1.0\r\n";
char outport21[] = "setport 2.1\r\n";
char outport20[] = "setport 2.0\r\n";
char outport31[] = "setport 3.1\r\n";
char outport30[] = "setport 3.0\r\n";
char outport41[] = "setport 4.1\r\n";
char outport40[] = "setport 4.0\r\n";
char outport51[] = "setport 5.1\r\n";
char outport50[] = "setport 5.0\r\n";
char outport61[] = "setport 6.1\r\n";
char outport60[] = "setport 6.0\r\n";
char outport71[] = "setport 7.1\r\n";
char outport70[] = "setport 7.0\r\n";
char outport81[] = "setport 8.1\r\n";
char outport80[] = "setport 8.0\r\n";
int kbhit(void);
int kbhit(void)
{
struct termios term, oterm;
int fd = 0;
int c = 0;
tcgetattr(fd, &oterm);
memcpy(&term, &oterm, sizeof(term));
term.c_lflag = term.c_lflag & (!ICANON);
term.c_cc[VMIN] = 0;
term.c_cc[VTIME] = 1;
tcsetattr(fd, TCSANOW, &term);
c = getchar();
tcsetattr(fd, TCSANOW, &oterm);
if (c != -1)
ungetc(c, stdin);
return ((c != -1) ? 1 : 0);
}
int getch();
int getch()
{
static int ch = -1, fd = 0;
struct termios neu, alt;
fd = fileno(stdin);
tcgetattr(fd, &alt);
neu = alt;
neu.c_lflag &= ~(ICANON|ECHO);
tcsetattr(fd, TCSANOW, &neu);
ch = getchar();
tcsetattr(fd, TCSANOW, &alt);
return ch;
}
void *abfrage()
{
cout << "Thread abfrage gestartet!\n";
char text = 'x';
while(text != 'q')
{
if(kbhit())
{
text = getchar();
}
else
{
text = 'x'
}
}
return 0;
}
void *befehle()
{
cout << "Thread befehle gestartet!\n";
while(text != 'q')
{
if (text != 'x')
{
if(text == '1')
{
send(sock, outport11, strlen(outport11), 0);
}
if(text == '2')
{
send(sock, outport21, strlen(outport21), 0);
}
if(text == '3')
{
send(sock, outport31, strlen(outport31), 0);
}
if(text == '4')
{
send(sock, outport41, strlen(outport41), 0);
}
if(text == '5')
{
send(sock, outport51, strlen(outport51), 0);
}
if(text == '6')
{
send(sock, outport61, strlen(outport61), 0);
}
if(text == '7')
{
send(sock, outport71, strlen(outport71), 0);
}
if(text == '8')
{
send(sock, outport81, strlen(outport81), 0);
}
}
else
{
send(sock, outport10, strlen(outport10), 0);
usleep(3000);
send(sock, outport20, strlen(outport20), 0);
usleep(3000);
send(sock, outport30, strlen(outport30), 0);
usleep(3000);
send(sock, outport40, strlen(outport40), 0);
usleep(3000);
send(sock, outport50, strlen(outport50), 0);
usleep(3000);
send(sock, outport60, strlen(outport60), 0);
usleep(3000);
send(sock, outport70, strlen(outport70), 0);
usleep(3000);
send(sock, outport80, strlen(outport80), 0);
}
}
return 0;
}
int main()
{
sockaddr_in myaddr;
int sock = socket (AF_INET, SOCK_STREAM, 0);
if (sock < 0)
{
cout << "Fehler beim Erzeugen des Sockets\n";
}
cout <<"Socket erzeugt!\n";
bzero(&myaddr, sizeof(myaddr));
myaddr.sin_family = AF_INET;
inet_pton(AF_INET, "192.168.178.101", &myaddr.sin_addr);
myaddr.sin_port = htons(50290);
if(connect(sock, (struct sockaddr *)&myaddr, sizeof(myaddr))<0)
{
cout << "Fehler beim Verbinden!\n";
}
else
{
cout << "Mit AVR-IO-NET verbunden!\n";
}
pthread_t p1,p2;
pthread_create (&p1, NULL, abfrage, NULL);
pthread_create (&p2, NULL, befehle, NULL);
pthread_join (p1, NULL);
pthread_join (p2, NULL);
cout << "Programm Ende \n";
}
Und falls es noch hilft, hier die Fehlermeldung die logischerweise noch kommt:
Lesezeichen