-         

Ergebnis 1 bis 4 von 4

Thema: Serielle Schnittstelle ansteuern

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    27.08.2007
    Alter
    27
    Beiträge
    324

    Serielle Schnittstelle ansteuern

    Anzeige

    Ich lese immer wieder, dass Leute ihre Roboter mit ihren PC's Daten über die Serielle Schnittstelle austauschen lassen. Nur konnte ich bisher nirgenwo eine Anleitung finden, wie ich mit C oder lieber C++ die Serielle Schnittstelle meines WindowsXP Computers ansteuern kann. Kann mir da jemand auf die Sprünge helfen?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.01.2006
    Ort
    Mönchengladbach
    Beiträge
    544
    Win32API --- sollte unter WinXP noch funktionieren

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    27.08.2007
    Alter
    27
    Beiträge
    324
    schade, das machts um eniges komplizierter als ich gehofft hatte.
    trotzdem vielen dank

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    vielleicht hilft das?

    Code:
    //--------------------------------------------------------------------------
    // daten vom psion 3c über RS232 empfangen
    // katze am freitag den 13.7.7
    //--------------------------------------------------------------------------
    #include <stdio.h>
    #include <windows.h>
    #include <conio.h> // nur für getch. kein ansi-standard
    #include "signal.h"
    
    void sigfunc(int sig)
    {
      if(sig == SIGINT)
      {
        printf("Got Ctrl-c.\n");
        // hier muesste noch ein CloseHandle(port) rein
        getch();
        exit(1);
      }
      return;
    }
    
    int main(void)
    {
      HANDLE port;
      DCB dcb;
      unsigned char c;
      unsigned long dwNum;
    
      signal(SIGINT,sigfunc);
    
      port=CreateFile("COM1",
                      GENERIC_READ | GENERIC_WRITE, 
                      0, 
                      NULL, 
                      OPEN_EXISTING, 
                      0, 
                      NULL);       // serielle Schnittstelle oeffnen 
    
      if(!port){printf("failed to open port!\n");getch();exit(1);}
    
      if(!GetCommState(port, &dcb)){CloseHandle(port);printf("failed to get port!\n");getch();exit(1);}
    
      dcb.DCBlength=sizeof(dcb);
      dcb.BaudRate = CBR_38400;    // Datenrate    
      dcb.ByteSize = 8;            // Datenbits 
      dcb.Parity = 0;              // kein Paritätsbit 
      dcb.StopBits =  ONESTOPBIT;  // 1 Stoppbit
      dcb.fBinary = TRUE; 
      dcb.fParity = FALSE;
      dcb.fNull=TRUE; //FALSE;
      dcb.fDtrControl=0;
      dcb.fDsrSensitivity=FALSE;
      dcb.fRtsControl=0;
    
      //dcb.fRtsControl = 0;         // RTS auf -12 Volt 
      //dcb.fDtrControl = 1;         // DTR auf +12 Volt 
    
      if(!SetCommState(port, &dcb)){CloseHandle(port);printf("failed to set port!\n");getch();exit(1);}
    
      printf("listening..\n");
    
      while(1) // hier fuehrt nur ctrl+c wieder raus
      {
        if(ReadFile(port,&c,1,&dwNum,NULL));
        {
          printf("%c",c);
        }
      }
    
      CloseHandle(port);           // serielle Schnittstelle schliessen
      return(0);
    }
    gruesse von der katz

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •