Версия для печати

-   Форум Теплопункта https://teplopunkt.ru/forum/
--  Диспетчеризация https://teplopunkt.ru/forum//index.php?f=37
--- Логика СПТ943 и irz MC52PU: как установить связь? https://teplopunkt.ru/forum//index.php?t=2098




-- Юлен написал 20 февраля 2014 17:16
Здравствуйте!

Подскажите новичку, как правильно настроить скорости обмена? Мне кажется, что я тут ошибаюсь. В протоколе прописано, что запрос на установление сеанса должен вестись на скорости 2400 бод. Что это означает?

У меня есть скорость обмена по порту (указывается при открытии порта на обмен), и есть скорость обмена сданными для модема (at+ipr = 9600 изначально). Какая из них должна быть 2400?
Алгоритм моих действий:

Изначально и порт и модем настроены на скорость 9600 бод.
После набора номера и удачного соединения (получен ответ Connect 9600 rpl. Соединение идет по CSD.) перевожу модем в командный режим (отправляю "+++". Жду 1 мс.
Отправляю команду "at+ipr=2400.
Меняю настройки порта, к которому подключен модем - выставляю скорость 2400.
Потом на модем подаю команду "at&w" (данные не обновились. Скорость для модема так и осталась 9600) :-(
Выхожу в режим передачи данных - отправляю команду "ATO" (Она заканчивается на "О" или на ноль?).

Вычислитель не отвечает. Программа зависает. :(



-- Николай Антипов написал 21 февраля 2014 8:25
СПТ943 работает на скорости 9600, зачем менять скорости?


-- Алексей Федулов написал 21 февраля 2014 14:06
Я не понял, зачем все это? Вы хотите отчет с прибора получить? Тогда пользуйтесь ПО производителя или альтернативными программами. Через терминальную программу Вы ничего от СПТ не добьётесь.



-- Юлен написал 21 февраля 2014 14:54
Да. Мы хотим получить отчет. Возможно Вы знаете программы, которые занимаются получением отчетов, складированием их в виде файлов, но при этом работают из-под Linux? Тогда поделитесь ,пожалуйста. Я видела только работающие в Windows.
Я не через терминальную программу, что Вы! Я в порт модема эти команды пишу. И я так поняла, что после установления сеанса связи соединение модем-модем словно исчезает - становится прозрачным, и дальще обмен идет, как будто вычислитель подключен напрямую?

Мы разработчики базы данных для ЖКХ. Сейчас пытаемся скрестить свою базу с диспетчеризацией. Вот мне и поручили написать программу. А у меня тепловычислитель ничего на запрос установить связь не хочет отвечать.


-- Алексей Федулов написал 21 февраля 2014 16:23
Теперь понятно.
Программ под Linux, которые с тепловычислителями работают я тоже не знаю.
[q]
И я так поняла, что после установления сеанса связи соединение модем-модем словно исчезает - становится прозрачным, и дальще обмен идет, как будто вычислитель подключен напрямую?
[/q]

Да, это так.

На счет смены скорости порта: зачем? Ведь она задается в СПТ параметром КИ.
Менять скорость порта компьютера - тоже непонятно.
попробуйте посмотреть тут (http://www.logika.spb.ru/doc_dev/prot943_02.pdf)


-- box415 написал 24 февраля 2014 16:27
[q]
после установления сеанса связи соединение модем-модем словно исчезает - становится прозрачным, и дальще обмен идет, как будто вычислитель подключен напрямую?
[/q]


Это очень сильно сказано. Там три скорости: скорость компьютер-модем, скорость модем-модем, и скорость модем-СПТ. Меняя настройки порта компьютера, Вы меняете только первую, да и то со стороны компьютера. Даже свой модем должен еще понять, что Вы ее изменили. Это в режиме данных не произойдет, а в режиме команд произойдет не сразу.
Короче, это все Вы напридумывали зря. Подумайте над тем, что хотите получить.


-- Юлен написал 25 февраля 2014 21:44
Очень хочу получить (считать) ответ вычислителя на запрос установления связи. Я ему отправляю вот такую последовательность байт:
buf_w[0] = 0x10; //start paketa
buf_w[1] = 0xFF; // setevoy nomer vychislitelya
//bezadresnoe obraschenie
buf_w[2] = 0x3F; //kod zaprosa - zapros ustanovleniya seansa
buf_w[3] = 0; //obschiy vvod. 1 - TB1, 2 - TB2
buf_w[4] = 0;
buf_w[5] = 0;
buf_w[6] = 0;
kc = calculate_kc(6);
buf_w[7] = kc;
buf_w[8] = 0x16; //konec kadra

i = 0;
while(i<=8)
{
printf("w to SPT943 %d\n", (int)write(fd,&buf_w,1));
usleep(1000);
i = i+1;
}
Сниффер обнаруживает приход ответа от вычислителя, но почему-то модем отказывается его считывать.

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


-- Юлен написал 25 февраля 2014 21:48
Меня сильно смущает фраза из протокола связи, что сеанс связи должен устанавливаться на скорости 2400. Что тут имелось ввиду, подскажите, пожалуйста.


-- Юлен написал 26 февраля 2014 14:38
Теперь мне стало ясно, что эта проблема невозможности считывания данных из порта не связана со скоростями обмена. Уже легче. Но все равно непонятно, как считать данные и куда они потерялись?

Все. Ответ найден. Надо было СОМ-порт перевести в raw режим. И все стало читаться.
Всем спасибо за ответы! С наступающей весной! Ну и с прошедшим 23 февраля!


2008-2022, Дмитрий Анисимов
Этот форум работает на скрипте Intellect Board
© 2004-2007, 4X_Pro, Объединенный Открытый Проект