|
|||||||
Как работать с последовательным портом на языке Си на Android-устройстве?
Время создания: 02.05.2024 16:31
Текстовые метки: android, андроид, linux, последовательный, порт, UART, tty, C, Си, язык
Раздел: Компьютер - Android - Программирование под Андроид
Запись: xintrea/mytetra_syncro/master/base/1714656699bod1r4ks79/text.html на raw.github.com
|
|||||||
|
|||||||
Работа с последовательными портами в Android (как и в любом другом Linux) не отличается от работы с любыми другими файлами и устройствами: вызовов open, read, write и close обычно хватает и лишь иногда к ним в довесок нужен ioctl. int fd = open("/dev/ttyMT3", O_RDWR); int result = write(fd, command, strlen(command)); Для работы с терминалом необходимо использовать модуль termio который предоставляет все необходимые структуры для настройки режима работы терминала, в т.ч и бодрейт. Дело в том, что изначально последовательное устройство настроено на режим работы в качестве терминала, т.е драйвер отдаст данные только после того, как устройство на UART пошлёт \n, или превысит размер внутреннего буфера для сообщения. Если вам нужно работать с бинарными данными и получать их «на лету» — необходимо настроить последовательный порт в «binary» режим: tcgetattr(modemFd, &tio); tio.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON); tio.c_oflag &= ~(OPOST); tio.c_cflag |= (CS8); tio.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG); tcsetattr(modemFd, TCSAFLUSH, &tio); Если же вам достаточно текстового терминального режима, то можно продолжить как есть и использовать fgets, fscanf и прочие удобные функции из libc! О том, как собрать нативную программу для смартфона и как вообще выбросить Android из него, читайте в отдельной статье. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|