Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не получается работа с COM портом 
V
    Опции темы
GolIy
Дата 5.6.2006, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Народ! Помогите ламаку smile Я в линухе де то с неделю ещё, мне нада программулину написать которая будет воркать с COM - портом...
Линух у меня крутиться в wmware, который в свою очередь стоит в WinXp.
Вообщем, в винде я с портом работаю - никаких проблем, в линухе никак. Компилятор gcc 4.1.1.

Вот код:
Код

//---------------------------------------------------------------------------
#include <stdio.h>  
#include <string.h>
#include <unistd.h>
#include <fcntl.h>   
#include <errno.h>
#include <termios.h> 
//---------------------------------------------------------------------------

int openPort(void)
{
  int fd;

  fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
  if (fd == -1)
  {
    perror("open_port: Unable to open /dev/ttyS0 - ");
  }
  else
    fcntl(fd, F_SETFL, 0);

  return (fd);
}

//---------------------------------------------------------------------------

int closePort(int fd)
{
  return close(fd);
}

//---------------------------------------------------------------------------

int writeToPort(int fd)
{
  int n = write(fd, "123", 3);

  if (n < 0)
    fputs("write() of 3 bytes failed!\n", stderr);

  return n;
}

//---------------------------------------------------------------------------

int readFromPort(int fd)
{
  char buff[2];
  fcntl(fd, F_SETFL, FNDELAY);
  int n = read(fd, buff, 1); // читаем один байт
  if (n < 0)
  {
    printf("Error: %d\n", errno);
    return 0 ;
  }
  
  printf("Bytes recieved: %d\n", n);
  printf(buff);
  fcntl(fd, F_SETFL, 0);  

  return n;
}

//---------------------------------------------------------------------------

int main(int argc, char* argv[])
{
  int fd = openPort();

  int n = writeToPort(fd);
  printf("Bytes sent: %d\n", n);
  
  readFromPort(fd);

  closePort(fd);
  
  return 0;
}


Вообщем то всё... вроде бы ошибаться то негде, но на строке
Код

  int n = read(fd, buff, 1); // читаем один байт
 
  возвращает -1, и в errno равно 11...  что означает из errno.h
 #define EINVFMT   11    /* Invalid format                   */

По железу делаю просто, подключаю к кому шнурок и замыкаю 2 и 3-й пин... Тут глюков не может быть, ибо при таком же раскладе в винде воркат... дело в софте, а что конкретно, затрудняюсь сказать, гугл не помог, мануальники тоже...  smile  Может изза wmware косяк... фик знат
плиз хелп,  даже за маленькую наводку буду очень благодарен smile
 
PM MAIL   Вверх
smalcom
Дата 5.6.2006, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не разбирал код , щас чесно занят вот ссылочка
на хороший сайтик

http://linoleum.leapster.org/

и конкретно на вопрос

http://en.tldp.org/HOWTO/Serial-Programming-HOWTO/index.html
http://www.easysw.com/~mike/serial/
 


--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
GrayCardinal
Дата 5.6.2006, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


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

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



GolIy,
Цитата
Может изза wmware косяк

А больше не из-за чего.

 

Это сообщение отредактировал(а) GrayCardinal - 5.6.2006, 19:23


--------------------
PM MAIL WWW   Вверх
bilbobagginz
Дата 6.6.2006, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

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



обычно, когда с посл. портом работают, работают и со структурами из <termios.h>
через них можно посмотреть и изменить настройки посл. устройства:
tcgetattr(), tcsetattr() , в man termios найдешь. 


пока.  

Это сообщение отредактировал(а) bilbobagginz - 6.6.2006, 20:19


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
GolIy
Дата 10.6.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо всем за отклики... в общем, так толком и не разобрался с траблой... пришлось отдельно ставить линукс... и тогда заворкало, с тем же исходником...
тут либо я неправильно настроил Serial Port в vmware, либо это глюк wmware... хотя чё там настравить, добавил сериал порт, и выбрать "Use physical serial port"... 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Клуб юнуксоидов"
powerfox
ZeeLax
nickless

Что такое клуб юнуксоидов?

Это место более свободного общения специалистов и любителей *NIX систем.


Новичкам: Этот раздел предназначен в основном именно для общения а не решения проблем.


Правила всего раздела Linux/UNIX сюда не распространяются, но здесь имеются свои правила:


  • Оскорбления запрещены.
  • Holy wars разрешены, но в небольших размерах. Если вы создаёте что-то уровня Windows vs. Linux, то постите это в Религиозных войнах, пожалуйста.
  • Если вы хотите выставить здесь какое-либо своё творение - милости просим.
  • За интересные новости, интересные статьи, высказывания и юмор (в тему) + в репу.

Короче, по репе получите по полной программе ;-) Happy hacking!



Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

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


 




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


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

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