Например TDA7294

Форум РадиоКот • Просмотр темы - Linux и COM-порт
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб июл 26, 2025 06:13:46

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Linux и COM-порт
СообщениеДобавлено: Вт ноя 16, 2010 21:05:39 
Открыл глаза

Зарегистрирован: Вс янв 31, 2010 17:16:17
Сообщений: 63
Рейтинг сообщения: 0
Здравствуйте! Мое устройство общается с компьютером по UART. Я хочу сделать так, чтобы можно было просто писать и читать /dev/ttyS0.
С помощью программы minicom получается и принимать, и посылать данные на любой скорости.
С помощью простого чтения из /dev/ttyS0 почему-то ничего не принимается! Запись же в /dev/ttyS0 работает (устройство реагирует).
Вопрос: как устанавливать скорость ком-порта? Как сделать так, чтобы команды
Код:
cat /dev/ttyS0
и
Код:
echo > /dev/ttyS0
делали то, что хочется?
У команды setserial куча каких-то страшных параметров...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Linux и COM-порт
СообщениеДобавлено: Вт ноя 16, 2010 21:24:52 
Открыл глаза

Зарегистрирован: Вс янв 31, 2010 17:16:17
Сообщений: 63
Рейтинг сообщения: 0
А, извините, рано спросил. Решение найдено:
Код:
stty -F /dev/ttyS0 ispeed 115200 ospeed 115200

Всё работает :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Linux и COM-порт
СообщениеДобавлено: Ср ноя 17, 2010 17:12:02 
Вымогатель припоя
Аватар пользователя

Карма: 1
Рейтинг сообщений: 2
Зарегистрирован: Пт фев 20, 2009 12:26:26
Сообщений: 540
Рейтинг сообщения: 0
Заинтересовал меня данный вопрос. Не могли бы Вы подробнее описать свое устройство?


В качестве обмена опытом, проводил эксперименты по непосредственной записи из WEB интерфейса в порт, набросал такую программку:

Код:
#!/usr/bin/perl -w
use strict;
use CGI qw(:all);

print "Content-type: text/html\r\n\r\n";
my $portname = "ttyS0";
my $random = int(rand(1000));
my $readline;

open (my $port, "+>/dev/$portname") || die "cannot open port $portname: $!\n";
#system("stty 115200 raw < /dev/${portname}\n");
$/=":";

print $port "test string, $random\n\r";

$readline = <$port>;
print $readline;

close ($port);


Так как это моя первая программа на perl, то во многом еще не разобрался, к примеру со strict она не хочет устанавливать параметры порта. В настоящее время приходится его отключать, устанавливать параметры порта, затем включать :)

Проверяю с кабелем ttyS0 - ttyS1 и запущенным screen на терминале ttyS1, при запуске через web данного скрипта (установлен apache2, необходимые расширения для работы с perl, программа помещена в cgi-bin и на нее установлены права запуска и SGID на группу dialout) происходит запрос на screen, ответ, завершаемый двоеточием, отображается на экране браузера.

Естесственно это лишь набросок, демонствирующий возможность непосредственного общения web интерфейса с устройством на МК, потому и возник интерес к Вашему посту.

Изображение

Так примерно это все выглядит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Linux и COM-порт
СообщениеДобавлено: Ср ноя 17, 2010 18:47:49 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3378
Рейтинг сообщения: 0
На PureBasic в Linux можно работать с COM портом вот так:
Код:
If OpenSerialPort(0,"/dev/ttyS0",9600,#PB_SerialPort_NoParity,8,1,#PB_SerialPort_NoHandshake,256,256)
  WriteSerialPortString(0,"Радиокот")
  CloseSerialPort(0)
Else
  MessageRequester("", "Не удалось открыть COM порт!")
EndIf


А для Windows будет такой код:
Код:
If OpenSerialPort(0,"COM1",9600,#PB_SerialPort_NoParity,8,1,#PB_SerialPort_NoHandshake,256,256)
  WriteSerialPortString(0,"Радиокот")
  CloseSerialPort(0)
Else
  MessageRequester("", "Не удалось открыть COM порт!")
EndIf


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Linux и COM-порт
СообщениеДобавлено: Чт ноя 18, 2010 19:22:32 
Открыл глаза

Зарегистрирован: Вс янв 31, 2010 17:16:17
Сообщений: 63
Рейтинг сообщения: 0
Yftul писал(а):
Заинтересовал меня данный вопрос. Не могли бы Вы подробнее описать свое устройство?

Мое устройство - это 6 цифровых индикаторов и датчик TSOP (для приема команд с ИК пульта). По ком-порту устройству передаются команды, управляющие индикатором, а компьютеру от устройства - коды с пульта. Я хочу сделать нечто вроде проигрывателя - компьютер с музыкой, колонки и эта штучка.
Сейчас у меня команда инициализации выглядит так:
Код:
stty -F /dev/ttyS0 ispeed $sp ospeed $sp -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke ignbrk -brkint -icrnl -imaxbel

Я не стал разбираться в этих параметрах, а просто взял те, которые установил minicom.
Скрипты все, наверное, тоже напишу на перле, но инициализацию порта имеет смысл делать один раз при старте системы.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y