Re: OT: bra exempel på serieportskod i C
Janne:
> On Wed, 29 Jul 2015 07:55:33 +0000
> Michael Kjörling <michael@kjorling.se> wrote:
> > On 29 Jul 2015 06:22 +0200, from jan@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
Reply to: