1. Configuración:
Es la primera vez que se utiliza el puerto serie de Raspberry Pi para programar y es necesario configurarlo
Modifique el archivo cmdline.txt:
cd /boot/
sudo vi cmdline.txt
Elimina la parte entre 【】:
dwc_otg.lpm_enable=0 【console=ttyAMA0,115200】 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Modifique el archivo inittab:
cd /etc/
sudo vi inittab
Comente el contenido de la última línea: agregue el signo # antes de la línea
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Reinicie la Raspberry Pi:
sudo reboot
2. Funciones relacionadas:
Incluir archivos de encabezado:
#include <wiringSerial.h>
Prototipo de función | parámetro | Descripción |
---|---|---|
int serialOpen (char * dispositivo, int baudios); | char * dispositivo: La dirección del puerto serie. En Linux, es el directorio donde se encuentra el dispositivo. El valor predeterminado suele ser "/dev/ttyAMA0" ;int baud: Tasa de baudios;valor de retorno: Devuelve el descriptor de archivo si tiene éxito, devuelve -1 si falla |
Abra e inicialice el puerto serie |
vacío serialClose (int fd); | inf fd: Descriptor de archivo | Cierre el puerto serie asociado con fd |
void serialPutchar (int fd, unsigned char c); | int fd: Descriptor de archivo;carácter sin firmar c: Los datos a enviar | Envíe un byte de datos al puerto serie |
void serialPuts (int fd, char * s); | inf fd: Descriptor de archivo;char * s: Los datos a enviar | Envíe una cadena al puerto serie |
void serialPrintf (int fd, char * mensaje,…); | int fd: Descriptor de archivo;char * mensaje: Cadena formateada | Envíe una cadena al puerto serie (similar a printf (); función en la biblioteca estándar del lenguaje C) |
int serialDataAvail (int fd); | int fd: Descriptor de archivo;valor de retorno: Devuelve el número de bytes en caso de éxito, -1 en caso de error | Obtenga el número de bytes disponibles en el búfer de serie |
int serialGetchar (int fd); | int fd: Descriptor de archivo;valor de retorno: Los datos leídos | Leer un byte de datos del puerto serie y devolverlo. Si no hay datos disponibles en el búfer del puerto serie, esperará 10 segundos. Si todavía no hay datos después de 10 segundos, devolverá -1, por lo que Es mejor llamar al serialDataAvail(); juicio antes de leer. Tome varios caracteres y use el método de desplazamiento de dirección para leer |
vacío serialFlush (int fd); | int fd: Descriptor de archivo | Borrar los datos en el búfer de serie |
Incluir archivos de encabezado:
#include <wiringSerial.h>
#include <unistd.h>
Prototipo de función | Descripción |
---|---|
ssize_t read (int fd, void * buf, size_t count); | Funciones de biblioteca de E / S estándar en Linux, parafdLeer encontarBytes de datos almacenados enbufen |
ssize_t write (int fd, const void * buf, size_t count); | Funciones de biblioteca de E / S estándar en Linux, vaya afdEscribir encontarBytes de datos, el contenido esbufAntescontarBytes de datos |