Avr-Net-Io Pollin TCP/ip-Abfrage eigenes programm schreiben

finnex

Erfahrenes Mitglied
Hallo,
ich habe heute den Bausatz von Pollin bekommen (Avr-Net-Io).
Leider kann ich nur mit der beiligenden Software von Pollin (NETSERVER) den Microkontroller ansprechen.
Nun wollte ich mir gerne eine eigene Sofware schreiben:
-muss nichts grafisches sein -> Konsole würde reichen um es nach meinen Wünschen zu schreiben.

Mit welchen Befehlen kann ich den Microk. selber über TCP/IP ansprechen?

MfG Finnex
 
Unter Windows ist das sicher sehr interessant, aber ich will diese Board 24/7 nutzen und Windows habe ich nur im Desktopbereich. Sonst läuft bei mir Debian.

Unter Linux ist die Komunikation erschreckend simpel

echo "getadc 1" | nc 192.168.0.90 50290 -w 5 >> /var/log/netioavr.log

Der Befehl schreibt den Wert des Analogports 1 in das logfile nach 5 sekunden trent sich die verbindung zum Board. Ich hab das mal als Cron-job einen Tag laufen lassen und alle 5 Minuten was in die Datei geschrieben, ging sehr gut.
 
Hallo,
wo geben ich denn diesen Befehl echo "getadc 1" | nc 192.168.0.90 50290 -w 5 >> /var/log/netioavr.log ein? Einfach in die Konsole?

Oder ist das php--> wegen echo?

Mfg Finnex
 
Hallo Finnex,

ja ist ein Konsolenbefehl.

nc ist netcat , das echo "befehl für netioavr" | übergibt den Befehl an nc und das ergebniss über >> dateipfad wird in die angegeben Datei gedrückt. Die Zeile in einen Cron-job und schon ist es automatisch, die Logdatei kann dann über PHP oder ähnlich ausgewertet werden. -w n n= sekunden bis sich nc selbst beendet.

Zum Spielen auf der Konsole nc "ip der karte "port der karte" und du kannst Befehle eingeben und bekommst die Reaktion, nur kann man so nichts automatisieren, aber du kannst dir das Ergebnis auch per mail schicken, wenn auf den System ein Postfix läuft. Also muss man erst mal nichts an der Firmware andern für Telnet oder so ;-)


Grüße
Andreas
 
Hallo,
ok das klinkt ja schonmal nicht schlecht. Kann man das auch irgendwie bei Windows realisieren? Ich wollte gerne mit der Karte einen "W-Lan Roboter" bauen.
Dazu habe ich mir gedacht, dass ich die Pfeiltasten einlese und dann dementsprechend ein Befehl zum Mikrocontroller schicke.

Habe jetzt mal herrausgefunden, dass ich dazu die Winsockets benötige um eine TCP/IP Verbindung mit dem MiKrocontroller herzustellen. Jedoch werde ich daraus nicht schlau und mir fehlen auch die ".h Dateien", sodass ich es nicht komplimieren kann.

MfG Finnex
 
Hallo,
habs jetzt geschafft, habe mein eigenes Programm geschrieben... kann jetz den Mic selber ansprechen.

Falls es noch jemand wissen will wie ich es gemacht habe, kann mir ne PN schreiben.

MfG Finnex
 
Zuletzt bearbeitet:
Hallo, ich habe auch ein Pollin AVR NetIO Board und bin sehr an Deiner Lösung interessiert. Kannst Du mir den Quellcode ins Postfach legen?
MfG mparow
 
Hallo,
ich poste einfach mal hier den quelltext.
Mit diesem Programm kann ich jetzt mit den Zahlen 1-8 (NumBlog) die Ports an oder aus schalten. Mit der Zahl 9 Mach ich alle aus. Ich habe den Quelltext mit Dev-C++ complemiert.

Code:
#include <windows.h>
#include <winsock2.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iostream>

using namespace std;
SOCKET      Socket;
SOCKADDR_IN addr;


void gotoxy(int xpos, int ypos)
{
    COORD scrn;    
    HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
    scrn.X = xpos; scrn.Y = ypos;
    SetConsoleCursorPosition(hOuput,scrn);
}


int main()
{
   
string      m_host = "192.168.178.99";
   
string      m_port = "50290";
   
   
WSADATA wsa;
   
int rc = WSAStartup(MAKEWORD(2, 0), &wsa);
  
 if(rc == SOCKET_ERROR){
      cout << "Error while starting server... \n";
   }
   
   Socket = socket(AF_INET, SOCK_STREAM, 0);
   if(Socket == INVALID_SOCKET){
      std::cout << "Error while building socket. \n";
   }

   addr.sin_addr.s_addr = inet_addr(m_host.c_str());
   addr.sin_port        = htons(atoi(m_port.c_str()));
   addr.sin_family      = AF_INET;

   if(connect(Socket, (SOCKADDR*)&addr, sizeof(SOCKADDR)) == 0){
      cout << "Connection with server " << inet_ntoa(addr.sin_addr)
           << " established." << endl << endl;
   } else {
      cout << "Impossible to connect to server " << inet_ntoa(addr.sin_addr)
           << ":" << addr.sin_port
           << ". Please check host and port. \n";
      return 1;
   }    
   
       
   // Everything okay - start communicating with server
   char        buffersend[1024];
   char        bufferrecv[1024];
   int         bufpos = 0;
   int         bufIndex = 0;
   char        c;
   fd_set      fdSetRead;
   TIMEVAL     timeout;
   bool        mainloop = true;

   getch();
   system("cls");
   
   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";
   
   
   char eingabe = 0;
   
   int status1 = 0,
       status2 = 0,
       status3 = 0,
       status4 = 0,
       status5 = 0,
       status6 = 0,
       status7 = 0,
       status8 = 0;
       
   
   send(Socket, outport10, strlen(outport10), 0);
   Sleep(1);
   send(Socket, outport20, strlen(outport20), 0);
   Sleep(1);
   send(Socket, outport30, strlen(outport30), 0);
   Sleep(1);
   send(Socket, outport40, strlen(outport40), 0);
   Sleep(1);
   send(Socket, outport50, strlen(outport50), 0);
   Sleep(1);
   send(Socket, outport60, strlen(outport60), 0);
   Sleep(1);
   send(Socket, outport70, strlen(outport70), 0);
   Sleep(1);
   send(Socket, outport80, strlen(outport80), 0);
   
   printf("Software: Finnex \n");
   printf("Erstellt fuer AVR IO von Pollin");
   printf("\n\nAnzeige:  K1   K2   K3   K4   K5   K6   K7   K8");
   gotoxy(10,4);
   printf("O    O    O    O    O    O    O    O ");
   
   printf("\n\n\n\n\nSteuerung:\n K1=1\n K2=2\n K3=3\n K4=4\n K5=5\n K6=6\n K7=7\n K8=8\n 9=Alles auf Null setzen");
   while(mainloop) 
   {  
   //SEND DATA
         
     eingabe = getch();

     
     if(eingabe == 49 && status1 != 1)
     {
         send(Socket, outport11, strlen(outport11), 0);
         status1 = 1;
         eingabe = 0;        
     } 
     if(eingabe == 49 && status1 == 1)
     {
         send(Socket, outport10, strlen(outport10), 0);
         status1 = 0;
         eingabe = 0;        
     } 
     
     gotoxy(10,4);
     if (status1 == 0)
     {
          printf("O");      
     }
     if (status1 == 1)
     {
          printf("X");      
     }
       
     if(eingabe == 50 && status2 == 0)
     {
         send(Socket, outport21, strlen(outport21), 0);
         status2 = 1;
         eingabe = 0;        
     } 
     if(eingabe == 50 && status2 == 1)
     {
         send(Socket, outport20, strlen(outport20), 0);
         status2 = 0;
         eingabe = 0;        
     }  
     
     gotoxy(15,4);
     if (status2 == 0)
     {
          printf("O");      
     }
     if (status2 == 1)
     {
          printf("X");      
     } 
     
     if(eingabe == 51 && status3 == 0)
     {
         send(Socket, outport31, strlen(outport31), 0);
         status3 = 1;
         eingabe = 0;        
     } 
     if(eingabe == 51 && status3 == 1)
     {
         send(Socket, outport30, strlen(outport30), 0);
         status3 = 0;
         eingabe = 0;        
     } 
     
     gotoxy(20,4);
     if (status3 == 0)
     {
          printf("O");      
     }
     if (status3 == 1)
     {
          printf("X");      
     } 
     
     if(eingabe == 52 && status4 == 0)
     {
         send(Socket, outport41, strlen(outport41), 0);
         status4 = 1;
         eingabe = 0;        
     } 
     if(eingabe == 52 && status4 == 1)
     {
         send(Socket, outport40, strlen(outport40), 0);
         status4 = 0;
         eingabe = 0;        
     }  
     
     
     gotoxy(25,4);
     if (status4 == 0)
     {
          printf("O");      
     }
     if (status4 == 1)
     {
          printf("X");      
     } 
     
     
     if(eingabe == 53 && status5 == 0)
     {
         send(Socket, outport51, strlen(outport51), 0);
         status5 = 1;
         eingabe = 0;        
     } 
     if(eingabe == 53 && status5 == 1)
     {
         send(Socket, outport50, strlen(outport50), 0);
         status5 = 0;
         eingabe = 0;        
     }  
     
     gotoxy(30,4);
     if (status5 == 0)
     {
          printf("O");      
     }
     if (status5 == 1)
     {
          printf("X");      
     } 
     
     if(eingabe == 54 && status6 == 0)
     {
         send(Socket, outport61, strlen(outport61), 0);
         status6 = 1;
         eingabe = 0;        
     } 
     if(eingabe == 54 && status6 == 1)
     {
         send(Socket, outport60, strlen(outport60), 0);
         status6 = 0;
         eingabe = 0;        
     }
     
     gotoxy(35,4);
     if (status6 == 0)
     {
          printf("O");      
     }
     if (status6 == 1)
     {
          printf("X");      
     } 
     
     if(eingabe == 55 && status7 == 0)
     {
         send(Socket, outport71, strlen(outport71), 0);
         status7 = 1;
         eingabe = 0;        
     } 
     if(eingabe == 55 && status7 == 1)
     {
         send(Socket, outport70, strlen(outport70), 0);
         status7 = 0;
         eingabe = 0;        
     }  
     
     gotoxy(40,4);
     if (status7 == 0)
     {
          printf("O");      
     }
     if (status7 == 1)
     {
          printf("X");      
     } 
     
     if(eingabe == 56 && status8 == 0)
     {
         send(Socket, outport81, strlen(outport81), 0);
         status8 = 1;
         eingabe = 0;        
     } 
     if(eingabe == 56 && status8 == 1)
     {
         send(Socket, outport80, strlen(outport80), 0);
         status8 = 0;
         eingabe = 0;        
     } 
     
      gotoxy(45,4);
     if (status8 == 0)
     {
          printf("O");      
     }
     if (status8 == 1)
     {
          printf("X");      
     }                                          
     
     if(eingabe == 57)
     {
         send(Socket, outport10, strlen(outport10), 0);
         Sleep(1);
         send(Socket, outport20, strlen(outport20), 0);
         Sleep(1);
         send(Socket, outport30, strlen(outport30), 0);
         Sleep(1);
         send(Socket, outport40, strlen(outport40), 0);
         Sleep(1);
         send(Socket, outport50, strlen(outport50), 0);
         Sleep(1);
         send(Socket, outport60, strlen(outport60), 0);
         Sleep(1);
         send(Socket, outport70, strlen(outport70), 0);
         Sleep(1);
         send(Socket, outport80, strlen(outport80), 0);
         eingabe = 0;
         status1=0;
         status2=0;
         status3=0;
         status4=0;
         status5=0;
         status6=0;
         status7=0;
         status8=0;  
         
         gotoxy(10,4);
         printf("O    O    O    O    O    O    O    O ");      
     } 
                                              
                
   }

   cout << "Shutting down client. \n";
   closesocket(Socket);
   WSACleanup();
   cout << "\nPROGRAM EXIT";    
}

