программа для связи по COM порту

Wed Nov 30 2005 01:49, Vladimir Vassilevsky wrote to Kirill Frolov:

VV>>> Какие проблемы. getch() с клавиатуры, putch() в компорт и наоборот. KF>> Проблемы в том, что типичный libc отвратительно, а скорей вообще никак, KF>> работает в неблокируемом режиме ввода-вывода. VV> ???? VV> if(kbdhit()) getch();

kbhit() -- это то ли из dos.h то ли ещё откуда нестандатное...

А как быть с putch()? gets()? scanf()? printf()? puts()?

Reply to
Kirill Frolov
Loading thread data ...

Wed Nov 30 2005 08:04, Anatoly Mashanov wrote to Vladimir Vassilevsky:

VV>> if(kbdhit()) getch();

AM> $ man kbhit AM> No manual entry for kbhit AM> $ man kbdhit AM> No manual entry for kbdhit AM> $

Очевидно что проблема легко решается в случае каждой отдельной системы, хотя общего платформонезависимого решения может и не быть.

VLV

"Я добрый, и это единственный мой недостаток" (Достоевский)

Reply to
Vladimir Vassilevsky

Привет! AZ>> А функциональность, например некоторая обработка полученных данных AZ>> и представление их в виде графиков. AK> Я ж в первую очередь сюда и обратился с просьбой. Давайте ваши пожелания, AK> и они по мере возможности будут реализованы. А можно мне себя пяткой в грудь ударить! :-)) Потребности у всех разные. Я занимаюсь приводами, и естественно нужен был софт с помощью которого наших "детей"(немогу иначе относится к вещам в которые вложил душу) можно настраивать и смотреть что у них варится в мозгах. Все "дети" понимают MODBUS RTU и наш фирменный протокол AjBUS. Такой софт я писал (не всегда было время)в течение 3 лет. Естественно под Видовс, и почему-то на Delphi, и как не странно (совпадение наверно) связывается он с дивайсами по компорту(портам). В первую очередь это многооконный(и многоканальный) осциллограф, можно например, подключиться к сети из 244`х устройств MODBUS RTU(мастером естественно) через преобразователь интерфейса, открыть 244 окна и смотреть графики работы всех 244`х "мозгов" токи/напряжения/частоты/состояния DIO и т.п. причём в физических величинах. Результаты осциллографирования можно сохранять и изучать потом в тиши лаболатории (мерить время м/у событиями и амплитуду изменять масштаб и т.п) или прям на месте указать местному персоналу что у них вот тут такая-то херня

