ПО для работы с com портом

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

batan
Сообщения: 72

ПО для работы с com портом

Сообщение batan »

необходимо подключить pH метр через ком порт и собсно какой-нить прогой снимать показания прибора в режиме реалтайм. мот кто сталкивался или знает как такое реализовать?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5456
ОС: Gentoo

Re: ПО для работы с com портом

Сообщение /dev/random »

Попробуйте dd if=/dev/ttyS0 bs=1
Спасибо сказали:
batan
Сообщения: 72

Re: ПО для работы с com портом

Сообщение batan »

/dev/random писал(а):
04.02.2010 16:09
Попробуйте dd if=/dev/ttyS0 bs=1


batan@virus:~$ dd if=/dev/ttyS0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 6,9072e-05 s, 0,0 kB/s

что при подключонном, что при одключонном - всё одинаково.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: ПО для работы с com портом

Сообщение eddy »

Код: Выделить всё

int comfd;
void tty_init(){
int i;unsigned char c[1000];
    fprintf(outfile,"\nОткрываю порт...\n");
    if ((comfd = open("/dev/ttyS0",O_RDWR|O_NOCTTY|O_NONBLOCK)) < 0){
        fprintf(stderr,"Can't use port %s\n",comdev);
        exit(1);
    }
    fprintf(outfile, " OK\nПолучаю текущие настройки порта...\n");
    ioctl(comfd,TCGETA,&oldtty); // Узнаем текущие параметры порта
    tty = oldtty;
    tty.c_lflag    = 0;
    tty.c_iflag    = BRKINT;
    tty.c_oflag    = 0;
    tty.c_cflag    = B9600|CS8|CREAD|CLOCAL|PARENB;
    tty.c_cflag &= ~PARODD;
    tty.c_cc[VMIN] = 0;
    tty.c_cc[VTIME] = 1;
    ioctl(comfd,TCSETA,&tty);
    fprintf(outfile," OK\n");
}

А потом просто read(comfd, data)
Ничего сложного (только флаги и скорость правильные выставите) :)
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
batan
Сообщения: 72

Re: ПО для работы с com портом

Сообщение batan »

eddy писал(а):
04.02.2010 17:51

Код: Выделить всё

int comfd;
void tty_init(){
int i;unsigned char c[1000];
    fprintf(outfile,"\nОткрываю порт...\n");
    if ((comfd = open("/dev/ttyS0",O_RDWR|O_NOCTTY|O_NONBLOCK)) < 0){
        fprintf(stderr,"Can't use port %s\n",comdev);
        exit(1);
    }
    fprintf(outfile, " OK\nПолучаю текущие настройки порта...\n");
    ioctl(comfd,TCGETA,&oldtty); // Узнаем текущие параметры порта
    tty = oldtty;
    tty.c_lflag    = 0;
    tty.c_iflag    = BRKINT;
    tty.c_oflag    = 0;
    tty.c_cflag    = B9600|CS8|CREAD|CLOCAL|PARENB;
    tty.c_cflag &= ~PARODD;
    tty.c_cc[VMIN] = 0;
    tty.c_cc[VTIME] = 1;
    ioctl(comfd,TCSETA,&tty);
    fprintf(outfile," OK\n");
}

А потом просто read(comfd, data)
Ничего сложного (только флаги и скорость правильные выставите) :)

простите, я в этом мало что понимаю, но система пишет

Код: Выделить всё

batan@virus:~$ read(comfd, data)
bash: syntax error near unexpected token `comfd,'
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: ПО для работы с com портом

Сообщение eddy »

Какой баш? Это на С. Если не понимаете, попробуйте minicom какой-нибудь.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
Skaarj
Сообщения: 311
ОС: Slackware

Re: ПО для работы с com портом

Сообщение Skaarj »

Рекомендую попробовать komport.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: ПО для работы с com портом

Сообщение Denjs »

Могу за (относительно) немного денег переделать утилиту поиска оборудования на ком-порту из OTPD под ваши нужды.
Естественно, с вас спецификации протокола оборудования.
:D

Также - если вы знаете JavaScript и/или QtScript - вы можете переделать под свои нужны com2tcp сервер из решений QDroid . В этом случае вам также надо будет осмотре6ться в основах фреймворка QDroid, но я вам с удовольствием с этим помогу. ссылки на проекты см в подписи.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали: