WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

USB -> RS 232 Adapter in GUI implementieren

 

space
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2011, 11:07     Titel: USB -> RS 232 Adapter in GUI implementieren
  Antworten mit Zitat      
Hallo Forengemeinde,

ich hoffe mir kann jemand einen Tipp geben oder gar einen Lösungsansatz:

Ich möchte ein Motorsteuerboard über RS232 ansprechen, da mein Rechner nur noch USB hat, habe ich mir ein USB->RS232-Adabterkabel (mit Software) gekauft.

Da ich mit einem GUI arbeite, muss ich diesen Adapter doch sicher in meinem GUI bzw. in meinem m.file irgendwie aufrufen/ansprechen/....

Wenn ja, wo muss das hin (ganz am Anfang, bevor das GUI sichtbar wird?) und wie mache ich das?

Hoffe so etwas hat hier schonmal jemand gelöst!^^ mathworks sagt dazu relativ "wenig"!

Bin für jeden Tipp und Lösungsansatz dankbar!!!
Private Nachricht senden Benutzer-Profile anzeigen


Martin1986
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 20.06.11
Wohnort: ---
Version: Win 2016b Linux 2016b
     Beitrag Verfasst am: 20.06.2011, 18:45     Titel: eine Frage dazu
  Antworten mit Zitat      
nutzt du Windoofs oder Linux?

oder Linux bei Linux weiß ich das du die Serielen Befehle einfach an die usb schnittstelle schicken kannst (/dev/usb)?... der Rest macht der Kernel und das Interface Wink
anbei mal das ganze als cpp Klasse vll hilft dir das ja weiter Wink... vll auch noch mal die Quellen checken
http://dns.easysw.com/~mike/serial/serial.html#2_2
die zweite Seite gibt es leider nicht mehr...

Code:
#include <stdio.h>   /* Standard input/output definitions */
#include <string.h>  /* String function definitions */
#include <unistd.h>  /* UNIX standard function definitions */
#include <fcntl.h>   /* File control definitions */
#include <errno.h>   /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
/*
Creator: Martin 2009
   sources: http://dns.easysw.com/~mike/serial/serial.html#2_2
          http://www.captain.at
CBAUD   Bit mask for baud rate
B0   0 baud (drop DTR)
B50   50 baud
B75   75 baud
B110   110 baud
B134   134.5 baud
B150   150 baud
B200   200 baud
B300   300 baud
B600   600 baud
B1200   1200 baud
B1800   1800 baud
B2400   2400 baud
B4800   4800 baud
B9600   9600 baud
B19200   19200 baud
B38400   38400 baud
B57600   57,600 baud
B76800   76,800 baud
B115200   115,200 baud
EXTA   External rate clock
EXTB   External rate clock
CSIZE   Bit mask for data bits
CS5   5 data bits
CS6   6 data bits
CS7   7 data bits
CS8   8 data bits
CSTOPB   2 stop bits (1 otherwise)
CREAD   Enable receiver
PARENB   Enable parity bit
PARODD   Use odd parity instead of even
HUPCL   Hangup (drop DTR) on last close
CLOCAL   Local line - do not change "owner" of port
LOBLK   Block job control output
CNEW_RTSCTS
CRTSCTS   Enable hardware flow control (not supported on all platforms)*/
#define mountpoint "/dev/ttyUSB0"   // look at usbport 0 if serialport "/dev/ttyS0"
#define BAUDRATE B115200         //choose 115200 as BAUDRATE
class RS232
{
   public:
   RS232()
   {
     
   }
   int fd;
     
   int open_port()
   {
      //int fd; /* File descriptor for the port */
      fd = open(mountpoint, O_RDWR | O_NOCTTY | O_NDELAY);
      if (fd == -1)      //if true Could not open the port
      {
         perror("open_port: Unable to open port - ");
      }
      else
         fcntl(fd, F_SETFL, 0);

        return (fd);
    }
   int init_port(int fd)
   {  
      struct termios options;
      tcgetattr(fd, &options);         //get config
      cfsetispeed(&options, BAUDRATE);   //set input Baudrate
      cfsetospeed(&options, BAUDRATE);   //set output Baudrate
      options.c_cflag |= (CLOCAL | CREAD);//Enable the receiver and set local mode
      options.c_cflag &= ~PARENB;         //No parity (8N1)
      options.c_cflag &= ~CSTOPB;
      options.c_cflag &= ~CSIZE;
      options.c_cflag |= CS8;

      tcsetattr(fd, TCSANOW, &options);   //set config
   }
     
