|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
Снова я со своим терминалом. Вроде бы все настроил, но осталась одна загвоздка. При работе с терминалом - посылаю код, жду ответа. Двигаюсь дальше. Но возникла нестыковочка. Сразу скажу - я её просто проигнорировал, но это до поры до времени. Суть в следующем. Когда отправляю СМС, происходит два шага. Первый - ввод кода AT+CMGS="+7910ХХХХХХ" . При работе с СОМ портом это как Код: plaintext 1.
Код: plaintext
Com port выдает "> " и когда он это выдал, можно вводить вторую часть кода для отправки СМС Код: plaintext
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Разумеется, пока выполняется этот цикл - проходит 1+0,2*10=3 секунды и терминал(COM port) уже сам по себе готов принимать вторую часть кода. Вопрос: как мне считать это пресловутое сочетание "> " ниже пример как оно в жизни. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 19:19 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
Картинку то забыл. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 19:20 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
В теле цикла Код: plaintext
Но в результате код, при опросе COM porta подвисает (если есть read str ) Вот так он подвисает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Код: plaintext 1. 2. 3.
Итого имеем. Если с такой строкой read str то всё виснет Если без неё, то однажды код не сработает, так как не будет приглашения для ввода второй части. А ставить задержку Hang 2 от фонаря, также не хочется. Какие есть варианты и идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 19:30 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
О-О-О, А почему решено что read str виснет, может он терминатор ждет? Может лучше читать символ с таймаутом? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 19:50 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
Странно: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 21:17 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
Alexey Maslov, Полный код Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 21:28 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
ну яО-О-О, А почему решено что read str виснет, может он терминатор ждет? Может лучше читать символ с таймаутом?Не совсем понял, что имеете ввиду. Я Делаю опрос последней строки, чтобы продолжить выполнение кода. Опрашиваю COM port, Если в коде указать read str , то код останавливается и все подвисает, и если принудительно прервать выполнение программы и открыть терминал COM porta через PYTTY, то первое что выводится будет "> ", то есть COM port Ждёт ввода команды, даже если мы закрыли исполняемый файл (прервали выполнение кода). А определить, что терминал отправил мне команду "> ", я не могу!!! ответы от терминала/COM porta в данной ситуации не считываются (ну или я что то делаю не так). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 21:33 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
При этом, остальные части кода, где идет ответ - он опрашивает нормально Вот пример успешного выполнения команд В основном коде есть дополнительные блоки, которые устанавливают значения под конкретного оператора сотовой связи Итоги выполнения команд (возврат успешности выполнения команды) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 21:42 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
Как можете заметить, ответ на отправленную команду возвращается не сразу. В данном примере шаг в строках 0,5 секунд, то есть с момента отправки команды и до получения ответа об успешном выполнении проходит от 1,5 до 2,5 секунд, а иногда команды вообще не выполняться, так как происходит сбой/ошибка ... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 21:44 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
О-О-О// вот здесь подвохТак и я о том же. Команда "W Nr" тоже должна в модем писать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 22:29 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
Alexey MaslovТак и я о том же. Команда "W Nr" тоже должна в модем писать?Эта строк - проверочный код. Я её написал - на случай "вдруг сработает" В стандартной ситуации Код: plaintext 1. 2. 3. 4.
Код: plaintext 1. 2. 3. 4. 5.
Просто последний кусок кода - добавляет в строку в COM port по 1 символу и в результате у нас должно было бы получится в отправленном СМС сообщении 0123456789 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 22:51 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
О-О-Ону яО-О-О, А почему решено что read str виснет, может он терминатор ждет? Может лучше читать символ с таймаутом?Не совсем понял, что имеете ввиду. Я Делаю опрос последней строки, чтобы продолжить выполнение кода. Опрашиваю COM port, Если в коде указать read str , то код останавливается и все подвисает, и если принудительно прервать выполнение программы и открыть терминал COM porta через PYTTY, то первое что выводится будет "> ", то есть COM port Ждёт ввода команды, даже если мы закрыли исполняемый файл (прервали выполнение кода). А определить, что терминал отправил мне команду "> ", я не могу!!! ответы от терминала/COM porta в данной ситуации не считываются (ну или я что то делаю не так). read var это чтение строки. последовательности байт. пока не встретится терминатор. read *var это чтение одного символа. терминатор не ждется. Ну или читать строку с указанием длины чтения. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 22:56 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
Код Код: plaintext 1. 2. 3. 4. 5.
Первая часть - непосредственно отправка команды COM port-у Код: plaintext 1.
Код: plaintext 1. 2. 3.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
В результате, во внешнем текстовом файле у нас будут записи Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 22:59 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
ну я read var это чтение строки. последовательности байт. пока не встретится терминатор. read *var это чтение одного символа. терминатор не ждется. Ну или читать строку с указанием длины чтения.Сейчас попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 23:01 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
Фокус не удался На код Код: plaintext 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.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
При этом в ответах, записанных во внешний текстовой файл фигурируют цифры 62 и 32 и 10 А в пришедшей СМС был следующий текст "345at at", что больше похоже на правду, т.к при запуске PyTTY я ввожу at, а цифры 345 наверное ввелись из кода. Но проблема так и осталась символы " > " я так и не увидел. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 23:41 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
О-О-О, Команда read *var читает символ, но помещает в var не сам прочитанный байт, а его код. Соотношение примерно такое Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2016, 23:57 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
В коде есть условие ||(str'="") Которое, должно было сработать, так как мы получаем любое число, то есть str'="" (получили в ответ хоть что то). Кроме этого, мы сами вводим числа. Сейчас опробую, но шансов мало. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 08:19 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
О-О-ОВ коде есть условие ||(str'="") Которое, должно было сработать, так как мы получаем любое число, то есть str'="" (получили в ответ хоть что то). Кроме этого, мы сами вводим числа. Сейчас опробую, но шансов мало.Приглядитесь к выводу в отчет этих строк Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 08:59 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
ну я, Все работает, сейчас отчитаюсь. С вашей помощью, ускорил опрос других команд. Теперь вместо 2-2,5 сек, запрос длится 1-1,5 секунды. Но никогда не подумал, что условие наличие ответа str'="" не сработает! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 09:51 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
код был Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 09:52 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
Ну вроде бы все. Вот код успешной отправки СМС (двухшаговая его часть) Код: plaintext 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.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 10:07 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
P.S. Кстати, если стандартным способом (через костыли, через бесплатные приложения) одна СМС-ка приходила через 17-25 секунд с момента отправки, то сейчас она приходит уже ТОЛЬКО через 4-5 секунд. Практически моментально. С чем это связано - не знаю, но отличия по скорости доставки на телефон колоссальные. Одно но - для запуска модема нужна подготовительная часть - а она длится около 1 минуты, а потом нужно поддерживать его в активном состоянии (через запросы), иначе модем "засыпает" и все начинает сыпаться (идут коды ошибок). Поэтому, если вам важна быстрота отправки - то один вариант (постоянно опрашивать можем, отсылать команды пустышки), но реакция практически мгновенная (сигнализация, безопасность, ...) Если же отправляете СМС редко, и скорость реакции модема не важна, то можно пользоваться стандартными методами, там хоть и дольше все происходит, зато в интернете масса бесплатных приложений. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 10:17 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
О-О-О , Дабы не писать в коде комментарии вида Код: plaintext
и не засорять его непонятными кодами, но при этом не потерять читаемость, воспользуйтесь макросами, например:asciicodes.inc Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2016, 10:12 |
|
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
|
|||
---|---|---|---|
#18+
servit, по мне так лучше таскать с собой комментарии, чем тратить мозг на запоминание того, что же такое BS и как мне закодировать перевод строки. На мой взгляд, запомнить CRLF сложнее, чем $C(13,10) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2016, 05:48 |
|
|
start [/forum/topic.php?fid=39&msg=39227928&tid=1556474]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 161ms |
0 / 0 |