LinuxForum.Fans
Тема

Связь Linux и Windows по COM-порту. Ошибка!

Автор: DDA 14 сообщений 1790 просмотров
#354679

Есть 2 ПК - на одном установлена ОС Debian Linux на другом Windows XP. COM-порты этих ПК соединены кабелем. Если на обоих компах запустить Линукс и попытаться принять/отправить сообщения - то все проходит успешно - данные отправляются и принимаются. Если же на одном ПК запустить Linux, а на другом Windows, то сообщения из Линукса Windows принимает, а вот из Windows в Линукс сообщения не приходят.
Вот настройки порта в Линукс:

text
root@Parking:/home/parking# stty -a -F /dev/ttyS0 
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 10;
-parenb -parodd cs8 hupcl cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
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

Настройки в Windows:


Менял настройки как в Линукс, так и в Windows, но результата нет - Линукс не принимает сообщения от Windows. В чем может быть причина?

#354689

в видузе так ?

text
echo Вася пупкин > com1:
#354694
smaharbA написал:
в видузе так ?
text
echo Вася пупкин > com1:

Нет, сообщения отправляю через прогу, которая на скрине. Моя цель, есть устройство на микроконтроллере, которое согласуется с ПК по ком-порту, так вот, из Линукс данные ей отправляются, а Линуксу ничего не приходит от нее. На Винде все хорошо срабатывает. Также такую ситуацию заметил, что Линукс из Windows не принимает данные. Вот и нужно выяснить причину (скорее всего настройки порта ни Линухе).

#354696

счетчики разнообразных энергоносителей ?

#354698

+ тогда читайте стандарт на обмен данных, там не только 7 бит и не только читаемые
преамбулы/префиксы до первых 30 байт 8 битного, а так же контроль четности на сколь помню.

#354708

Права пользователю дали? (пользователь должен быть в группе dialout)
Далее если софтина у Вас работает в wine вы должны сделать символическую ссылку на устройство если оно не видит порт...
Делать примерно так:

Находясь в папке: ~/.wine/dosdevices/
Делаем ссылку на наше устройство:

text
ln -s /dev/ttyUSB0 com1

В данном случае подключено USB устройство...
Замените ttyUSB0 на ttyS0 (0 первый порт, 1 второй и т.д.) и wine должен будет увидеть ваш com port...


з.ы.
сформулируйте четко вопрос, а то какая то каша...
Треугольник все со всем общается по Вашим записям и тут же пишете что что то с чем то не контачит...
А что конкретно понять сложно...
Какое ПО у Вас в Линукс и какое в Windows...
Что с чем должно сообщаться и на каком этапе проблема.
Как они должны видеть друг друга (я не понял вы хотите чтобы линукс общался с контроллером или с windows)... и каким образом хотите принимать сообщения и откуда....

#354717
mozgfx написал:
Права пользователю дали? (пользователь должен быть в группе dialout)
Далее если софтина у Вас работает в wine вы должны сделать символическую ссылку на устройство если оно не видит порт...
Делать примерно так:

Находясь в папке: ~/.wine/dosdevices/
Делаем ссылку на наше устройство:
text
ln -s /dev/ttyUSB0 com1

В данном случае подключено USB устройство...
Замените ttyUSB0 на ttyS0 (0 первый порт, 1 второй и т.д.) и wine должен будет увидеть ваш com port...


з.ы.
сформулируйте четко вопрос, а то какая то каша...
Треугольник все со всем общается по Вашим записям и тут же пишете что что то с чем то не контачит...
А что конкретно понять сложно...
Какое ПО у Вас в Линукс и какое в Windows...
Что с чем должно сообщаться и на каком этапе проблема.
Как они должны видеть друг друга (я не понял вы хотите чтобы линукс общался с контроллером или с windows)... и каким образом хотите принимать сообщения и откуда....

В общем, есть микроконтроллер, который может принимать и посылать данные по com-порту. Нужно создать программу, которая будет писать данные в порт и принимать их оттуда, ОС должна быть Линукс. Далее, присоединил это устройство к Линуксу - данные к микроконтроллеру отправляются, он адекватно реагирует на команды, а вот от микроконтроллера Линукс данные не принимает. Делаю в одном терминале:

text
echo "команда" > /dev/ttyS0

В другом терминале читаю данные из порта:

text
cat /dev/ttyS0

Так вот, чтоб выявить, в чем проблема (может микроконтроллер работает неверно), я соединил два ПК с Линуксами по com-порту - между ними данные принимаются и передаются отлично, все работает. Затем, на одном ПК запустил Линукс, на другом Windows - Windows получает данные от Линукса, а вот если послать сообщение от Винды к Линуксу - ничего не приходит. Кроме того, микроконтроллер отлично работает с Виндой - данные передаются и принимаются. В общем, с Линуксом какие-то грабли. Все действия делаю под рутом. Помогите сначала настроить связь Линукс-Windows.

#354738

ТС, хотя и можно передавать данные и читать их напрямую, не удобнее ли будет воспользоваться minicom?

#354806
yars написал:
ТС, хотя и можно передавать данные и читать их напрямую, не удобнее ли будет воспользоваться minicom?

Пробовал через CuteCom на Линуксе, данные отправляются, но не принимаются.

#354886

Каким кабелем соединяете?
Попробуйте минимальный кабель
RxD -> TxD
TxD -> RxD
GND -> GND
Возможно просто уровни не совпадают, у МК обычно 0 - +5 В.
Судя по скрину у вас используется CTS - тогда в stty настройки другие

#354948
vic5710 написал:
Каким кабелем соединяете?
Попробуйте минимальный кабель
RxD -> TxD
TxD -> RxD
GND -> GND
Возможно просто уровни не совпадают, у МК обычно 0 - +5 В.
Судя по скрину у вас используется CTS - тогда в stty настройки другие

Кабель минимальный, как вы написали. Я отставил МК в сторону, хочу сначала добиться связи между Linux и Виндовс.
Что нужно поменять в stty? Включить модемное управление -clocal ?

#355352

если кабель минимальный никакого управления не надо. я делаю через структуру termios, stty не пользуюсь. посмотрите топик здесь по rs485 подставите свой бодрейт. способ проверенный

#355354

ps раздел программирование

Войдите или зарегистрируйтесь, чтобы ответить.