Есть железка самопальная, ей по RS232 (COM-порт) говоришь сделай то-то (несколько байт просто пересылаются) она делает и отвечает - "сделала то-то"
Под виндой без проблемм работает, под Free ничего не накопал .... Железка терминал не потдерживает, просто ты ей несколько байт, она тебе несколько байт в ответ ......
Может кто знает как сделать?
Работа с COM портом
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- Alex Keda
- стреляли...
- Сообщения: 35437
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- termsl
- мл. сержант
- Сообщения: 121
- Зарегистрирован: 2007-04-10 23:26:41
- Откуда: Moscow
Re: Работа с COM портом
cu создает терминал как я понял
для нормальной работы cu надо чтобы ей с той стороны отвечали..... железка повторяюсь тупая
при запуске
виснят прям как у тебя Лис в посте ... приходится killall делать
Мне более подошел бы алгоритм -
1 вар. открыть порт, сказать, выслушать ответ, закрыть
2 вар. как демон висит слухач, который при старте открывает порт и по команде может говорить.
для нормальной работы cu надо чтобы ей с той стороны отвечали..... железка повторяюсь тупая
при запуске
Код: Выделить всё
#cu -l cuad0 -s 57600 -v
Мне более подошел бы алгоритм -
1 вар. открыть порт, сказать, выслушать ответ, закрыть
2 вар. как демон висит слухач, который при старте открывает порт и по команде может говорить.
- termsl
- мл. сержант
- Сообщения: 121
- Зарегистрирован: 2007-04-10 23:26:41
- Откуда: Moscow
Re: Работа с COM портом
Разобрался:
Программа посылает символы на входе в обрамлении конструкции " <!XXX> "
Использование:
отошлет в COM1 на скорости 57600 без контроля четности " <!111> <!112> <!113> "
Программа посылает символы на входе в обрамлении конструкции " <!XXX> "
Код: Выделить всё
/*
* gcc -O2 -o /test/COM/com /test/COM/com.c
*/
#include <stdio.h> /* Standard input/output definitions */
#include <string.h> /* String function definitions */
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
#include <locale.h>
#define MAXL 255 /* макс. длина строки */
/*
* 'open_port()' - Open serial port 1.
*
* Returns the file descriptor on success or -1 on error.
*/
int open_port(void)
{
int fd; /* File descriptor for the port */
struct termios options;
fd = open("/dev/cuad0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{
/*
* Could not open the port.
*/
perror("open_port: Unable to open /dev/cuad0 :( ");
}
else
{
fcntl(fd, F_SETFL, 0);
printf ("Port OPEN OK!:>\n");
}
tcgetattr(fd, &options);
cfsetispeed(&options, B57600);
cfsetospeed(&options, B57600);
tcsetattr(fd, TCSANOW, &options);
return (fd);
}
int main (argc, argv) char **argv;
{
int fdd;
int n;
char str[10];
printf("\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n| (c) Termsl' 2007 |\n-------------------------\n");
fdd = open_port();
setlocale(LC_ALL, "");
if( argc == 1 )
{
/* программа вызвана без аргументов */
}else{ /* аргументы программы - имена файлов */
while( argv[ 1 ] )
{
printf("<%s> ",argv[1]);
n = write(fdd," <!",3);
n = write(fdd,argv[1], 8);
n = write(fdd,"> ",2);
argv++;
argc--;
}
}
if (n < 0) fputs("write() failed!\n", stderr);
close(fdd);
printf ("\n<: Port CLOSED OK! \n=========================\n\n");
exit(0);
}
Использование:
Код: Выделить всё
#./com 111 112 113