Wenn man das Programm ausführt wird die Steuerung nochmal beschrieben. Bei mir ist der Microcontroller auf die IP: 192.168.178.99 eingestellt. Muss man halt noch dementsprechen ändern.

Ich hoffe ich konnte helfen. Bei fragen im Quelltext einfach melden.
Ps. Beim komplemieren habe ich im DEV c++ noch eine Lib einfügen müssen sonst hat es nicht geklappt.

Mfg Finnex
 
bin ganz neu auf dem gebiet muss aber in einem schulprojekt ein programm für das avr-net-io board schreiben....

jetzt meine frage welche lib muss ich für dein programm einfügen ?(und wie tue ich das?)

mfg
 
Hallo,
also ich habe vor einer Weile mein Projekt verbessert und habe eine grafische Oberfläche hinzugefügt.
Das Programm ich mit Visual C# programmiert.
Man kann mit den Pfeiltasten die Ports 1-4 und mit den 4 Buttons Port 5-8 steuern.
Gedacht ist die Software um ein Fernsteuerungsauto mit W-Lan über den Rechner zu steuern.
Bilder liegen im Anhang.

Bei fragen einfach melden.


MfG Finnex
 

Anhänge

  • software_connect11.JPG
    software_connect11.JPG
    18 KB · Aufrufe: 2.094
  • software_connect44.JPG
    software_connect44.JPG
    20 KB · Aufrufe: 1.737

Neue Beiträge

Zurück