|
|
|
Работа с com портом. Проблема с символом 13
|
|||
|---|---|---|---|
|
#18+
Пишу программу по передаче данных через com порт. Для отладки использую один комп, порты ttyS0 и ttyS1 соединены нуль модемным кабелем. Оба порта открываю одним и тем же способом. В целом, передача данных проходит без проблем, но возникает проблема всего с одним символом. При передаче символа с кодом 13 с ttyS0, второй порт ttyS1 упорно принимает символ с кодом 10. В обратном направлении возникает та же проблема. С другими символами проблем не возникает, если передаешь символ 10, то и принимаешь символ 10. Подскажите возможную причину проблемы здесь или вышлите на мыло witek@yandex.ru Функции открытия порта, передачи и приема символов порта прилагаю. Открытие: Код: 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. //--------------------------------------------------------------------------- Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 13:45 |
|
||
|
Работа с com портом. Проблема с символом 13
|
|||
|---|---|---|---|
|
#18+
13 - перевод каретки, 10 - конец строки. в Windows используются оба одновременно, в других ОС - по одиночке. суть в том, что если это не бинарка, то разницы нет, если бинарка - то придется по-своему выкрычиватся. (нопример обозвать 1 спецсимволом: 1->1+1->1 10->1+2->10 13->1+3->13 и т.д. ) аффтопитезь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 13:50 |
|
||
|
Работа с com портом. Проблема с символом 13
|
|||
|---|---|---|---|
|
#18+
У меня так: c: CRTSCTS, CS8, CLOCAL, CREAD i: IGNPAR o: 0 l: 0 Сдается мне, дело в IGNPAR. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 14:02 |
|
||
|
Работа с com портом. Проблема с символом 13
|
|||
|---|---|---|---|
|
#18+
AkhУ меня так: c: CRTSCTS, CS8, CLOCAL, CREAD i: IGNPAR o: 0 l: 0 Сдается мне, дело в IGNPAR. Сорри. Попробуй сбросить в i: INLCR (NL->CR), ICRNL(перевод каретки в конец строки); в o: ONLCR, OCRNL А вообще, лучше, устанавливать нужные биты, а не изменять существующие ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 14:09 |
|
||
|
Работа с com портом. Проблема с символом 13
|
|||
|---|---|---|---|
|
#18+
Снятие флага Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 15:28 |
|
||
|
Работа с com портом. Проблема с символом 13
|
|||
|---|---|---|---|
|
#18+
NightSpiderСнятие флага Код: plaintext ICRNL? OPOST - как написано в документации, включение режима, определяемого реализацией по умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 15:44 |
|
||
|
Работа с com портом. Проблема с символом 13
|
|||
|---|---|---|---|
|
#18+
Разобрался. Проблема возникала из-за поднятого флага icrnl. После его снятия передача символа13 началась без проблем. Почему-то из моей программы флаг не снимался (запускаю под root) options.c_cflag &=~ICRNL; Если знаете почему это может происходить, скажите. Флаг снимал из терминалки stty -F /dev/ttyS0 -icrnl – помогло. Спасибо всем откликнувшимся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 16:33 |
|
||
|
Работа с com портом. Проблема с символом 13
|
|||
|---|---|---|---|
|
#18+
NightSpiderРазобрался. Проблема возникала из-за поднятого флага icrnl. После его снятия передача символа13 началась без проблем. Почему-то из моей программы флаг не снимался (запускаю под root) options.c_cflag &=~ICRNL; Если знаете почему это может происходить, скажите. Флаг снимал из терминалки stty -F /dev/ttyS0 -icrnl – помогло. Спасибо всем откликнувшимся. Не c flag, а i flag ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 16:39 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=329&tid=2030279]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
291ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 601ms |

| 0 / 0 |
