writec stuff, gitignore not working ;-(
This commit is contained in:
@ -1,7 +1,8 @@
|
|||||||
CFLAGS=-I/opt/bcm2835/include
|
CFLAGS=
|
||||||
|
LIBS=-lwiringPi
|
||||||
|
|
||||||
writec.so: writec.o /opt/bcm2835/lib/libbcm2835.a
|
writec.so: writec.o
|
||||||
$(LD) -shared -o $@ $^
|
$(LD) -shared $(LIBS) -o $@ $^
|
||||||
|
|
||||||
writec.o: writec.c
|
writec.o: writec.c
|
||||||
|
|
||||||
|
@ -6,25 +6,25 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <bcm2835.h>
|
#include <wiringPi.h>
|
||||||
|
|
||||||
|
|
||||||
const uint8_t DE_PIN = RPI_V2_GPIO_P1_11;
|
const uint8_t DE_PIN = 0;
|
||||||
|
|
||||||
int set_rs485_mode(int fd) {
|
int set_rs485_mode(int fd) {
|
||||||
bcm2835_init();
|
wiringPiSetup();
|
||||||
bcm2835_gpio_fsel(DE_PIN, BCM2835_GPIO_FSEL_OUTP);
|
pinMode(DE_PIN, OUTPUT);
|
||||||
bcm2835_gpio_write(DE_PIN, LOW);
|
digitalWrite(DE_PIN, HIGH);
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t writec(int fd, char *buf, size_t count) {
|
ssize_t writec(int fd, char *buf, size_t count) {
|
||||||
bcm2835_gpio_write(DE_PIN, LOW);
|
digitalWrite(DE_PIN, LOW);
|
||||||
ssize_t r = write(fd, buf, count);
|
ssize_t r = write(fd, buf, count);
|
||||||
uint8_t lsr;
|
uint8_t lsr;
|
||||||
do {
|
do {
|
||||||
int r = ioctl(fd, TIOCSERGETLSR, &lsr);
|
int r = ioctl(fd, TIOCSERGETLSR, &lsr);
|
||||||
} while (!(lsr & TIOCSER_TEMT));
|
} while (!(lsr & TIOCSER_TEMT));
|
||||||
bcm2835_gpio_write(DE_PIN, HIGH);
|
digitalWrite(DE_PIN, HIGH);
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user