[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: