интерпретировать вывод stty для начала соединения с гипертерминалом

2087
Lucas

Я пытаюсь установить связь между встроенным устройством, на котором работает Linux, и ПК, на котором работает Windows XP через соединение RS232. В Windows я использую Hyperterminal, но не знаю, какие настройки мне следует использовать. Я должен установить

  • Бит в секунду
  • Биты данных
  • паритет
  • Стоп биты
  • Управление потоком

На устройстве Linux я побежал, sttyчтобы узнать настройки на этой стороне. Я не хочу менять эти настройки устройства linux, а только зачитывать их. Но мне трудно интерпретировать вывод.

~ $ stty -F / dev / ttyS0 - скорость 9600 бод; ряды 24; столбцы 80; intr = ^ C; выход = ^ \; стереть = ^ ?; убить = ^ U; eof = ^ D; eol =; eol2 =; начало = ^ Q; стоп = ^ S; susp = ^ Z; rprnt = ^ R; werase = ^ W; lnext = ^ V; флеш = ^ O; мин = 1; время = 0; -parenb -parodd cs8 hupcl -cstopb crelad clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -maxxbel opost -olcuc -ocrlonclonlcl -fdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iext

Bits per second предположительно придется установить 9600, но как мне интерпретировать оставшиеся выходные данные из stty?

Редактировать:

Хорошо, я сделал немного больше. Смотря, если gettyработает:

~# ps | grep getty 1557 root 1884 S /sbin/getty 115200 ttyS2 1558 root 1884 S /sbin/getty 38400 tty1 1600 root 2636 S grep getty 

Я предполагаю, что это означает, что я слушаю на устройстве, ttyS2и это также, кажется, указывает скорость передачи как 115200. Теперь я побежал, sttyчтобы увидеть настройки:

~# stty -F /dev/ttyS2 -a speed 115200 baud; rows 24; columns 80; intr = ^C; quit = ^\; erase = ^?; kill = ^X; eof = ^D; eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke 

Теперь, пытаясь использовать это в Hyperterminal, я бы предположил следующие настройки:

  • Бит в секунду: 115200
  • Биты данных: 8 (из-за cs8)
  • Четность: нет (из-за -parenb)
  • Стоповые биты: 1 (из-за -cstopb)
  • Управление потоком: нет (из-за -crtscts и -ixon)

Но это все еще не работает.

2

1 ответ на вопрос

2
David Schwartz

Попробуйте 8 бит, без проверки четности, один стоповый бит, программное управление потоком. Это происходит от:

«cs8» означает 8 бит данных. «-crtscts» означает отсутствие аппаратного управления потоком. «ixon» означает мягкое управление потоком. «-cstop» означает один стоповый бит.

Спасибо, это имеет смысл. Это все еще не работает, хотя. Возможно, придется проверить кабели и т. Д. Lucas 12 лет назад 0
Что-то слушает на этом порту? У вас работает getty или что-то подобное? В противном случае вы подключаетесь к порту, который не прослушивает ни один процесс. David Schwartz 12 лет назад 0
Благодаря вашему ответу я немного добавил свой вопрос, но, к сожалению, он все еще не работает. Есть идеи? Lucas 12 лет назад 0
Я бы попробовал перезагрузиться и вообще не связываться с устройством. Пусть `getty` справится с этим. Возможно, вы запутались в getty. Кроме того, получение обычно требует аппаратного управления потоком. David Schwartz 12 лет назад 0
Ладно, на нашей плате оказалось неправильное соединение. Но я отмечу это как ответ, потому что это именно то, что я спросил. Lucas 12 лет назад 0

Похожие вопросы