Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с com-портами под FreeBSD 
:(
    Опции темы
Алексаандр
Дата 2.8.2005, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.8.2005

Репутация: 1
Всего: 1



Я раньше не связывался с FreeBSD, но работал с com портами под windows на delphi.
там все просто - открываешь файл Com1 и работашь с ним, почти как с обычным файлом.
Но в FreeBSD целых шесть виртуальных устройств для порта:
/dev/ttyd? for callin ports
/dev/ttyid?
/dev/ttyld? corresponding callin initial-state and lock-state devices

/dev/cuaa? for callout ports
/dev/cuaia?
/dev/cuala? corresponding callout initial-state and lock-state devices
И с которым из них спрашивается надо работать?

Я соединил два com порта у компьютера и пытаюсь переслать из одного в другой
данные.
Текст программы-передатчика:
Код

#!/usr/bin/perl -w
use strict;
my $port = "/dev/ttyid1";
open(DEV, ">$port")
    || die "Cannot open $port: $_";
system("stty -f $port clocal cs8 -hupcl -cstopb
cread -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -ixoff -onlcr
 -ocrnl -oxtabs");
system("stty -f $port 19200");
print DEV "Hellow Word!\n";
close DEV;


Текст програмы-приемника:
Код

#!/usr/bin/perl -w
use strict;
my $port = "/dev/ttyid0";
my $s;
open(DEV, "<$port")
    || die "Cannot open $port: $_";
system("stty -f $port clocal cs8 -hupcl -cstopb
cread -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -ixoff -onlcr
 -ocrnl -oxtabs");
system("stty -f $port 19200");
while(1){
 while(defined($s = <DEV>)){
  print "->$s\n";
 };
};
close DEV;


Никаких ошибок не выдается, но и не работает.
Что я делаю не так?


PM MAIL   Вверх
Алексаандр
Дата 3.8.2005, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.8.2005

Репутация: 1
Всего: 1



Уже разобрался smile.
работает вот так:
Приемник:
Код

#!/usr/bin/perl -w
use strict;
my (
    $port,        
    $params,    
    $speed,        
);        
my $s;
$port = "/dev/cuaa1";
$speed=19200;
$params = "";
$params .= "-parenb ";    
$params .= "cs8 ";        
$params .= "-hupcl ";    
$params .= "-cstopb ";    
$params .= "cread ";        
$params .= "clocal ";    
$params .= "crtscts ";    
$params .= "igncr ";    
system("stty -f cuaia1 $params");
system("stty -f cuaia1 $speed");
my $p=0;
open(DEV, "+<$port") 
     || die "Cannot open $port: $_";
while(read DEV,$s,1){
 print "$s";
};
close DEV;
if($p){print ".\n";};
close DEV;

Передатчик:
Код

#!/usr/bin/perl -w
use strict;
my (
    $params,    
    $speed,        
);        
$speed=19200;
$params = "";
$params .= "-parenb ";    
$params .= "cs8 ";        
$params .= "-hupcl ";
$params .= "-cstopb ";
$params .= "cread ";
$params .= "clocal ";
$params .= "crtscts ";
open(DEV, "+</dev/cuaa0") 
    || die "Cannot open $port: $_";
system("stty -f /dev/cuaia0 $params")==0 || die "Error";
system("stty -f /dev/cuaia0 $speed")==0 || die "$_";
print DEV "Hellow word\n";
close DEV;

Но для чего в FreeBSD 6 устройств на каждый порт я все-еще не понял.

Это сообщение отредактировал(а) Алексаандр - 3.8.2005, 11:53
PM MAIL   Вверх
study
Дата 15.8.2005, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



А зачем в скрипт-приемник
Код
my $p=0;
, для чего она используется?
PM MAIL   Вверх
chaos
Дата 15.8.2005, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 3
Всего: 44



он там вообще не используетсЯ smile
PM WWW   Вверх
study
Дата 15.8.2005, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



я не пойму, почему передатчик открываем так вот:
Код
open(DEV, "+</dev/cuaa0")
это же вроде для чтения...
PM MAIL   Вверх
chaos
Дата 15.8.2005, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 3
Всего: 44



Цитата(study @ 15.8.2005, 11:07)
я не пойму, почему передатчик открываем так вот:
Код
open(DEV, "+</dev/cuaa0")
это же вроде для чтения...

плохо что не знаешь
вот тебе
Filename Read Write Append Create Trunc O_flags Char
< file yes no no no no RDONLY "r"

> file no yes no yes yes WRONLY TRUNC CREAT "w"

>> file no yes yes yes no WRONLY APPEND CREAT "a"

+< file yes yes no no no RDWR "r+"

+> file yes yes no yes yes RDWR TRUNC CREAT "w+"

+>> file yes yes yes yes no RDWR APPEND CREAT "a+"



PM WWW   Вверх
study
Дата 15.8.2005, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



блин, лохонулся smile
PM MAIL   Вверх
study
Дата 15.8.2005, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



Что-то у меня приемник не работает...
не может с порта считать информацию, зависает по-моему в этом цикле:
Код

while(read DEV,$s,1){
 print "$s";
};


PS: тестирую по Linux
PM MAIL   Вверх
study
Дата 15.8.2005, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

Репутация: нет
Всего: нет



Народ помогите разобраться с ком портом, очень надо...
Этот пример у меня не работает под linux, подскажите что исправить smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.