   int send_port(char *chars)
   {
      int len = strlen(chars);         //get number of elements
      //printf("%i \n",len);
      chars[len] = 0x0d;               // stick a <CR> after the command
      chars[len+1] = 0x00;            // terminate the string properly
      int n = write(fd, chars,strlen(chars));//send and get number of send chars
      //printf("%i \n",n);
      if (n < 0)                     //if n=-1 send error
      {
         fputs("write failed!\n", stderr);
         return 0;
      }
      return 1;      
   }
   int read_port (char *result)  
   {  
      int iIn=0;
      while(iIn<=0)
      {
         fcntl(fd, F_SETFL, FNDELAY);      //disable serial receive block
         iIn = read(fd, result, 254);   //read in and get number of element
         result[iIn-1] = 0x00;
      }  
      //if (iIn < 0)
      //printf("%s \n",result);
      {
         if (errno == EAGAIN)
         {
            //printf("SERIAL EAGAIN ERROR\n");
            return 0;
         }
         else
         {
            //printf("SERIAL read error %d %s\n", errno, strerror(errno));
            return 0;
         }
      }                    
      return 1;
   }
     
   void close_port(void)
   {
      close(fd);
   }
};
Private Nachricht senden Benutzer-Profile anzeigen
 
space
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2011, 10:28     Titel:
  Antworten mit Zitat      
Nutze WIN7.... und das schlimme ist auch noch 64 bit!!!
Jetzt hat mir mein Matlab (2008b) ausgespuckt, dass es 64 bit nicht mag und nur mit 32 bit arbeiten will.

Wenn ich meine serielle Schnittstelle öffnen will....

Aber danke schonmal für das Beispiel, muss ich mich reinlesen und schauen wie ich integrieren kann.

Hat noch jemand damit Erfahrung bzw. einen weiteren Tipp??

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin1986
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 20.06.11
Wohnort: ---
Version: Win 2016b Linux 2016b
     Beitrag Verfasst am: 22.06.2011, 09:18     Titel: Nach einem Studium der Matlab hilfe
  Antworten mit Zitat      
XD wie es aussieht bringt matlab schon die funktionalität mit siehe matlabhilfe serial Wink also mal auf dumm gefragt was passiert wenn du statt
Code:
s1 = serial('COM1');
s1 = serial('USB');

nutzt Wink ich habe leider weder windoofs noch einen usb2rs232 converter Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin1986
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 20.06.11
Wohnort: ---
Version: Win 2016b Linux 2016b
     Beitrag Verfasst am: 22.06.2011, 09:34     Titel: Nach einem Studium der Matlab hilfe
  Antworten mit Zitat      
XD wie es aussieht bringt matlab schon die funktionalität mit siehe matlabhilfe serial Wink also mal auf dumm gefragt was passiert wenn du statt
Code:
s1 = serial('COM1');
s1 = serial('USB');

nutzt Wink ich habe leider weder windoofs noch einen usb2rs232 converter Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
space
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2011, 18:03     Titel:
  Antworten mit Zitat      
Du fragst Sache!....

Alles was ich bis jetzt immer gesehen habe, ist mit einem COM-Port via RS 232!
Aber USB hat meiner Meinung auch recht wenig mit seriell zu tun!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin1986
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 20.06.11
Wohnort: ---
Version: Win 2016b Linux 2016b
     Beitrag Verfasst am: 23.06.2011, 21:03     Titel:
  Antworten mit Zitat      
hat es auch nicht Wink versuche es einfach mal weil der converter sollte das verstehen und das richtige darauß machen Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.