Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Работа с COM портом  (Прочитано 1026 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн _vasiy_

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Работа с COM портом
« : 28 Июня 2013, 15:15:25 »
Интересует прием/передача данных из COM порта.

мои действия
1. настроил СОМ1
2. создал файл /home/com1/com_out - передача СОМ, в файле 123456789
3. создаю файл /home/com1/com_in -  приём СОМ
4. в термерали  cp /home/com1/com_out    /dev/ttyS1
   на микроконтроллер приходит 123456789 +2 символа
   если в НЕХ формате то  31 32 33 34 35 36 37 38 39 0D 0A     
   от куда берутся эти 2 символа 0D 0A? я так понимаю они означают конец передачи.
5. далее делаю cat /dev/ttyS1
   - с микроконтроллера передаю 123456789
   - в терминале пусто, а микроконтроллер получает сразу ответ от СОМ1: 123456789 - почему это происходит?

   - если делать так cat /dev/ttyS1
   - с микроконтроллера отправить  (пишу в НЕХ) 31 32 33 34 35 36 37 38 39 + 0D 0A  то в терминале 123456789, и опять от СОМ ответ  31 32 33 34 35 36 37 38 39 + 0D 0A??? от куда он??
   
   помогите понять почему это происходит.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Работа с COM портом
« Ответ #1 : 28 Июня 2013, 15:25:18 »
echo -n `cat /dev/ttyS1`
Wars ~.o

Оффлайн _vasiy_

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Работа с COM портом
« Ответ #2 : 28 Июня 2013, 15:39:24 »
echo -n `cat /dev/ttyS1`

после передачи микроконтроллером данных в СОМ1 - он их же и получает от СОМ1.

Оффлайн Белый пони

  • Любитель
  • *
  • Сообщений: 63
    • Просмотр профиля
Re: Работа с COM портом
« Ответ #3 : 28 Июня 2013, 21:40:22 »
   на микроконтроллер приходит 123456789 +2 символа
   если в НЕХ формате то  31 32 33 34 35 36 37 38 39 0D 0A     
   от куда берутся эти 2 символа 0D 0A? я так понимаю они означают конец передачи.


0x0D и 0x0A это символы перевода строкиhttp://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8#CR.2BLF

возможно порт при ваших настройках работает как консоль, и записанные байты рассматривает как команду и завершает её как положено символом перевода строки. можно попробовать с помощью stty в настройках ком-порта убрать флаг ICANON (а заодно и INLCR и ICRNL).

Оффлайн _vasiy_

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Работа с COM портом
« Ответ #4 : 29 Июня 2013, 01:47:09 »
1. спасибо за ссылку, теперь понятно что это за символы  0D 0A и для чего они.
2. флаг ICANON убрал, теперь  данные от микроконтроллера выводится в терминал (файл) сразу,  также и МК получает без символов 0D 0A.
   почитал про stty  попробовал с разными настройками СОМ

   проблема осталась одна - МК отправляет пакет и тут же его получает обратно.

Пользователь решил продолжить мысль 29 Июня 2013, 03:39:58:
проблема осталась одна - МК отправляет пакет и тут же его получает обратно.

 :) :) :) разобрался и с этим вопросом с помощью stty  убрал флаг -echo
« Последнее редактирование: 29 Июня 2013, 03:39:58 от _vasiy_ »

 

Страница сгенерирована за 0.019 секунд. Запросов: 22.