Как установить четность, стоп-бит и биты данных для последовательного порта в Android с помощью библиотеки android-serialport-api? - PullRequest
2 голосов
/ 25 января 2012

Мне нужно читать с последовательного порта. И должен открыть последовательный порт с заданной скоростью передачи, четностью, битами данных и стоп-битом.

Я проверил android-serialport-api, но у него нет способа инициализации с этими настройками.

Кто-нибудь может знать, как решить эту проблему?

Любая помощь или предложение будут очень полезны.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 07 мая 2012

Я сделал так, чтобы включить EVEN Parity:

----------------------- bionic/libc/include/termios.h ------------------------
+static __inline__ void cfmakepareven(struct termios *s)
+{
+    s->c_iflag &= ~(IGNPAR | PARMRK); 
+    s->c_iflag |= INPCK;
+    s->c_cflag |= PARENB;
+    s->c_cflag &= ~PARODD;
+}
+

--------------- frameworks/base/core/jni/android_serial_port.cpp ---------------
        cfmakeraw(&cfg);
        cfsetispeed(&cfg, speed);
        cfsetospeed(&cfg, speed);
+       cfmakepareven(&cfg);

        if (tcsetattr(fd, TCSANOW, &cfg))
        {

Надеюсь, у вас все получится.

2 голосов
/ 17 апреля 2012

Скорость передачи данных может быть установлена ​​в конструкторе класса SerialPort в java.

Чтобы установить другие параметры, я нашел только способ установить его внутри кода jni. В проекте android-serialport-api есть папка jni с c-исходниками, которые связываются с базовым драйвером. Там вы можете настроить структуру termios. Например. Вы можете включить паритет, добавив строку cfg.c_cflag | = PARENB;

Описание настройки других параметров интерфейса termios можно найти здесь: http://en.wikibooks.org/wiki/Serial_Programming/termios

Когда вы внесли свои изменения в код c, вы должны скомпилировать его с помощью Android NDK. Сначала загрузите ndk с веб-сайта android и запустите в каталоге android-serialport-api программу ndk-build. Это скомпилирует ваш код на C и создаст необходимые библиотеки.

Описание можно найти здесь: http://developer.android.com/sdk/ndk/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...