powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Serial Port
25 сообщений из 57, страница 2 из 3
Serial Port
    #38680184
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoJI4erчто я здесь сделал не так, что он мне при чтении всегда возвращает "-1"???Как минимум, получение потока ввода-вывода внутри цикла - странная идея.
Далее, согласно Java SE API , "минус один" возвращается, когда система ввода вывода диагностирует состояние "нечего читать".
Это состояние, в свою очередь, возникает в двух случаях:
1. Достигнут конец файлов при блокирующем вводе-выводе;
2. Нечего читать при неблокирующем вводе-выводе.
У вас, вероятно - вторая ситуация.
Соответственно, выход из цикла чтения должен делаться не "по минус один", а по получению "осмысленного пакета данных" или по (вашему) условию "кончай работу".
Плюс, чтобы не вешать систему постоянным опросом com-порта, рекомендуется вставлять Thread.yield() внутри цикла.
...
Рейтинг: 0 / 0
Serial Port
    #38680488
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov2. Нечего читать при неблокирующем вводе-выводе.
Здесь блокирующий, поток чтения всегда висит на строке
Код: java
1.
size = mInputStream.read(buffer);

если нечего читать. Другое дело, что ТС хочет создать свои грабли, чужие рабочие ему как-то не по душе. :)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    private class ReadThread extends Thread {

        @Override
        public void run() {
            super.run();
            while(!isInterrupted()) {
                int size;
                try {
                    byte[] buffer = new byte[64];
                    if (mInputStream == null) return;
                    size = mInputStream.read(buffer);
                    if (size > 0) {
                        onDataReceived(buffer, size);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                    return;
                }
            }
        }
    }
...
Рейтинг: 0 / 0
Serial Port
    #38680548
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

разобрался.. проблема где то на аппаратном уровне, или в настройках адресов SerialPort-a. На скорости 115200 устройство данные получает, но они совсем не понятные .. :\

-------
Пересылаю:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure TfrmMain.btnWriteClick(Sender: TObject);
var
  Buf: array[0..2] of byte;
begin
  buf[0]:=5;
  buf[1]:=0;
  buf[2]:=7;
  SendStream(CommPort,length(buf),@Buf[0]);
end;


А в ответ приходит:
Скрин


Но это так понимаю не правильное определение формата данных..
А вот со скоростями мне не понятно.. :\ Буду терроризировать тех. поддержку...
...
Рейтинг: 0 / 0
Serial Port
    #38680589
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoJI4erНо это так понимаю не правильное определение формата данных..
А вот со скоростями мне не понятно.. :\ Буду терроризировать тех. поддержку...

Порылся в интернете, и наткнулся на некое мнение, что проблема скоростей может заключается в том, что я под архитектурой ARM, пытаюсь работать с RS232 (Serial Port) библиотеками написанными под i386.

Как можно это проверить, кто знает?
...
Рейтинг: 0 / 0
Serial Port
    #38680610
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoJI4erКак можно это проверить, кто знает?
Я-бы сказал, что это бред. :)
Но если очень хочется, то в папке примеров в ндк есть проект hello-jni, перетащи его значимую часть в SerialPort в отдельную функцию и узнаешь, какая именно цепляется библиотека.
...
Рейтинг: 0 / 0
Serial Port
    #38680670
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

я к тому, что изначально ведь андроид не подразумевал использование Serial Port. И они не переписывали(дописывали) в ядре средства обращения и конфигурации портов под ARM системы... Может там на прямую через ASM нужно ... ?

Я поигрался с настройками скорости и получил результат:

Свыше 19200 он не пишет корректные данные.
Ниже 57600 он не получает данные(пишет "буфер пустой")
...
Рейтинг: 0 / 0
Serial Port
    #38680688
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoJI4erя к тому, что изначально ведь андроид не подразумевал использование Serial Port.
Это линукс, слегка порезанный. Он полноценно работает с портами, но из ядра вырезана часть поддерживаемых устройств. К примеру, cp210x, на большом линуксе в ядре имеется, а в андроиде - нет.
BoJI4erМожет там на прямую через ASM нужно ... ?
Интересно, а как у меня получается работать? :)
...
Рейтинг: 0 / 0
Serial Port
    #38680729
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman...Интересно, а как у меня получается работать? :)
Ты смог добраться до андроида с com портом и проверить? ... значит проблема заключается конкретно в моём устройстве. Учитывая то что там SU был порезанный до "невменяемости" .. может они и с серийниками что-то накосячили...
...
Рейтинг: 0 / 0
Serial Port
    #38680742
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoJI4erТы смог добраться до андроида с com портом и проверить?
Я убедился, что он рабочий и собственно на этом и расстался с железкой. Сейчас хватает андроидной-виртуалки. Как и в случаем с cp210x через usb.
BoJI4erможет они и с серийниками что-то накосячили...
Мне было-бы просто в этом убедиться: у нас осциллограф имеется.
...
Рейтинг: 0 / 0
Serial Port
    #38680747
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

