Показано с 1 по 10 из 76

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

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #36

    По умолчанию

    С наступившим! Решил проблему запроса баланса через 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. Причина: Наконец-то разобрался как правильно вставить код)

Похожие темы

  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

Ваши права

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