Re: OT: bra exempel på serieportskod i C
On 29 Jul 2015 06:22 +0200, from j...@lillahusetiskogen.se: Det enda jag vill göra är lite trivial skicka och ta emot textsträngar via serieporten. Det är det som gör det så frustrerande, att det egentligen är så simpelt men ändå inte lyckas. Och att det gick så bra för ett decennium sedan. Om du bara vill skicka och ta emot data (inte behöver ha kontroll över enstaka pins på porten, t.ex.) så räcker det väl fint att öppna lämplig /dev/ttyS* med fopen() och sen hantera den som vilken filström som helst? fprintf(), fputs(), fgets(), fscanf(), fread(), fwrite(), fsync(fileno(...)), ..., och så fclose() på slutet. Då får du dessutom som bonus att du kan använda t.ex. Unix sockets istället utan ändringar i koden om du skulle vilja. -- Michael Kjörling • https://michael.kjorling.se • mich...@kjorling.se OpenPGP B501AC6429EF4514 https://michael.kjorling.se/public-keys/pgp “People who think they know everything really annoy those of us who know we don’t.” (Bjarne Stroustrup) -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20150729075533.gb1...@yeono.kjorling.se
Re: OT: bra exempel på serieportskod i C
On Wed, 29 Jul 2015 07:55:33 + Michael Kjörling mich...@kjorling.se wrote: On 29 Jul 2015 06:22 +0200, from j...@lillahusetiskogen.se: Det enda jag vill göra är lite trivial skicka och ta emot textsträngar via serieporten. Det är det som gör det så frustrerande, att det egentligen är så simpelt men ändå inte lyckas. Och att det gick så bra för ett decennium sedan. Om du bara vill skicka och ta emot data (inte behöver ha kontroll över enstaka pins på porten, t.ex.) så räcker det väl fint att öppna lämplig /dev/ttyS* med fopen() och sen hantera den som vilken filström som helst? fprintf(), fputs(), fgets(), fscanf(), fread(), fwrite(), fsync(fileno(...)), ..., och så fclose() på slutet. Då får du dessutom som bonus att du kan använda t.ex. Unix sockets istället utan ändringar i koden om du skulle vilja. Jag missade att berätta att jag vill kunna vifta på RTS också. /Janne -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20150729113530.5e71bcc5@igor
Re: OT: bra exempel på serieportskod i C
Janne: On Wed, 29 Jul 2015 07:55:33 + Michael Kjörling mich...@kjorling.se wrote: On 29 Jul 2015 06:22 +0200, from j...@lillahusetiskogen.se: Det enda jag vill göra är lite trivial skicka och ta emot textsträngar via serieporten. ... Om du bara vill skicka och ta emot data (inte behöver ha kontroll över enstaka pins på porten, t.ex.) så räcker det väl fint att öppna lämplig /dev/ttyS* med fopen() och sen hantera den som vilken filström Fungerar det även om CRTSCTS är satt (jag har inte provat så jag vet inte) ? Exempel på hur man öppnar en serieport finns i tty_openraw() i: http://turkos.aspodata.se/git/c/libaspoutil/tty_util.c exempel på användning: http://turkos.aspodata.se/git/openhw/bungard/ Jag missade att berätta att jag vill kunna vifta på RTS också. För att läsa av kontrollinjerna, se statserials källkod eller exempelvis: #include sys/ioctl.h #define LOG_IFERRNO(a,b) if (a) int home(void) { int ix; unsigned value; LOG_IFERRNO( (ix = ioctl(fd, TIOCMGET, value)) == -1, LOG_ERR) return -1; if (value TIOCM_RNG) return 1; // RI pin 9 / 22 (9pin/25pin d-sub) if (value TIOCM_CAR) return 1; // DCD pin 1 / 8 return 0; } Det borde vara något liknande för att sätta utsignaler. Titta på tty_ioctl(4) under Modem control. Hälsningar, /Karl Hammar --- Aspö Data Lilla Aspö 148 S-742 94 Östhammar Sverige 0173 140 57 -- To UNSUBSCRIBE, email to debian-user-swedish-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20150729102809.6a4b98039...@turkos.aspodata.se