хэх.. кстати я о нем что-то не подумал ))) ... сейчас буду электронщиков терроризировать)
...
Рейтинг: 0 / 0
Serial Port
    #38684381
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Можешь напомнить, какая версия Android стоит на твоём планшете..?
...
Рейтинг: 0 / 0
Serial Port
    #38684390
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoJI4er, там где serial port работал, что-то архаичное было, в районе 2.3.х. Рутованное, потому не исключаю, что доустановили от себя. Где usb serial - 4.1.х, но эта либа с usb будет работать на любом устройстве с usb-host и андроидом от 3.1.х.

Так что если на твоей железяке есть usb, посмотри в сторону usb serial и переходника usb->rs.
...
Рейтинг: 0 / 0
Serial Port
    #38684416
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

На железе есть USB, но строить кучу мостов из-за недоработки устройства плохая затея.
Я уверен на 100% что проблема в ОС. Потому что, после того как я(по совету производителя) обновил ОС прошивку до последней версии то все вообще перестало отправляться и приниматься. Когда вернул обратно то данные отправлялись и принимались (правда со старой ошибкой).

Я подключил переходник USB-> COM.
---------терминал--------[ 905.029663] usb 1-1.1: new full-speed USB device number 7 using musb-hdrc
[ 905.156188] usb 1-1.1: New USB device found, idVendor=0403, idProduct=6001
[ 905.163482] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 905.171173] usb 1-1.1: Product: USB Serial Converter
[ 905.176391] usb 1-1.1: Manufacturer: FTDI
[ 905.180633] usb 1-1.1: SerialNumber: FTAJUS95
---------------------
...
---------------
root@android:/dev # dmesg | grep USB
...
<3>[ 895.589752] hub 1-1:1.0: unable to enumerate USB device on port 2
<6>[ 905.029663] usb 1-1.1: new full-speed USB device number 7 using musb-hdrc
<6>[ 905.156188] usb 1-1.1: New USB device found, idVendor=0403, idProduct=6001
<6>[ 905.163482] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
<6>[ 905.171173] usb 1-1.1: Product: USB Serial Converter
---------------
Можешь подсказать, как мне с ним работать? :-)
---------терминал--------
130|root@android:/dev # dmesg | grep tty
<5>[ 0.000000] Kernel command line: console=ttyO0,115200n8 androidboot.console=ttyO0 root=ubi0:rootfs rw ubi.mtd=7,2048 init=/init rootfstype=ubifs rootwait=1
<6>[ 0.452545] omap_uart.0: ttyO0 at MMIO 0x44e09000 (irq = 72) is a OMAP UART0
<6>[ 1.198211] console [ttyO0] enabled
<6>[ 1.202392] omap_uart.1: ttyO1 at MMIO 0x48022000 (irq = 73) is a OMAP UART1
<6>[ 1.210113] omap_uart.2: ttyO2 at MMIO 0x48024000 (irq = 74) is a OMAP UART2
<6>[ 1.217773] omap_uart.3: ttyO3 at MMIO 0x481a6000 (irq = 44) is a OMAP UART3
<6>[ 1.225433] omap_uart.4: ttyO4 at MMIO 0x481a8000 (irq = 45) is a OMAP UART4
<6>[ 1.233093] omap_uart.5: ttyO5 at MMIO 0x481aa000 (irq = 46) is a OMAP UART5
<6>[ 1.282928] (hci_tty): inside hci_tty_init
<6>[ 1.287567] (hci_tty): allocated 251, 0
----------
...
Рейтинг: 0 / 0
Serial Port
    #38684433
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoJI4erЯ уверен на 100% что проблема в ОС.
Предлагаю вещи называть своими именами: производители железяки взяли исходники андроида и даже умудрились его запустить. Но о полноценной работе ОС на железяке не беспокоятся.

BoJI4erМожешь подсказать, как мне с ним работать? :-)
Ну дак usb serial library:
Код: xml
1.
2.
<!-- 0x0403 / 0x6001: FTDI FT232R UART -->
    <usb-device vendor-id="1027" product-id="24577" />


Должен поддерживать.
...
Рейтинг: 0 / 0
Serial Port
    #38684442
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanBoJI4erЯ уверен на 100% что проблема в ОС.
Предлагаю вещи называть своими именами: производители железяки взяли исходники андроида и даже умудрились его запустить. Но о полноценной работе ОС на железяке не беспокоятся. Ну по вопросу производителя я еще не уверен, я общаюсь с их российским представительством...

wadmanBoJI4erМожешь подсказать, как мне с ним работать? :-)
Ну дак usb serial library:
Код: xml
1.
2.
<!-- 0x0403 / 0x6001: FTDI FT232R UART -->
    <usb-device vendor-id="1027" product-id="24577" />


Должен поддерживать.

Точно.. что-то я этот момент упустил :-)... сейчас попробую проверить...
...
Рейтинг: 0 / 0
Serial Port
    #38684460
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoJI4erНу по вопросу производителя я еще не уверен, я общаюсь с их российским представительством...
В чем могут быть сомнения, что производитель не доработал вопрос согласованности своей железки со "своим" ПО?

К примеру: http://www.silabs.com/Support Documents/TechnicalDocs/an809.pdf эта штука уже давно интегрирована в ядро линукса, но в андроиде она вырезана. И чтоб её вернуть, необходимо пересобрать ядро под конкретную железку/смартфон. Это же касается, скорее всего, и твоей железки.

PDFAndroid is based off of the Linux kernel, so there is already support for the CP210x device built in to the kernel.
However, CP210x support is not included in a default kernel build configuration for most Android devices.
There are many devices that can run the Android operating system (OS), as well as several different versions of an
Android operating system. Because Android is open source, it can be changed based on the needs of device
manufacturers, wireless carriers and other developers. This fact makes it difficult to provide the exact steps for
rebuilding, as each developer may be using different hardware and a different build of Android specific to that
hardware.
...
Рейтинг: 0 / 0
Serial Port
    #38684552
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Появился еще один из вариантов, из-за которого может некорректно работать получение/отправка данных.
На устройстве включены (RTS и CTS сигналы). Закорочены они или нет я не знаю... возможно из-за них и не передаются данные...

Но вот только я не могу найти, как их включить на ПК (делфи).
...
Рейтинг: 0 / 0
Serial Port
    #38684570
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давно-бы уже взял готовую библиотеку для работы с ком-портами. Их, как грязи...

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363254(v=vs.85).aspx

Если-бы посмотрел осциллографом, то давно-бы уже определил виновника.
...
Рейтинг: 0 / 0
Serial Port
    #38684636
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

осциллографом смотрели. Из устройства данные не идут... никаких. Из ПК сигнал проскакивает...
...
Рейтинг: 0 / 0
Serial Port
    #38684776
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoJI4erНа устройстве включены (RTS и CTS сигналы). Закорочены они или нет я не знаю... возможно из-за них и не передаются данные...

Но вот только я не могу найти, как их включить на ПК (делфи).
Код: plaintext
1.
2.
3.
4.
mode /?
Последовательный порт:   MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s]
                                      [to=on|off] [xon=on|off] [odsr=on|off]
                                      [octs=on|off] [dtr=on|off|hs]
                                      [rts=on|off|hs|tg] [idsr=on|off]

Может у вас кабель и управление потоком не соответствуют друг другу?
...
Рейтинг: 0 / 0
Serial Port
    #38684802
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovМожет у вас кабель и управление потоком не соответствуют друг другу?

Дело не в кабеле. (прочитай всю тему) проблема конкретно в устройстве... и похоже на уровне адресного пере направления (так как BIOS здесь нет, тут напрямую через ASM приписаны адреса в прошивке)
...
Рейтинг: 0 / 0
Serial Port
    #38684805
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoJI4er, разработчики как-то объясняют такую фичеобразность работы с UART на их платформе?
...
Рейтинг: 0 / 0
Serial Port
    #38684900
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

представители написали "литература вам в помощь" (на вопрос работы под линуксом) а про андроид сказали "у нас клиенты не работают по схеме андроид+ rs232"


вот ответ на мой запрос:

Возможные причины:
* некорректная работа с сигналами управления RTS, DTR, CTS на стороне вашей программы на модуле и/или на стороне приемника (ПК)
* данные пришли, но забуферизированы в драйвере Windows или вашей программе-терминале. Были показаны вам возможно после того, как мигнул уровень RTS при перезагрузке после обновления.
* некорректно работающая программа-терминал на стороне Windows. Можно попробовать отключить управление сигналами передачи в настройках этой программы.


Сигнала с устройства нет вообще. На сколько я знаю "RTS/CTS" сигналы отключаются с помощью " cfg.c_cflag |= CRTSCTS ", верно?
...
Рейтинг: 0 / 0
Serial Port
    #38684911
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoJI4erвот ответ на мой запрос:
Феерично. Причина в чем угодно, кроме их поделия. :)
BoJI4erНа сколько я знаю "RTS/CTS" сигналы отключаются с помощью " cfg.c_cflag |= CRTSCTS ", верно?
Ссылку-то я уже давал, это включение "or". Выключение "and not":
Код: plaintext
1.
options.c_cflags &= ~CNEW_RTSCTS;



Еще раз: http://ulisse.elettra.trieste.it/services/doc/serial/config.html
...
Рейтинг: 0 / 0
Serial Port
    #38684936
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanBoJI4erвот ответ на мой запрос:
Феерично. Причина в чем угодно, кроме их поделия. :)
BoJI4erНа сколько я знаю "RTS/CTS" сигналы отключаются с помощью " cfg.c_cflag |= CRTSCTS ", верно?
Ссылку-то я уже давал, это включение "or". Выключение "and not":
Код: plaintext
1.
options.c_cflags &= ~CNEW_RTSCTS;



Еще раз: http://ulisse.elettra.trieste.it/services/doc/serial/config.html

CNEW_RTSCTS не определяется у меня, а CRTSCTS определяется... я где то в ресурсах вычитывал что это одно и то же... :\
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 2 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Serial Port
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]