|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
так как я подключаюсь через USB, то научился перебирать USB и получать vendorID. Теперь 2 пути через Com порт (CDC device) или напрямую в USB (форум микроконтроллеров STM32). Собрал полностью проект по ссылке примера выше, пишет - 0 device. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2016, 10:40 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
Библитека поддерживает не все чипы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2016, 15:50 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
wadman, я убрал проверку на vendorID. У меня получилось открыть serialPort.open() получил true. C PERMISSION разбираюсь... Пользователь один раз должен подтвердить доступ к USB или ставить галочку запомнить разрешение. Разрешить по умолчанию нельзя? Если запомнить разрешение, то как убрать? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2016, 16:36 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
AromaFon, лучше все таки разобраться с вендором, по возможности не указывать все устройства. Без разрешения пользователя никак не обойтись. Сбросить настройки можно из управления приложениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2016, 18:13 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
wadman, Разобрался PERMISSION, запрашивает разрешение. Создал BroadcastReceiver, который слушает момент подключения, отключения USB. В момент подключения проверяю device.getVendorId() возвращает 1155, пока на этом остановился. Дальше serialPort.open() возвращает true. Теперь ломаю голову, как послать в порт строку getID + символ перевода строки, а потом прочитать ответ... Не знаю с какой стороны зайти. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2016, 20:12 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
AromaFon, write и read? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2016, 20:25 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
Как писать в порт уже понял serialPort.write("SET VOL 3200\n".getBytes());. Проверил работает. Теперь разбираюсь, как читать. Ура !!!!!!!!!!!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2016, 20:38 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
wadman, Я не могу понять, что в скобках писать serialPort.read(?) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2016, 20:41 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
AromaFonЯ не могу понять, что в скобках писать serialPort.read(?) Что именно не понятно? Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 09:27 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
wadman, я нашел такой код: читает 1 раз... Опять в поток попал..+ final?. Хочу просто строку ответа получить. Я как понимаю, у нас usbserial.jar разные... твой read не работает. И нужно где-то паузу лупить 1 сек. И если 2 раз читать, то не работает. В Visual есть чтение из Com порта по строчкам...., тут читает 2 строчки сразу c переносом на новую строчку. Буду ковырять. UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback(){ public void onReceivedData(byte[] arg) { String data = null; try { data = new String(arg, "UTF-8"); data.concat("/n"); tvAppend(ap,data); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }; private void tvAppend(TextView tv, CharSequence text) { final TextView ap = tv; final CharSequence ftext = text; runOnUiThread(new Runnable() { @Override public void run() { ap.append(ftext); } }); } Само чтение: serialPort.read(mCallback); ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 11:12 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
AromaFonтвой read не работает. Все работает. :) Просто стоит почитать про работу ком-портов, их устройство и настройки. А не методом научного тыка... То, что тут описываешь AromaFonИ если 2 раз читать, то не работает. В Visual есть чтение из Com порта по строчкам.... называется таймаутами и, скорее всего, надстройкой, которая делает работу по разделению строчек для тебя. Забудь про это, работай с портом так, будто всегда получаешь сырые данные. Без задержек и разделения на строки. Строк там вообще не бывает, биты и всё. Твой код из другой оперы. Пример, как читаю я: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
Выделенная функция определяет, что прочитанный пакет полный. В твоем случае это может быть наличие перевода строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 11:33 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
У меня ощущение, что ты даже примера не посмотрел... А он там достаточно простой. Я разобрался с этой библиотекой за пару часов. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 11:36 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
wadman, я собрал полностью проект из твоего примера со всеми типами... Там проверки мое устройство не проходило, ответ 0 - девайс. А это 10 классов... Плюс вывод устройств в список + подбор драйверов... Я даже код не мог прочитать. Я 1 месяц я в Android. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 11:57 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
AromaFon, даже их демка не показывает? https://github.com/mik3y/usb-serial-for-android/tree/master/usbSerialExamples/src/main/java/src/com/hoho/android/usbserial/examples ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 12:04 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
wadman, я эту демку и собирал. Мне сейчас не до нее. Вроде за хвост поймал один драйвер, там чтение не как у тебя. serialPort.read(mCallback); Там нет байтов. Байты выплывают в другом потоке, как я понял: UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback(){ public void onReceivedData(byte[] arg) { и тут же получается строка: data = new String(arg, "UTF-8"); ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 14:54 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
Я не могу эту data вытащить. Дальше data засовывается в другой поток runOnUiThread(new Runnable() { и там уже TextViw.setText(data); А я хочу просто на выходе String получить. А тут интерфейс поток.... И при 2 вызове уже ничего не читает. Везде скопирован этот код..... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 15:00 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
Сдаюсь... Ты нашел какую-то библиотеку и хочешь, чтоб с ней помогли. Но без ссылок на нее, без её названия. Придется самому разбираться. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 15:10 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
wadman, дело не в библиотеке, там тыкаться некуда. Есть read, ему дай mCallback.... и.т.д. Самое сложное позади. Достучался до устройства. А тут разберем потоки, интервалы, хандлы - главное, чтобы терпения хватило. А ссылка вот она: http://www.allaboutcircuits.com/projects/communicate-with-your-arduino-through-android/ Правда бьюсь уже ночь и день, нужен Хаб, замучился переключать с компа на устройство. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 16:08 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
AromaFonЯ не могу эту data вытащить. Дальше data засовывается в другой поток runOnUiThread(new Runnable() { и там уже TextViw.setText(data); А я хочу просто на выходе String получить. А тут интерфейс поток.... И при 2 вызове уже ничего не читает. Везде скопирован этот код..... и тут же получается строка: data = new String(arg, "UTF-8"); Не любой поток байт можно привести к строке... Вы точно знаете спецификацию обмена с вашим устройством...??? Ради примера Фискальный регистратор отвечает старт байт(типа 0x5) затем длина (0xFA) Затем сама строка(причём в кодировке 866) затем контрольная сумма.... Таким образом строка между 3 байтом и предпоследним data = new String(arg(c 3 по предпоследний), "СP866"); ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 16:09 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
AromaFonПравда бьюсь уже ночь и день, нужен Хаб, замучился переключать с компа на устройство. Установи genymotion, он умеет пробрасывать usb на виртуалку и работать (отлаживать) станет намного проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 17:22 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
wadman, Спасибо. Не догадался попробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 18:05 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
irbis_al, Я тоже к этому пришел, что ошибка вылетает при преобразовании byte к строке. Вот в этой строке ошибка. output = new String(arg, "UTF-8"); Я с byte никогда не работал. Вроде массив, попробую длину ответа проверять, все что не подходит - не гнать в строку. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 20:25 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
irbis_al, Чтобы найти ошибку пришлось JAR декомпилировать и заносить по классам в проект. Заодно убрал кучу лишнего кода. Ошибка была в строке // this.buffer = new byte['䀀']; я ее убрал и поставил this.buffer = new byte[16384]; Посылка этого иероглифа сносило чтение, читал 0.... Теперь понятно, что буфер был 䀀 китайский. Я как понял объявляют массив буфера на чтение. Его тоже подрежу, так как у максимум 1000... Теперь работает как часы. Отсюда вывод: Не добавляйте JAR к себе, лучше открывайте и заносите себе в проект по классам.... Заодно логи читать можно, исключения добавить, где нужно. И на будущее - всё в ваших руках... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2016, 16:23 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
wadman, Еще раз спасибо за совет пробросить USB на Genymotion. Разобрался с чтением из Com порта. Там запускается поток на чтение. А потом поток автоматически читает порт. Т.е. сначала запускаем 1 раз поток Read, а потом сколько хочешь write и получаешь ответы, считывает он все, что пришло в порт, все строки. Т.е. моя ссылка на JAR работает. Только ее расковырять ее надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2016, 14:51 |
|
Android Usb Serial Port
|
|||
---|---|---|---|
#18+
приветствую. скачал обе библиотеки по работе с COM. неправильно считываются данные из буфера и виснет еще, но при записи все проходит успешно. устройство ttyACM0. код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 10:41 |
|
|
start [/forum/topic.php?fid=13&msg=39266455&tid=1330731]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
141ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 242ms |
total: | 491ms |
0 / 0 |