Модераторы: xvr

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> С++ в Linux и RS485 работа с протоколом, Работа с протоколом 
:(
    Опции темы
hente
Дата 25.3.2009, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.3.2009
Где: Томск

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



Код

Для начала надо убедится что PC действительно что то передает (осциллографом например). Потом надо смотреть, в чем стоит RTS и сколько просили прочесть от read.


PC в том то и дело передает осцилограф уже подключал...а вотREAD не читает не важно скока ему передаю байтов на чтение 1,2,3... из под Win запустил на постоянную отпраку... а под Linux'ом шляпа реад висит и ничего не читает
--------------------
  долой быдло кодеров!!!
PM MAIL   Вверх
xvr
Дата 25.3.2009, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(hente @ 25.3.2009,  08:16)
Код

Для начала надо убедится что PC действительно что то передает (осциллографом например). Потом надо смотреть, в чем стоит RTS и сколько просили прочесть от read.


PC в том то и дело передает осцилограф уже подключал...а вотREAD не читает не важно скока ему передаю байтов на чтение 1,2,3... из под Win запустил на постоянную отпраку... а под Linux'ом шляпа реад висит и ничего не читает

А там случайно hardware flow control не включен?

PM MAIL   Вверх
hente
Дата 25.3.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.3.2009
Где: Томск

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



Код

А там случайно hardware flow control не включен?


Что 
эт такое и с чем его едят?
--------------------
  долой быдло кодеров!!!
PM MAIL   Вверх
xvr
Дата 25.3.2009, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(hente @ 25.3.2009,  13:30)
Код

А там случайно hardware flow control не включен?


Что 
эт такое и с чем его едят?

Аппаратное управление потоком передачи с помощью сигналов RTS CTS DTR (и еще кто то - не помню  smile ) Если включено, а эти линии никуда не подключены, то работать не будет (повиснет)

PM MAIL   Вверх
hente
Дата 26.3.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.3.2009
Где: Томск

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



так ну я нашел переключение IXON/IXOFF вроде по док-ии эт оно ...но вот реад все равно не читает....
Пробую другой вариант функцией 
outsb() - вывести на порт работает нармально на др. конце прием в норме
insb() - пытаюст считать данные считывает полный бред какойто....

select'oм пробовал отловить момент прихода данных все равно хрень какаято....
время ожидания кончается и все.

--------------------
  долой быдло кодеров!!!
PM MAIL   Вверх
hente
Дата 28.3.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.3.2009
Где: Томск

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



Люди добрые спустя кучу времени опять прошу помощи....

Научился отлавливать прерывания от клавиатуры(irq 1), теперь 
надо переделать под отлавливаний прерыванйи от UART тупая подстановка (irq 3) 
ни к чему не приводит может кто делал?
По мимо номера прерывания соответственно меняю третий параметр в функции

request_irq(ном прерывания, имя функции, флаг прерывания)

при работе с клавиатурой использую SA_SHIRQ
а при работе с уартом SA_INTERRUPT

Может я еще что-то не делаю...посоветуйтеsmile) Заранее спасибо за помощь...

А вообще идея в том чтобы по прерываниям считывать/записывать данные в COM порт

--------------------
  долой быдло кодеров!!!
PM MAIL   Вверх
Oligarch
Дата 7.4.2009, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброе время суток.
Подскажите пожалуста! почему то при чтении из последовательного порта символ 0x0D (или просто "cr") принимается как 0x0A, причем порт настроен на неканонический ввод. И еще вопрос: как можно организовать задержки в Linux, что то типа delay()??? не нашел я там такой функции.
Заранее спасибо)
PM MAIL   Вверх
hente
Дата 8.4.2009, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.3.2009
Где: Томск

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



sleep() -задержка в секундах 
unsleep()  -в милисекундах

Это сообщение отредактировал(а) hente - 8.4.2009, 06:31
--------------------
  долой быдло кодеров!!!
PM MAIL   Вверх
Oligarch
Дата 8.4.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



помогите плиз.
Недавно сел за Linux. Создаю файл new.cpp следующего содержания:

//************************
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>

int main(void)
{
    int fd;
    fd=open("/dev/ttyS0",O_RDWR);
    return 1;
}
//************************

компилятор выдает следующее:
linux-m28h:/work # gcc new.cpp -o new
/tmp/ccGJsdKt.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

При этом если закоментировать вызов open(), то всё компилится.
может надо прикрепить какие нибудь библиотеки?
openSUSE у меня)
PM MAIL   Вверх
xvr
Дата 8.4.2009, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Oligarch @ 8.4.2009,  14:43)
компилятор выдает следующее:
linux-m28h:/work # gcc new.cpp -o new
/tmp/ccGJsdKt.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

C++ файлы компилировать и собирать нужно с помощью g++

PM MAIL   Вверх
hente
Дата 9.4.2009, 05:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.3.2009
Где: Томск

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



g++ new.cpp -o new ибудет тебе счастье smile 
--------------------
  долой быдло кодеров!!!
PM MAIL   Вверх
Oligarch
Дата 9.4.2009, 06:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо за помощь)
PM MAIL   Вверх
hente
Дата 9.4.2009, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.3.2009
Где: Томск

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



А как ты переключаешь режим приема/передачи....просто я так и не добился этого от драйвера....???может у тебя решение есть?
--------------------
  долой быдло кодеров!!!
PM MAIL   Вверх
hente
Дата 9.4.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.3.2009
Где: Томск

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



 smile  я победил RS-486 порт  smile  как ни странно работает... вот тока не нашел объяснения таму что прием осуществляется только тогда когда - скорость = 0 B(иначе при любых других скоростях только запись в порт smile )

щас код по умней напишу потом выложу может еще кому нибуть понадобится....

Это сообщение отредактировал(а) hente - 9.4.2009, 12:58
--------------------
  долой быдло кодеров!!!
PM MAIL   Вверх
Oligarch
Дата 11.4.2009, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня стоит MOXA CP-132, она сама занимается переключением приема и передачи.

Помогите пожалуста.
Почему то при чтении из порта при помощи команды read(), читается не больше 14 символов, сколько бы я не указывал читать в последнем параметре read(). Вот код конфигурации порта и чтения из него:

Код

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>

int main(void)
{
    int oldflags,fdDK ;
    unsigned char temp;
                char out[10],in[50];
    struct termios termios_struct;

//Конфигурирование порта
                fdDK = open("/dev/ttyM0",O_RDWR|O_NOCTTY);         /*ttyM0 - имя файла порта RS-485 (MOXA CP-132IS)*/
    oldflags = fcntl (fdDK, F_GETFL, 0);
    oldflags&=~O_NONBLOCK;
    fcntl (fdDK, F_SETFL, oldflags);

    tcgetattr(fdDK,&termios_struct);
    termios_struct.c_cflag|=(CLOCAL|CREAD);
    cfsetispeed(&termios_struct,B38400);
    cfsetospeed(&termios_struct,B38400);
    termios_struct.c_cflag&=~PARENB;
    termios_struct.c_cflag&=~CSTOPB;
    termios_struct.c_cflag&=~CSIZE;
    termios_struct.c_cflag|=CS8;
    termios_struct.c_lflag&=~(ICANON | ECHO | ECHOE | ISIG );
    termios_struct.c_iflag|=(INPCK | ISTRIP);
    termios_struct.c_iflag&=~IXON&~IXOFF&~IXANY&~ICRNL;
    termios_struct.c_iflag|=BRKINT;
    termios_struct.c_oflag&=~OPOST;
    termios_struct.c_cc[VMIN]=0;
    termios_struct.c_cc[VTIME]=10;
    tcsetattr(fdDK,TCSANOW,&termios_struct);
    //Очистка входного буфера порта
    while(read(fdDK,&temp,1));

//Обмен                
    sprintf(out,"$02K\r");
    if(write(fdDK,out,5)<0)return 0;
    read(fdDK,in,40);
    printf("%s\n",in);
                close(fdDK);
                return 1;
}

PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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