Просмотр полной версии : Отправка смс на 2 и более номеров.
Linker1989
14.01.2015, 12:59
В общем могу отправить смс только на два номера.
Когда начинаю добавлять третий номер, то при компиляции ошибка.
Подскажите в чём ошибка?
listNum: ARRAY [0..3] OF STRING(11):=1('79105505555'), 2('79105506666'), 3('79105507777');
CheckListNum: STRING:='79105505555;79105506666;79105507777';
Ошибка 3760: Global_Variables (49): Неверное начальное значение
В общем могу отправить смс только на два номера.
Когда начинаю добавлять третий номер, то при компиляции ошибка.
Подскажите в чём ошибка?
listNum: ARRAY [0..3] OF STRING(11):=1('79105505555'), 2('79105506666'), 3('79105507777');
CheckListNum: STRING:='79105505555;79105506666;79105507777';
Ошибка 3760: Global_Variables (49): Неверное начальное значение
listNum: ARRAY [0..3] OF STRING(11):=1('79105505555'), 2('79105506666'), 3('79105507777'); в этом объявлении цифры перед скобками означают, что значения в скобках повторяются это количество раз. Т.е. компилятор думает, что это нужно читать так:
'79105505555', '79105506666', '79105506666', '79105507777', '79105507777', '79105507777'
А это уже шесть значений. При этом массив объявлен на четыре элемента [0..3]:rolleyes:
Linker1989
14.01.2015, 17:16
Т.е. надо записать так?
listNum: ARRAY [0..2] OF STRING(11):=1('79105505555'), 1('79105506666'), 1('79105507777');
CheckListNum: STRING:='79105505555;79105506666;79105507777';
И можно ли сделать так чтобы эти номера можно было бы изменять, например с HMI панели или ещё как нибудь не подключая ноутбук?
?
Нет, написать нужно так
listNum :ARRAY [0..2] OF STRING (11):='79105505555','79105506666','79105507777';
Чтобы менять номера с панели я делаю так
listNum :ARRAY [0..4] OF DWORD;
p_listNum AT %QD8.34.0 :ARRAY [0..4] OF DWORD;
И в программе:
16172
и
listNum:=p_listNum;
и в конфигурации в слэйве:
16173
Также можно завести эти значения на скаду и менять
Чтобы менять номера с панели я делаю так
listNum :ARRAY [0..4] OF DWORD;
p_listNum AT %QD8.34.0 :ARRAY [0..4] OF DWORD;
listNum:=p_listNum;
и в конфигурации в слэйве:
16173
Также можно завести эти значения на скаду и менять
Зачем использовать два массива listNum и p_listNum и делать лишние телодвижения по копированию одного в другой?
Из программы выбрасываем listNum:=p_listNum; и в объявлении переменных сразу
listNum AT %QD8.34.0 :ARRAY [0..4] OF DWORD;
Забыли упомянуть, что переменная часть номера телефонов вводятся с панели в виде цифр, а не символов http://www.owen.ru/forum/showthread.php?t=8604&p=135055&viewfull=1#post135055
В этом случае ввод с панели можно сделать так http://www.owen.ru/forum/showthread.php?t=8604&p=135067&viewfull=1#post135067
http://www.owen.ru/forum/attachment.php?attachmentid=12509&d=1396823428
Зачем использовать два массива listNum и p_listNum и делать лишние телодвижения по копированию одного в другой?
Из программы выбрасываем listNum:=p_listNum; и в объявлении переменных сразу
listNum AT %QD8.34.0 :ARRAY [0..4] OF DWORD;
Вообще да, код недопричесан был после экспериментов :)
Забыли упомянуть, что переменная часть номера телефонов вводятся с панели в виде цифр, а не символов
Не совсем понял про какие символы речь?:confused:
Не совсем понял про какие символы речь?:confused:
Вот была такая история
1.
Подскажите кто нибудь, как из панели задавать несколько телефонных номеров для модема, с учётом, что количество номеров телефонов может меняться. Проект прилагаю.http://www.owen.ru/forum/showthread.php?t=8604&p=135037&viewfull=1#post135037
16174
2.
Может както так ?http://www.owen.ru/forum/showthread.php?t=8604&p=135038&viewfull=1#post135038
16176 16175
3.
Может подойти к этому с другой стороны?
Если номера телефонов будут только в России, то может быть не вводить и не хранить их в виде STRING, а использовать DWORD?
Полный номер собирать в программе из префикса '79' и DWORD
Получится для 10 номеров -10 элементов 4byte в модуле Slave.http://www.owen.ru/forum/showthread.php?t=8604&p=135055&viewfull=1#post135055
16177 16178
Понятно, по два символа жесть конечно редактировать
Понятно, по два символа жесть конечно редактировать
Зачем по два?
На панели предполагалось использовать символьный ввод http://www.owen.ru/forum/showthread.php?t=8604&p=124691&viewfull=1#post124691
и вводить в одно поле сразу весь номер целиком.
Понял, в чем суть. А 3 DWORD вместо 6 WORD не проще разве?
Linker1989
16.01.2015, 12:37
Добавил я пять, четырёхбайтовых элемента для записи в них номеров из HMI Панели.
А какой адрес в сети будет, например у первого телефонного номера? Панель Weintek.
16196
Добавил я пять, четырёхбайтовых элемента для записи в них номеров из HMI Панели.
А какой адрес в сети будет, например у первого телефонного номера? Панель Weintek.
16196
Если адреса предыдущих (Float) соответствуют действительность, то
для первого номера адрес 193;
для второго -195;
для третьего -197;
для четвертого -199;
для пятого -201
пока с телефона напечатаешь...
Linker1989
16.01.2015, 14:15
Поставил адреса в панели:
для первого номера адрес 193;
для второго -195;
для третьего -197;
для четвертого -199;
для пятого -201
Подключаюсь начинаю вводит номер, потом панель отключаю и подключаюсь к плк и через кодесис смотрю, номера изменились но не понятно в каком порядке.
16200
16201
Может надо ещё что то изменить?
непонятно, что именно не понятно. вроде всё видно
Linker1989
16.01.2015, 14:21
Я с панели ввожу для первого номера 111111111, для второго 222222222, для третьего 333333333, для четвёртого 444444444 и для пятого 555555555, а он при открытии в кодесисе вот что показывает:
16202
Частично меняет те номера на новые.
В listNum AT %QD6.104.0: ARRAY [0..4] OF DWORD:= надо писать только адрес первого байта?
Да, только первого. А в панели формат чисел правильно выбран?
Linker1989
16.01.2015, 14:58
Да точно ошибься с форматом числа, а какой правильно 32бит SIGNED? или 32бит UNSIGNED? С этими обоими нормально считываются значения.
если отрицательные значения не нужны, то без разницы вроде как
если отрицательные значения не нужны, то без разницы вроде как
В ПЛК модуле Slave формат DWORD, а это значит, что только положительные числа будут отображаться правильно. А это значит только 32бит UNSIGNED.
Linker1989
19.01.2015, 14:20
Вот была такая история
1.http://www.owen.ru/forum/showthread.php?t=8604&p=135037&viewfull=1#post135037
16174
2.http://www.owen.ru/forum/showthread.php?t=8604&p=135038&viewfull=1#post135038
16176 16175
3.http://www.owen.ru/forum/showthread.php?t=8604&p=135055&viewfull=1#post135055
16177 16178
Всё работает нормально! Вот только такая проблема если номер телефона начинается как 7909 ххх хх хх , то ноль не записывыается первым числом телефонного номера. В любом другом месте номера ноль записывается нормально.
16262
например в listnum[2] не хватает 0 в самом начале.
Ну так сделайте для номеров с 0 объединение concat +790, а dword начинайте со следующей цифры, хотя конечно не очень удобно
Linker1989
19.01.2015, 14:45
Да как то не удобно получиться) Для этого надо создать два элемент CONCAT или как?
16263
Всё работает нормально! Вот только такая проблема если номер телефона начинается как 7909 ххх хх хх , то ноль не записывыается первым числом телефонного номера. В любом другом месте номера ноль записывается нормально.
16262
например в listnum[2] не хватает 0 в самом начале.
Надо думать...
Что тут думать, трясти надо...
16264
И будет Вам счастье:rolleyes:
16265
А вот даже "Что тут думать, трясти надо..." некогда
А вот даже "Что тут думать, трясти надо..." некогда
Тогда смотрите картинки из предыдущего поста
Мельком глянул, всё логично...
Linker1989
19.01.2015, 16:44
Что тут думать, трясти надо...
16264
И будет Вам счастье:rolleyes:
16265
Спасибо огромное! Очень сильно выручаете)
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot