Страница 8 из 8 ПерваяПервая ... 678
Показано с 71 по 74 из 74

Тема: CODESYS V3.5. Работа с модемами

  1. #71
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,246

    По умолчанию

    Цитата Сообщение от Time00 Посмотреть сообщение
    Доброго времени суток. Возникла необходимость проверки баланса, будут сим-карты случайного оператора. Соответственно и номера запроса баланса тоже будут разные. В компоненте реализована жесткая привязка номера проверки баланса к оператору. Пробовал сделать сам, через АТ-команды, не получилось. Как решить эту задачу? Или подскажите, как в компоненте реализован механизм получения баланса?
    Добрый день.

    AT+CUSD=1, <str> (<str> – номер проверки баланса, без угловых скобочек)
    Но с этим могут быть проблемы, потому что ответ приходит через неизвестный промежуток времени, а время ожидания ответа на пользовательскую AT-команду - 10 секунд.

    В следующей версии компонента планируем сделать возможность задания номера получения баланса через переменную - такое пожелание зафиксировано.

  2. #72

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.

    AT+CUSD=1, <str> (<str> – номер проверки баланса, без угловых скобочек)
    Но с этим могут быть проблемы, потому что ответ приходит через неизвестный промежуток времени, а время ожидания ответа на пользовательскую AT-команду - 10 секунд.

    В следующей версии компонента планируем сделать возможность задания номера получения баланса через переменную - такое пожелание зафиксировано.
    AT+CUSD=1 не работает увы А когда примерно ожидать новую версию?

  3. #73
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,246

    По умолчанию

    Цитата Сообщение от Time00 Посмотреть сообщение
    AT+CUSD=1 не работает увы А когда примерно ожидать новую версию?
    Точно не в этом году.

  4. #74

    По умолчанию

    С наступившим! Решил проблему запроса баланса через AT команды. Если кому интересно, распишу что и как, сейчас лень. Просто выложу часть кода.

    Код:
    IF T_500ms.Q AND TargetVars.xIsRegistration THEN
    	CASE TargetVars.startBalance OF
    		0:
    			TargetVars.sAtCommandText:='AT+CSCS="GSM"';
    			TargetVars.xSendAtCommand:=TRUE;
    			IF TargetVars.sAtCommandAnswer='$R$NOK$R$N' THEN
    				TargetVars.xSendAtCommand:=FALSE;
    				TargetVars.xConfirmAtAnswer:=TRUE;
    				TargetVars.startBalance:=1;
    			END_IF
    		1:
    			IF TargetVars.xConfirmAtAnswer THEN
    				TargetVars.xConfirmAtAnswer:=FALSE;
    			END_IF
    			IF TargetVars.askBalance THEN
    				TargetVars.sAtCommandText:='ATV0';
    				TargetVars.xSendAtCommand:=TRUE;
    				TargetVars.wsUTF16:="Отправка запроса баланса оператору...";
    				IF TargetVars.sAtCommandAnswer='0$R$N' THEN
    					TargetVars.xSendAtCommand:=FALSE;
    					TargetVars.startBalance:=2;
    				END_IF
    			END_IF
    		2:
    			IF TargetVars.askBalance THEN
    				TargetVars.sAtCommandText:=TargetVars.sATBalanceAsk; // здесь сформированный AT запрос (например: AT+CUSD=1,"*165#") 
    				TargetVars.xSendAtCommand:=TRUE;
    				TargetVars.wsUTF16:=UTF16_TO_WSTRING(TargetVars.sAtCommandAnswer);
    			ELSE
    				TargetVars.xSendAtCommand:=FALSE;
    			END_IF
    		3:
    			TargetVars.sAtCommandText:='ATV1';
    			TargetVars.xSendAtCommand:=TRUE;
    			IF TargetVars.sAtCommandAnswer='$R$NOK$R$N' THEN
    				TargetVars.xSendAtCommand:=FALSE;
    				TargetVars.xConfirmAtAnswer:=TRUE;
    				TargetVars.startBalance:=1;
    			END_IF
    	END_CASE
    END_IF
    Функция UTF16_TO_WSTRING
    Код:
    IF FIND(UTF16,'0$R$N+CUSD: 0, "')<>0 THEN
    	stemp:=OSU.ReplaceSubstring(UTF16,'0$R$N+CUSD: 0, "','');
    	FOR i:=1 TO LEN(stemp)-4 BY 4 DO
    		theChar[0]:=WSTRING_TO_WORD(WCONCAT("16#",WMID(OSU.CP1251_TO_UNICODE(stemp),4,i)));
    		UTF16_TO_WSTRING:=WCONCAT(UTF16_TO_WSTRING,theChar);
    	END_FOR
    	TargetVars.xSendAtCommand:=TargetVars.askBalance:=FALSE;
    	TargetVars.startBalance:=3;
    ELSE
    	UTF16_TO_WSTRING:="Пожалуйста подождите...";	
    END_IF
    Последний раз редактировалось Time00; 07.01.2025 в 12:52. Причина: Наконец-то разобрался как правильно вставить код)

Страница 8 из 8 ПерваяПервая ... 678

Похожие темы

  1. Ответов: 3
    Последнее сообщение: 14.09.2021, 12:23
  2. CoDeSys работа с массивами.
    от Роман26 в разделе Эксплуатация
    Ответов: 13
    Последнее сообщение: 10.08.2019, 07:52
  3. Ответов: 1
    Последнее сообщение: 29.06.2017, 11:21
  4. ОРМ работа с модемами СПЕКТР 433
    от Golem-xxx в разделе OWEN Proces Manager
    Ответов: 1
    Последнее сообщение: 15.02.2011, 14:28
  5. связьс несколькими модемами пм01
    от wal1958 в разделе Сетевые технологии
    Ответов: 2
    Последнее сообщение: 17.03.2010, 09:57

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •