Freesco, NND, CDN, EOS

http://www.freesco.pl
Dzisiaj jest wtorek, 24 czerwca 2025, 22:34

Strefa czasowa UTC+2godz.




Nowy temat Odpowiedz w temacie  [ Posty: 7 ] 
Autor Wiadomość
Post: piątek, 14 października 2005, 14:08 
Offline

Rejestracja: poniedziałek, 26 września 2005, 23:19
Posty: 23
Lokalizacja: Kraków / Wodzisław Slaski
Witam, potrzebuje programu do oblslugi RS232 , znalazlem odpowiedni program w sieci, kompilacja przebiega ok, jednak po uruchmomieniu cos jest nie tak... :/ Prosze o sprawdzenie ponizszego kodu i ew podanie podobnych dzialajacych w nnd.

: [/] [] ()
        #include <sys/types.h>
        #include <sys/stat.h>
        #include <fcntl.h>
        #include <termios.h>
        #include <stdio.h>

        /* baudrate settings are defined in <asm/termbits.h>, which is
        included by <termios.h> */
        #define BAUDRATE B9600           
        /* change this definition for the correct port */
        #define MODEMDEVICE "/dev/ttyS0"
        #define _POSIX_SOURCE 1 /* POSIX compliant source */

        #define FALSE 0
        #define TRUE 1

        volatile int STOP=FALSE;

        main()
        {
              printf("Start");
          int fd,c, res;
          struct termios oldtio,newtio;
          char buf[255];
        /*
          Open modem device for reading and writing and not as controlling tty
          because we don't want to get killed if linenoise sends CTRL-C.
        */
         fd = open(  MODEMDEVICE, O_NOCTTY );
         if (fd <0) {perror(MODEMDEVICE); exit(-1); }
        printf("2");
         tcgetattr(fd,&oldtio); /* save current serial port settings */
         bzero(&newtio, sizeof(newtio)); /* clear struct for new port settings */
       
        /*
          BAUDRATE: Set bps rate. You could also use cfsetispeed and cfsetospeed.
          CRTSCTS : output hardware flow control (only used if the cable has
                    all necessary lines. See sect. 7 of Serial-HOWTO)
          CS8     : 8n1 (8bit,no parity,1 stopbit)
          CLOCAL  : local connection, no modem contol
          CREAD   : enable receiving characters
        */
         newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
         printf("3");
        /*
          IGNPAR  : ignore bytes with parity errors
          ICRNL   : map CR to NL (otherwise a CR input on the other computer
                    will not terminate input)
          otherwise make device raw (no other input processing)
        */
         newtio.c_iflag = IGNPAR | ICRNL;
         
        /*
         Raw output.
        */
         newtio.c_oflag = 0;
         printf("4");
        /*
          ICANON  : enable canonical input
          disable all echo functionality, and don't send signals to calling program
        */
         newtio.c_lflag = ICANON;
         
        /*
          initialize all control characters
          default values can be found in /usr/include/termios.h, and are given
          in the comments, but we don't need them here
        */
         newtio.c_cc[VINTR]    = 0;     /* Ctrl-c */
         newtio.c_cc[VQUIT]    = 0;     /* Ctrl-\ */
         newtio.c_cc[VERASE]   = 0;     /* del */
         newtio.c_cc[VKILL]    = 0;     /* @ */
         newtio.c_cc[VEOF]     = 4;     /* Ctrl-d */
         newtio.c_cc[VTIME]    = 0;     /* inter-character timer unused */
         newtio.c_cc[VMIN]     = 1;     /* blocking read until 1 character arrives */
         newtio.c_cc[VSWTC]    = 0;     /* '\0' */
         newtio.c_cc[VSTART]   = 0;     /* Ctrl-q */
         newtio.c_cc[VSTOP]    = 0;     /* Ctrl-s */
         newtio.c_cc[VSUSP]    = 0;     /* Ctrl-z */
         newtio.c_cc[VEOL]     = 0;     /* '\0' */
         newtio.c_cc[VREPRINT] = 0;     /* Ctrl-r */
         newtio.c_cc[VDISCARD] = 0;     /* Ctrl-u */
         newtio.c_cc[VWERASE]  = 0;     /* Ctrl-w */
         newtio.c_cc[VLNEXT]   = 0;     /* Ctrl-v */
         newtio.c_cc[VEOL2]    = 0;     /* '\0' */
       
        /*
          now clean the modem line and activate the settings for the port
        */
         tcflush(fd, TCIFLUSH);
         tcsetattr(fd,TCSANOW,&newtio);
        printf("5");
        /*
          terminal settings done, now handle input
          In this example, inputting a 'z' at the beginning of a line will
          exit the program.
        */
         while (STOP==FALSE) {     /* loop until we have a terminating condition */
         /* read blocks program execution until a line terminating character is
            input, even if more than 255 chars are input. If the number
            of characters read is smaller than the number of chars available,
            subsequent reads will return the remaining chars. res will be set
            to the actual number of characters actually read */
            res = read(fd,buf,255);
            buf[res]=0;             /* set end of string, so we can printf */
            printf(":%s:%d\n", buf, res);
            if (buf[0]=='z') STOP=TRUE;
         }
         /* restore the old port settings */
         tcsetattr(fd,TCSANOW,&oldtio);
        }

     


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: piątek, 14 października 2005, 15:27 
sorka, ale my tu raczej nie jestesmy programistami C++


Na górę
  
 
 Tytuł:
Post: piątek, 14 października 2005, 15:51 
Offline

Rejestracja: poniedziałek, 26 września 2005, 23:19
Posty: 23
Lokalizacja: Kraków / Wodzisław Slaski
:( A moge prosic zeby ktos skompilowal to i sprobowal uruchomic pod NND, bo wydaje mi sie ze jest to problem z systemem a nie z samym kodem :/


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: piątek, 14 października 2005, 16:23 
Offline
MODERATOR

Rejestracja: sobota, 30 lipca 2005, 14:08
Posty: 3984
Lokalizacja: Rzeszów
Kompiluje sie bez problemu, uruchamia tez bez zadnego ostrzezenia, ani bledu, ale nic nie wyrzuca do konsoli. Moze bys podal jakis manual do tego, albo strone skad to sciagnales, bo jak juz Ci widget napisal to nie jest forum programistow i np. ja nie bede siedzial i studiowal kodu, zeby sprawdzac jak program dziala.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: piątek, 14 października 2005, 16:47 
Offline

Rejestracja: poniedziałek, 26 września 2005, 23:19
Posty: 23
Lokalizacja: Kraków / Wodzisław Slaski
tasiorek pisze:
, ale nic nie wyrzuca do konsoli


I wlasnie na tym polega problem :/ Kolesiowi na innym linuxie (chyba slack) program chodzil bez problemu, a u mnie (NND) tez wlasnie to samo po uruchomieniu moge pisac, ale nic to nie daje, i zeby go zakonczyc pozostaje CTRL+C :/

Kilka programow o podobnej tematyce tez kompiluje sie bez problemu , ale wyskakuje blad "Naruszenie ochrony pamieci" , wie ktos co jest nie tak !?

Kod sciagniety z http://www.tldp.org/HOWTO/Serial-Programming-HOWTO/x115.html,
jesli ktos mialby gotowy programik do komunikacji po RS232 te chetnie przyjme kazda pomoc ;)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: piątek, 14 października 2005, 18:13 
Offline
MODERATOR

Rejestracja: sobota, 30 lipca 2005, 14:08
Posty: 3984
Lokalizacja: Rzeszów
O programowaniu mam bardzo male pojecie, o komunikacji przez potr szeregowy tez, ale google pokazalo mi to: http://gersona.prokocim.krakow.pl/~maci ... html#toc14
http://www.linuxfan.pl/sprzet/sprzet-20 ... 2/851.php3
Moze Ci sie przyda.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: sobota, 15 października 2005, 11:36 
Offline

Rejestracja: poniedziałek, 26 września 2005, 23:19
Posty: 23
Lokalizacja: Kraków / Wodzisław Slaski
http://gersona.prokocim.krakow.pl/~maciek/kopie/www.linux.gnu.pl/howto/Serial-HOWTO.pl-13.html#ss13.4 pisze:
13.4 Porty szeregowe są powolne, lub mogą przesyłać informacje tylko w jedną strone.

Prawdopodobnie konflikt IRQ. Upewnij się, żę IRQ nie są wspólne. Sprawdź wszystkie karty (szeregowe, sieciowe, SCSI, itd.). Upewnij się, że ustawienia mikroprzełączników i parametry ustawiane przez setserial są poprawne dla wszystkich urządzeń szeregowych. Sprawdź /proc/interrupts i /proc/ioports w poszukiwaniu konfliktów.


I to faktycznie moze byc moj bol, tylko jak pisalem ogolnie na LINUX raczej sie nie znam :/ Moze ktos napisac co zrobic, aby sprawdzic zaproponowane powyzej rozwiazanie ?


Na górę
 Wyświetl profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 7 ] 

Strefa czasowa UTC+2godz.


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
cron
Technologię dostarcza phpBB® Forum Software © phpBB Group
Hosting: Compus-Net
RobertKonik.pl