- немедленно исправить (а наши, безгрешные блочки, как всегда невиноваты). Во вторую очередь - это база устройств. Каждый девайс имеет идентификатор и на него существует запись в базе. В базе хранятся уставки параметров (в девайсе они как правило хранятся во флешке) название устройства, где и когда установлен, когда его в последний раз обслуживали. Естественно по всем этим условиям есть сортировка чтобы было удобней представить данные. Параметры можно копировать из базы в девайс и обратно. Сравнивать параметры с другими девайсами, и (фича) клонировать девайсы (удобно при вводе в эксплуатацию однотипных устройств с одинаковой нагрузкой заносить их в базу, наладил один, с остальными можно не парится, только успевай заливать в них параметры) Для удобства юзера сохраняется решительно всё: осциллограмма появится в том месте на котором с ней законцили работу, команды в командной строке, ширина столбцов в таблицах и т.п. Если о потрохах софта, то они многопоточные, каждый ком-порт - это поток со своей очередью запросов, открыл окно осциллографа - добавил запрос в тот порт из которого собираешся данные выгребать, как данные появились, передал их графическому потоку который рисует графики (в каждом окне свой поток) так получается быстро и юзеринтерфейс не тормозит. Графические функции вывода осциллограмм написаны на B(built-in)ASM`е юзают DIB, пытался на DirectX заложится (тоже с ассемблером), и даже получилось и скорости отрисовки были просто дикие, но как только сменил DirectX с 7 на 8 то начались жуткие глюки c которыми я не смог разобраться. ((На DirectX я сделал полноэкранный (640х480)осциллограф-самописец для прокатного стана, на экран вмещается 50 каналов (если скролом не крутить), частота смены кадров >100Гц. заказчики очень довольны, толко на деньги меня кинули)) Софт был писан в первую очередь под себя, т.к. длительное время приходилось учавствовать в наладке своих же изделий (отличный опыт:-), намаешся за день со своим-же софтом, пришёл домой, сразу за комп - USABILITY повышать, в следующий раз уже другая мелоч раздражает - и процесс повторяется. Сейчас всё работет как часы, но хочу функцию печати отчёта по наладке замутить, пока не знаю с какой стороны к этому подойти (скорее времени нет разобраться), ибо не professional Windows programmer. В общем, успехов Вам молодой человек в Вашем нелёгком и общественно полезном труде!

С уважением. Герасимов.

Reply to
Gerasimov Gerasim

Thu Dec 01 2005 07:38, Gerasimov Gerasim wrote to Alexandr Kochmin:

GG> From: "Gerasimov Gerasim" <gerasimov snipped-for-privacy@zsmk.ru

GG> А можно мне себя пяткой в грудь ударить! :-)) GG> Потребности у всех разные. Я занимаюсь приводами, и естественно нужен был GG> софт с помощью которого наших "детей"(немогу иначе относится к вещам в GG> которые вложил душу) можно настраивать и смотреть что у них варится в GG> мозгах.

А можно чуть подробнее про параметры приводов ? Hадеюсь ни пятке, ни груди это не повредит ;-)

SY, EK

Reply to
Evgeny Kotsuba

EK> А можно чуть подробнее про параметры приводов ? Hадеюсь ни пятке, ни EK> груди это не повредит ;-)

А Вас собственно что интересуе:

1)какие параметры бывают у приводов (я занимаюсь синхронными)? 2)или как чёрт побери это на экране выглядит? 3)я не угадал :-(

если 1, то долго рассказывать (ну там ток/напряжение статора, частота сети, включен/выключен выключатель в ячейке, температура двигателя и т.п... короче их дохрена)

если же вас интересует п.2, то у меня есть коллекция весьма откровенных осациллограм пуска синхронного двигателя могу отправить на ваш емаил с вашего же разрешения, вам какую пуск 10МВт или 800КВт будет достаточно.

;-)

Reply to
Gerasimov Gerasim

VV>>> if(kbdhit()) getch(); AM>> $ man kbhit AM>> No manual entry for kbhit AM>> $ man kbdhit AM>> No manual entry for kbdhit AM>> $ VV> Очевидно что проблема легко решается в случае каждой отдельной системы, VV> хотя общего платформонезависимого решения может и не быть. Для неблокирующий ввод с клавы под Линуксом я сотворил такой код: #include <unistd.h>

#include <stdio.h>

#include <stdlib.h>

#include <termios.h>

#include <fcntl.h>

#include <sys/ioctl.h>

static int fdkbd=1; static struct termios kb_saved_attributes;

/*возврат в исходное состояние при завершении программы*/ void kb_reset_input_mode (void) { tcsetattr (fdkbd, TCSANOW, &kb_saved_attributes); }

/*инициализация клавы*/ void KBD_SIM (void) { static struct termios tattr; /* Save the terminal attributes so we can restore them later. */ tcgetattr (fdkbd, &kb_saved_attributes); /* Set the funny terminal modes. */ tcgetattr (fdkbd, &tattr); /* set non-canonical mode */ tattr.c_lflag &= ~(ICANON|ECHO); /* Clear ICANON and ECHO. */ tattr.c_cc[VMIN] = 0; tattr.c_cc[VTIME] = 0; tcsetattr (fdkbd, TCSAFLUSH, &tattr); }

/*Для чтения клавы надо вызывать kb_get_key*/ char kb_get_key (void){ char r; if (read(fdkbd,&r,1)==0){ return 0; } else return r; }

Всё началось когда я делал чтение данных по СОМ из девайса, естественно пришлось read/write сделать неблокирующими,затем обкурившись манов я пришёл к выводу, что действие termios и ioctl распространяется и на клаву, поэтому и её ввод можно сделать не блокирующим, так и получилось.

Кук удалось замутить проект под линухом и ГЦЦ, до сих пор удивляюсь, я в них ваще не рублю (да и на Ц почти не пишу), была книга по юниксу 1985г(с кратким описанием системных функций и Ц, и как запускать компилятор) далее маны/инфо/ru.unix.prog

И если я не ошибаюсь, termios и ioctl есть в VC от MS для соответствия какому-то там стандарту.

Reply to
Gerasimov Gerasim

Thu Dec 01 2005 11:53, Gerasimov Gerasim wrote to Evgeny Kotsuba:

GG> From: "Gerasimov Gerasim" <gerasimov snipped-for-privacy@zsmk.ru

EK>> А можно чуть подробнее про параметры приводов ? Hадеюсь ни пятке, ни EK>> груди это не повредит ;-)

GG> А Вас собственно что интересуе: GG> 1)какие параметры бывают у приводов (я занимаюсь синхронными)? GG> 2)или как чёрт побери это на экране выглядит? GG> 3)я не угадал :-(

GG> если 1, то долго рассказывать (ну там ток/напряжение статора, частота GG> сети, включен/выключен выключатель в ячейке, температура двигателя и GG> т.п... короче их дохрена) скорее п1. ;-) Двигатели же что-то крутят-вертят, соотв., интересны аспекты управления положением или углом поворота ротора. Хотя видимо для таких монстров это весьма и сильно отличается от приводов, которые можно в руках подержать

GG> если же вас интересует п.2, то у меня есть коллекция весьма откровенных GG> осациллограм пуска синхронного двигателя могу отправить на ваш емаил с GG> вашего же разрешения, вам какую пуск 10МВт или 800КВт будет достаточно. Буду не против. Hе все ж порнуху смотреть ;-)

SY, EK

Reply to
Evgeny Kotsuba

Привет, Alexandr !

28 Nov 05 , 15:22 Alexandr Kochmin писал к Evgeny Kotsuba:

AK> Такчто виндовый гипертерминал фтопку.

Кроме виндового терминала есть еще и куча всяких телемаксов с миникомами. Да даже в тмыле и то есть терминалка.

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... умножаться делением

Reply to
Nickita A Startcev

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.