Обмен по Com-порту

AlexKB
Дата: 12.01.2006 12:00:01
Вопрос 1.
Обычно я пользовался текущими настройками Com-порта при открытии.
Теперь возникла необходимость после открытия производить перестройку параметров (скорость, четность, ...) перед каждым обращением - как лучше всего это делать?
Если каналов обмена будет более двух?
Желательно из практического опыта.

Вопрос 2.
Выдача пакета данных длиной более 75(примерно) байт разбивается на блоки.
команда W задерживается при этом на время более 20мС на каждый блок.
Кто что скажет по этому поводу.

Заранее благодарен.
Maksim UM
Дата: 12.01.2006 14:30:29
1. зависит от платформы
если юникс, то я делал так
I $ZV["Linux" S status=$ZF(-1,"stty -F "_dev_" evenp speed 9600 >/dev/null")
если винда, то можно на COS, кажется было только в доке версии 3.2.1

http://www.intersystems.com/cache/technology/product-tables/releasenotes/321/rel03.html

2. смотря что нужно и для каких целей
нужно при открытии порта поиграть с флагами open
(например что-то типа: open dev:"S")
Valeriu
Дата: 12.01.2006 14:40:54
Интерестно, каким мультипортовым модулем Вы пользуйтесь ?
Лично я пробовал использовать 8-ми канальную плату ( совместима с Arnet, Hostess, AST), но кроме 2-х каналов Cache' не признает !!! Т.е. остальные
6 висят в воздухе !!!
Хотя в Windows 2000 они стандартно установлены и работают отлично.
Такое впечатление, что Cache' использует только стандартные Com1 Com2 ...
А в cconsole странные строки:

06/10-11:24:56:437 ( 484) COMMCTRL Warning: Could not install port COM3:, reason = -1
06/10-11:24:56:437 ( 484) COMMCTRL Warning: Could not install port COM4:, reason = -1
06/10-11:24:56:437 ( 484) COMMCTRL Warning: Could not install port COM5:, reason = -1
................................

06/10-11:24:56:437 ( 484) COMMCTRL Warning: hiber wake received
AlexKB
Дата: 12.01.2006 15:41:18
Спасибо большое. Я давно туда не глядел.
Работа под Windows 2000
Жаль что с мультипортовками нет ясности. Ну может кто еще откликнется.

Задача такая: циклический + ситуативный опрос разношерстных устройств, которые могут быть натсроены жестко, и привести их к единой натсройке невозможно. Устройства работают с разными протоколами, Cache выступает мастером.

Почему волнует задержка на выдачу - не хочется тормозить процесс. Время критично, иначе прийдется организовывать несколько процессов обмена.

Кстати, если из одного процесса вести несколько портов, то насколько это хуже и более напряженно, чем один порт - один процесс.
Maksim UM
Дата: 12.01.2006 18:48:03
2 Valeriu
а настраивали COMMCTRL?
пробовали просто открывать open COM3... write... read ?

2 AlexKB
у меня не было проблем со скоростью
(хотя задачи были не очень скоростные - модемы)

думаю при паре сотен открытых портов в одном процессе
будут проблемы :)
Valeriu
Дата: 13.01.2006 09:57:42
Проблема в чем, мы еще используем кое где интелектуальные терминалы,
которые обмениваютса с MSM по Com порту и естественно хотел пробовать
как с этим справится Cache'
Я пробовал так:
Configuration Manager ->Advanced-> Startup ->Terminal-> Com Ports
Описал все 8 портов, которые у меня описаны в Win2k (которые работают !!!)
Результат тот-же... Только по двум портам (любые из диапазона 1-10) обмен идет а по остальным нет !!!
Хотя - "Use this section to define the default settings (baud rate, data bits, parity, etc.) for use of Com ports by Cache processes and to enable remote logins to Cache through locally connected or modem connected serial ports."
Maksim UM
Дата: 13.01.2006 12:19:03
Неплохо бы, конечно, называть версию Cache.
А так, можно попробовать смотреть различными хакерскими
утилитами что там Cache делает с портом.
Или просто написать в саппорт (может это баг известный)
Valeriu
Дата: 13.01.2006 12:30:23
Может Вы и правы, у меня только это:
Cache for Windows NT (Intel) 5.0 (RC 3 Build 462)
gr_vl
Дата: 17.01.2006 16:12:14
У меня под win 2000 с мультипортовками проблем нет (Kron 4 и 8 ми портовые)
Правда их надо в каше в редакторе конфигурации описывать и ставить галочку на запуске comportov
Каше 5,07 5,10 5,19 5,20 (Переодически обновляю версию с выходом новыых)
Есть проблемы не уйдут рекомендую делать инициализацию компрта перед открытием
те через $zf( запускать прогу exe которая проиницилизирует ком порт или mode params

Если есть вопросы обращайтесь icq 118106001
[email=]gr_vl@mail.ru
Valeriu
Дата: 27.01.2006 11:51:17
Пробовал и так:

Cache.cpf содержит например такие строки:

[ConfigFile]
Version=5.0

[Com]
Com=ON
COM1:=0801X11;38400
COM5:=0801X11;38400
COM6:=0801X11;38400

В терминале в область %SYS:

%SYS>D update^COMMCTRL
Update succeeded.
%SYS>d info^COMMCTRL


configured table size = 2
entries in table = 2
ports in table = COM1:,COM5:,
controller PID = 1220

те иницииюруется только два порта...

Открыть програмно пробовал недостающего Com6 - работает !!!
s port="COM6:"
o port:(:"S"):2
u port:(:"S") f i=1:1:100 w "Test Com6 Nr. "_i,!
c port

Но подключить к нему терминал не получается
Может как-то можно менять

configured table size = nn
entries in table = nn
ports in table = COM1:,COM5:,COM6:, ....COMnn:,

?????