powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
40 сообщений из 40, показаны все 2 страниц
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227775
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Снова я со своим терминалом.
Вроде бы все настроил, но осталась одна загвоздка.
При работе с терминалом - посылаю код, жду ответа.
Двигаюсь дальше. Но возникла нестыковочка.
Сразу скажу - я её просто проигнорировал, но это до поры до времени.

Суть в следующем. Когда отправляю СМС, происходит два шага.
Первый - ввод кода AT+CMGS="+7910ХХХХХХ" .
При работе с СОМ портом это как
Код: plaintext
1.
 Set www="AT+CMGS="_""""_"+7910ХХХХХХ"_""""
 w www,$Char(13)
Затем терминал думает (около 1,2 секунды) и выдает мне ответ в виде
Код: plaintext
> 
Так вот, я это приглашение никак не могу считать.
Com port выдает "> " и когда он это выдал, можно вводить вторую часть кода для отправки СМС
Код: plaintext
 write "Zdes Tekst",$Char(26)
Я пробовал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
  Hang 1
  For Nr=0:1:9
  {
    w Nr
    if (str=" ")||(str=">")||(str="> ")||(str=" > ")||(str'="")||(str=$Char(0))||(str=$Char(62))||(str=$Char(62,32))||(str=$Char(32,62,32))||(str=i)||(($Find(str,"1"))>0)
    {
      Set Zayavkawww=" Получен ответ: '"_str_"'"
      do Zayavka.WriteLine(Zayavkawww)
      do Zayavka.SaveStream()
      Set Nr=10 
      Hang 0.2
    }

    Set Zayavkawww=Nr_" str='"_str_"'"
    do Zayavka.WriteLine(Zayavkawww) // запись во внешний текстовой файл - истории операция
    do Zayavka.SaveStream()
    Hang 0.2
  }
И сочетание "> " никак не могу считать.
Разумеется, пока выполняется этот цикл - проходит 1+0,2*10=3 секунды и терминал(COM port) уже сам по себе готов принимать вторую часть кода.

Вопрос:
как мне считать это пресловутое сочетание "> "
ниже пример как оно в жизни.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227776
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Картинку то забыл.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227778
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В теле цикла
Код: plaintext
 For Nr=0:1:9
присутствует read str

Но в результате код, при опросе COM porta подвисает (если есть read str )

Вот так он подвисает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
  For Nr=0:1:9
  {
     read  str
    w Nr
    if (str=" ")||(str=">")||(str="> ")||(str=" > ")||(str'="")||(str=$Char(0))||(str=$Char(62))||(str=$Char(62,32))||(str=$Char(32,62,32))||(str=i)||(($Find(str,"1"))>0)
    {
       ..........
    }
  }
В результате, в файле с Логами появляется
Код: plaintext
1.
2.
3.
Отправлена Команда AT+CMGS=+79107978034
0 str=''
1 str=''
2 str=''
То есть цикл полностью не проходит, COM port стопорит, замораживает цикл опроса.
Итого имеем.
Если с такой строкой read str то всё виснет
Если без неё, то однажды код не сработает, так как не будет приглашения для ввода второй части.
А ставить задержку Hang 2 от фонаря, также не хочется.

Какие есть варианты и идеи?
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227789
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О,

А почему решено что read str виснет, может он терминатор ждет? Может лучше читать символ с таймаутом?
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227809
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно:
Код: plaintext
1.
 read str
 w Nr
судя по всему на разные устройства (по задумке), но ни одного USE-а между ними...
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227814
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov,
Полный код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
  Set Zayavka=##class(%FileCharacterStream).%New()
  Set Zayavka.Filename="C:\HSPAUSBМодем\Я__ОтветыМодема.txt"
  Set Zayavkawww=""
  do Zayavka.WriteLine(Zayavkawww)
  do Zayavka.SaveStream()
  
  set str=""
  set port="COM6"
  open port:(:::" 0801n0":/BAUD=115200) // Открываем устройство
  set old=$IO // Записываем текущее устройство ввода-вывода (Терминал)
  use port  // Переключаемся на com порт
  Hang 2

  Set str="" //OK  
  w "ATE0",$Char(13)  //10=Перевод строки 13=возврат каретки Ctr+Z=$Char(26)  ESC=$Char(27)
  Set Zayavkawww="Отправлена Команда ATE0"
  do Zayavka.WriteLine(Zayavkawww)
  do Zayavka.SaveStream()
  Hang 1
  For Nr=1:1:10
  {
    Set str=""
    Hang 0.5
    read str
    Set Zayavkawww=Nr_" ATE0 Str= "_str
    do Zayavka.WriteLine(Zayavkawww)
    do Zayavka.SaveStream()
    if str="OK" {Set Nr=10 Hang 0.5}
    if (str="ERROR")||(str="NO CARRIER")
    {
      w "AT",$Char(13)
      Hang 2
      w "AT",$Char(13)
      Hang 2
    }
  }

  set str=""
  Set www="AT+CMGS="_""""_"+7910ХХХХХ"_"""" 
  w www,$Char(13) //10=Перевод строки 13=возврат каретки Ctr+Z=$Char(26)  ESC=$Char(27)  ">"=$Char(62)
  Set Zayavkawww="Отправлена Команда AT+CMGS=+7910ХХХХХ"
  do Zayavka.WriteLine(Zayavkawww)
  do Zayavka.SaveStream()
  
  Hang 1
  For Nr=0:1:9
  {
    read str 
               
    // вот здесь подвох - или виснет или игнорирует запросы от COM port

    w Nr
    if (str=" ")||(str=">")||(str="> ")||(str=" > ")||(str'="")||(str=$Char(0))||(str=$Char(62))||(str=$Char(62,32))
                ||(str=$Char(32,62,32))||(str=i)||(($Find(str,"1"))>0)
    {
      Set Zayavkawww=" Получен ответ: '"_str_"'"
      do Zayavka.WriteLine(Zayavkawww)
      do Zayavka.SaveStream()
      Set Nr=10 
      Hang 0.2
    }
    // w $Char(8) // $Char(8)=стирал все символы, но "> " оставил, то есть при отправке СМС ушло только АТ 
    Set Zayavkawww=Nr_" str='"_str_"'"
    do Zayavka.WriteLine(Zayavkawww)
    do Zayavka.SaveStream()
    Hang 0.2
  }
  
  write "10=Perevod Stroki",$Char(26) // 10=Перевод строки 13=возврат каретки Ctr+Z=$Char(26)  ESC=$Char(27) ">"=$Char(62)
  
  quit
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227817
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну яО-О-О,

А почему решено что read str виснет, может он терминатор ждет? Может лучше читать символ с таймаутом?Не совсем понял, что имеете ввиду.
Я Делаю опрос последней строки, чтобы продолжить выполнение кода.
Опрашиваю COM port,

Если в коде указать read str , то код останавливается и все подвисает, и если принудительно прервать выполнение программы и открыть терминал COM porta через PYTTY, то первое что выводится будет "> ", то есть COM port Ждёт ввода команды, даже если мы закрыли исполняемый файл (прервали выполнение кода).

А определить, что терминал отправил мне команду "> ", я не могу!!! ответы от терминала/COM porta в данной ситуации не считываются (ну или я что то делаю не так).
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227822
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При этом, остальные части кода, где идет ответ - он опрашивает нормально
Вот пример успешного выполнения команд

В основном коде есть дополнительные блоки, которые устанавливают значения под конкретного оператора сотовой связи

Итоги выполнения команд (возврат успешности выполнения команды)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Отправлена Команда AT
1 AT Str= 
2 AT Str= 
3 AT Str= OK
Отправлена Команда AT&F
1 AT&F Str= 
2 AT&F Str= 
3 AT&F Str= 
4 AT&F Str= OK
Отправлена Команда ATE0
1 ATE0 Str= 
2 ATE0 Str= ATE0
3 ATE0 Str= 
4 ATE0 Str= 
5 ATE0 Str= OK
Отправлена Команда AT+CMGF=1
1 AT+CMGF=1 Str= 
2 AT+CMGF=1 Str= 
3 AT+CMGF=1 Str= 
4 AT+CMGF=1 Str= NO CARRIER
 ПОВТОРНО AT+CMGF=1
2 AT+CMGF=1 Str= 
3 AT+CMGF=1 Str= 
4 AT+CMGF=1 Str= 
5 AT+CMGF=1 Str= OK
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227824
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как можете заметить, ответ на отправленную команду возвращается не сразу. В данном примере шаг в строках 0,5 секунд, то есть с момента отправки команды и до получения ответа об успешном выполнении проходит от 1,5 до 2,5 секунд, а иногда команды вообще не выполняться, так как происходит сбой/ошибка ...
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227848
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О// вот здесь подвохТак и я о том же. Команда "W Nr" тоже должна в модем писать?
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227852
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey MaslovТак и я о том же. Команда "W Nr" тоже должна в модем писать?Эта строк - проверочный код. Я её написал - на случай "вдруг сработает"
В стандартной ситуации
Код: plaintext
1.
2.
3.
4.
Set str="" //OK
w "AT",$Char(13)  // w "",$Char(13)  
Set Zayavkawww="Отправлена Команда AT"
do Zayavka.WriteLine(Zayavkawww)
do Zayavka.SaveStream()
и
Код: plaintext
1.
2.
3.
4.
5.
For Nr=0:1:9
{
  read str
  w Nr
  .........
}
По сути одно и то же.
Просто последний кусок кода - добавляет в строку в COM port по 1 символу и в результате у нас должно было бы получится в отправленном СМС сообщении 0123456789
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227855
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-Ону яО-О-О,

А почему решено что read str виснет, может он терминатор ждет? Может лучше читать символ с таймаутом?Не совсем понял, что имеете ввиду.
Я Делаю опрос последней строки, чтобы продолжить выполнение кода.
Опрашиваю COM port,

Если в коде указать read str , то код останавливается и все подвисает, и если принудительно прервать выполнение программы и открыть терминал COM porta через PYTTY, то первое что выводится будет "> ", то есть COM port Ждёт ввода команды, даже если мы закрыли исполняемый файл (прервали выполнение кода).

А определить, что терминал отправил мне команду "> ", я не могу!!! ответы от терминала/COM porta в данной ситуации не считываются (ну или я что то делаю не так). read var это чтение строки. последовательности байт. пока не встретится терминатор.
read *var это чтение одного символа. терминатор не ждется.
Ну или читать строку с указанием длины чтения.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227858
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код
Код: plaintext
1.
2.
3.
4.
5.
  Set str="" //OK
  w "AT+CSQ",$Char(13)  //10=Перевод строки 13=возврат каретки
  Set Zayavkawww="Отправлена Команда AT+CSQ"
  do Zayavka.WriteLine(Zayavkawww)
  do Zayavka.SaveStream()
  Hang 1
Делится на две части

Первая часть - непосредственно отправка команды COM port-у
Код: plaintext
1.
  Set str="" //OK
  w "AT+CSQ",$Char(13)  //10=Перевод строки 13=возврат каретки
Вторая часть кода - запись во внешний файл (*.txt) о том, что мы отправили команду модему, через COM port о получении уровня 3G сигнала
Код: plaintext
1.
2.
3.
  Set Zayavkawww="Отправлена Команда AT+CSQ"
  do Zayavka.WriteLine(Zayavkawww)
  do Zayavka.SaveStream()
  Hang 1
Затем мы слушаем ответы от модема
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  Hang 1
  For Nr=1:1:10
  {
    Set str=""
    Hang 0.5
    read str
    Set Zayavkawww=Nr_" AT+CSQ Str= "_str
    do Zayavka.WriteLine(Zayavkawww)
    do Zayavka.SaveStream()
    if (str="OK") {Set Nr=10 Hang 0.5} // ответ равен "+CSQ: 24,65" ||(($Find(str,"+CSQ"))>0) через 2-3 секунды все равно возвращает ОК!
    if (str="ERROR")||(str="NO CARRIER")
    {
      w "AT+CSQ",$Char(13)
      Set Zayavkawww=" ПОВТОРНО AT+CSQ"
      do Zayavka.WriteLine(Zayavkawww)
      do Zayavka.SaveStream()
      Hang 2
      Set Nr=1
    }
  }
И записываем результаты полученные от модема во внешний файл.
В результате, во внешнем текстовом файле у нас будут записи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Отправлена Команда AT+CSQ
1 AT+CSQ Str= 
2 AT+CSQ Str= 
3 AT+CSQ Str= 
4 AT+CSQ Str= +CSQ: 21,72
5 AT+CSQ Str= 
6 AT+CSQ Str= 
7 AT+CSQ Str= 
8 AT+CSQ Str= OK
С этим все просто и понятно, а вот получить ответ от команды AT+CMGS= , а точнее узнать, когда появились символы "> " я не могу, мой код просто не может их считать, хотя я на 150% знаю, что они уже появились и висят в терминале/COM port.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227859
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну я read var это чтение строки. последовательности байт. пока не встретится терминатор.
read *var это чтение одного символа. терминатор не ждется.
Ну или читать строку с указанием длины чтения.Сейчас попробую.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227873
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фокус не удался
На код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
  set str=""
  Set www="AT+CMGS="_""""_"+79107ХХХХХ"_"""" 
  w www,$Char(13) 
  Set Zayavkawww="Отправлена Команда AT+CMGS=+79107ХХХХХХ___"_($ZT($Piece($horolog,",",2)))
  do Zayavka.WriteLine(Zayavkawww)
  do Zayavka.SaveStream()
  Hang 1
  For Nr=0:1:9
  {
    write Nr
    Hang 1
    read *str
    if (str=Nr)||(str=" ")||(str=">")||(str="> ")||(str=" > ")||(str'="")
    {
      Set Zayavkawww=" Получен ответ: '"_str_"'___"_($ZT($Piece($horolog,",",2)))
      do Zayavka.WriteLine(Zayavkawww)
      do Zayavka.SaveStream()
      Hang 0.2
    }
    w $Char(8) // $Char(8)=стирал все символы, но "> " оставил, то есть при отправке СМС ушло только АТ 
    Set Zayavkawww=Nr_" str='"_str_"'___"_($ZT($Piece($horolog,",",2)))
    do Zayavka.WriteLine(Zayavkawww)
    do Zayavka.SaveStream()
  }
  write " ***Perevod Stroki",$Char(26) //10=Перевод строки 13=возврат каретки Ctr+Z=$Char(26)  ESC=$Char(27)  ">"=$Char(62)  
  quit
Получен очень странный ответ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Отправлена Команда AT+CMGS=+79107ХХХХХХ___23:32:54
 Получен ответ: '10'___23:32:56
0 str='10'___23:32:56
 Получен ответ: '13'___23:32:57
1 str='13'___23:32:57
 Получен ответ: '10'___23:32:58
2 str='10'___23:32:58
 Получен ответ: '62'___23:32:59
3 str='62'___23:32:59
 Получен ответ: '32'___23:33:00
4 str='32'___23:33:01
При этом дальше 4 строки не идет даже через 5 минут. При открытии PyTTY - опять вылазит "> ", что говорит, что о том, что ввод в терминале не завершен.
При этом в ответах, записанных во внешний текстовой файл фигурируют цифры 62 и 32 и 10
А в пришедшей СМС был следующий текст "345at at", что больше похоже на правду, т.к при запуске PyTTY я ввожу at, а цифры 345 наверное ввелись из кода.
Но проблема так и осталась
символы " > " я так и не увидел.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227877
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О,

Команда read *var читает символ, но помещает в var не сам прочитанный байт, а его код.

Соотношение примерно такое
Код: plaintext
1.
2.
3.
USER>w $a(">")
62
USER>w $c(62)
>
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227928
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В коде есть условие

||(str'="")

Которое, должно было сработать, так как мы получаем любое число, то есть str'="" (получили в ответ хоть что то).
Кроме этого, мы сами вводим числа.
Сейчас опробую, но шансов мало.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227935
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-ОВ коде есть условие

||(str'="")

Которое, должно было сработать, так как мы получаем любое число, то есть str'="" (получили в ответ хоть что то).
Кроме этого, мы сами вводим числа.
Сейчас опробую, но шансов мало.Приглядитесь к выводу в отчет этих строк
Код: plaintext
1.
 Получен ответ: '62'___23:32:59
3 str='62'___23:32:59
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227945
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну я,

Все работает, сейчас отчитаюсь.
С вашей помощью, ускорил опрос других команд. Теперь вместо 2-2,5 сек, запрос длится 1-1,5 секунды.
Но никогда не подумал, что условие наличие ответа str'="" не сработает!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Отправлена Команда AT+CMGS=+7910ХХХХХХ___09:46:06.861083
1 Смена Nr. str='75' = 09:46:07.49174
2	Получен ответ: '13' _ 09:46:07.624805

                                      !!!!!!!  Отправили СМС и ждем ответа об успешной отправке
1 AT+CMGS=+7910 Str= 
2 AT+CMGS=+7910 Str= 
3 AT+CMGS=+7910 Str= 
4 AT+CMGS=+7910 Str= > а вот и символ вылез(шаг опроса 0,250 сек)
5 AT+CMGS=+7910 Str= 
6 AT+CMGS=+7910 Str= 
7 AT+CMGS=+7910 Str= 
8 AT+CMGS=+7910 Str= +CMGS: 199
 СМС отправлена! Получен ответ: +CMGS: 199
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227946
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код был
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
For Nr=1:1:20 // Если всё ОК, то цикл должен прерваться примерно на Nr=5-7
{
  Kill str
  Hang 0.125
  read *str // аналогично Set str=$Ascii(str,1)   32='пробел' 62='>'  13=возврат каретки
  if (str=62)||(str=32)||(str=13) 
  {

    ..............
  }
По ходу дела, от ||(str=13) нужно избавляться - он срабатывает раньше, чем нужно!
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227953
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вроде бы все.
Вот код успешной отправки СМС (двухшаговая его часть)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
  set str=""
  Set www="AT+CMGS="_""""_"+79107ХХХ"_""""
  w www,$Char(13)
  Set Zayavkawww="Отправлена Команда AT+CMGS=+7910ХХХ___"_($ZT($Piece($horolog,",",2)))_(($PIECE($NOW(),",",2))#1)
  do Zayavka.WriteLine(Zayavkawww)
  do Zayavka.SaveStream()

  Hang 0.5
  For Nr=1:1:20 // Если всё ОК, то цикл должен прерваться примерно на Nr=5-7
  {
    Kill str
    Hang 0.125
    read *str // аналогично Set str=$Ascii(str,1)   32='пробел' 62='>'  13=возврат каретки
    if (str=62)||(str=32) // 79=O 75=K 
    {
      Set Zayavkawww=Nr_"  Получен ответ: '"_str_"' _ "_($ZT($Piece($horolog,",",2)))_(($PIECE($NOW(),",",2))#1)
      do Zayavka.WriteLine(Zayavkawww)
      do Zayavka.SaveStream()
      Set Nr=20
      Hang 0.250
      Goto EndATCMGS
    }
    Set Zayavkawww=Nr_" Смена Nr. str='"_str_"' = "_($ZT($Piece($horolog,",",2)))_(($PIECE($NOW(),",",2))#1)
    do Zayavka.WriteLine(Zayavkawww)
    do Zayavka.SaveStream()
  }

EndATCMGS

  w $Char(8) // !!!!!!!!!!!!!! иначе в СМС приходит символ ">" и получается ">Test Uspeshno Proiden!"
  Hang 0.150
  write "Test Uspeshno Proiden!",$Char(26) 
  //10=Перевод строки 13=возврат каретки Ctr+Z=$Char(26)  ESC=$Char(27)  ">"=$Char(62)

  For Nr=1:1:20
  {
    Set str=""
    Hang 0.250
    read str
    Set Zayavkawww=Nr_" AT+CMGS=+79107ХХХ Str= "_str
    do Zayavka.WriteLine(Zayavkawww)
    do Zayavka.SaveStream()
    if (($Find(str,"+CMGS"))>0) // приходит ответ   +CMGS: 170
    {
      Set Zayavkawww=" СМС отправлена! Получен ответ: "_str
      do Zayavka.WriteLine(Zayavkawww)
      do Zayavka.SaveStream()
      Set Nr=20
      Hang 0.250
    }
    if (($Find(str,"ERROR"))>0)||(str="ERROR")||(str="NO CARRIER") // +CMS ERROR: 305
    {
      Set Zayavkawww=" ОШИБКА"_str
      do Zayavka.WriteLine(Zayavkawww)
      do Zayavka.SaveStream()
      use old 
      w "Ошибка=",str,!
      Quit
    }
  }

  quit
Вот ответы на данную часть кода
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Отправлена Команда AT+CMGS=+7910ХХХ___10:00:59.0877
1 Смена Nr. str='10' = 10:00:59.75849
2 Смена Nr. str='13' = 10:00:59.914526
3 Смена Nr. str='10' = 10:01:00.070517
4	Получен ответ: '62' _ 10:01:00.226716

1 AT+CMGS=+7910ХХХ Str=  
2 AT+CMGS=+7910ХХХ Str= 
3 AT+CMGS=+7910ХХХ Str= 
4 AT+CMGS=+7910ХХХ Str= 
5 AT+CMGS=+7910ХХХ Str= +CMGS: 202
 СМС отправлена! Получен ответ: +CMGS: 202

БОЛЬШОЕ СПАСИБО активному помошнику ну я.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39227958
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S.

Кстати, если стандартным способом (через костыли, через бесплатные приложения) одна СМС-ка приходила через 17-25 секунд с момента отправки, то сейчас она приходит уже ТОЛЬКО через 4-5 секунд.
Практически моментально.

С чем это связано - не знаю, но отличия по скорости доставки на телефон колоссальные.

Одно но - для запуска модема нужна подготовительная часть - а она длится около 1 минуты, а потом нужно поддерживать его в активном состоянии (через запросы), иначе модем "засыпает" и все начинает сыпаться (идут коды ошибок).

Поэтому, если вам важна быстрота отправки - то один вариант (постоянно опрашивать можем, отсылать команды пустышки), но реакция практически мгновенная (сигнализация, безопасность, ...)
Если же отправляете СМС редко, и скорость реакции модема не важна, то можно пользоваться стандартными методами, там хоть и дольше все происходит, зато в интернете масса бесплатных приложений.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39228872
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О ,

Дабы не писать в коде комментарии вида

Код: plaintext
 //10=Перевод строки 13=возврат каретки Ctr+Z=$Char(26)  ESC=$Char(27)  ">"=$Char(62)

и не засорять его непонятными кодами, но при этом не потерять читаемость, воспользуйтесь макросами, например:asciicodes.inc
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
...
#define  CRLF  $C(13,10)
#define  BEEP  $C(7)
#define  BS    $C(8)
#define  TAB   $C(9)
#define  SUB   $C($ZH("1A"))
#define  ESC   $C($ZH("1B"))
...
Полный список кодов: ASCII
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39229547
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,

по мне так лучше таскать с собой комментарии, чем тратить мозг на запоминание того, что же такое BS и как мне закодировать перевод строки. На мой взгляд, запомнить CRLF сложнее, чем $C(13,10)
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39229562
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.На мой взгляд, запомнить CRLF сложнее, чем $C(13,10)

по мне так лучше таскать с собой комментарии Одно с другим не вяжется: или запомнить или комментарии.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39229582
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код писался для внутренней работы.
Я практически постоянно пишу комментарии, т.к. потом эти куски кода вытаскиваю и вставляю в другие части кода, так гораздо легче найти.
У все своя манера писать код.
Я люблю комментировать почему делал так или иначе.
Более того, я делаю и вовсе не позволенные вещи. Я оставляю внутри рабочего кода куски прежних версий.
Просто я частенько пишу алгоритмы анализа и очень часто, случаются ошибочные алгоритмы. И чтобы их не повторять, я пишу (оставляю) часть старого кода. Просто иногда могу наступать на одни и те же грабли по несколько раз.
В основном же у меня примерно на 70-100 строк кода - одна строка с комментариями. При разработке нового кода - комментарии приходятся на каждые 15-20 строк кода.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39229583
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, вдруг кому пригодится.
Если отправлять СМС в формате PDU, то вышеописанный код ловли символа ">" не срабатывает, так как сразу меняется сумма строки (а в этом формате нужно отправлять еще и длину строки с СМС сообщением).
В общем, я ловлю перевод каретки (символ 13), жду 1 секунду и ввожу вторую часть. Тогда все срабатывает как нужно.

В общем, я грешу на сам 3G модем, так как таких косяков на ровном месте в интернете не встречал (о них никто не писал).
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39229589
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще одно.Если отправлять СМС сообщения в формате "text" ("AT+CMGF=1" и AT+CSCS="GSM" раскладка символов), то СМС-ка уходит за 3-5 секунды. Длина СМС-ки 140 символов, но только латинскими буквами. Приходит за 2-5 секунд. В общей сложности с момента запуска отправки сообщения (активирования кода по отправке СМС) и до прибытия на телефон уходит 4-7 секунд. Самый быстрый способ доставки СМС.Если отправлять ОДИНОЧНОЕ СМС сообщение в формате "PDU" ("AT+CMGF=0" и AT+CSCS="UCS2" раскладка символов), то СМС-ка уходит за 5-7 секунд. Длина СМС-ки не более 67 символов!!!, но любыми буквами, символами, значками, хоть иероглифами! Приходит секунд за 5-7. в СУММЕ 7-15 СЕКУНД.Если отправлять Длинное СМС сообщение (длина более 67 символов) в формате "PDU" ("AT+CMGF=0" и AT+CSCS="UCS2" раскладка символов), то СМС-ка уходит примерно за 12-15 секунд и приходит к пользователю еще через 15 секунд. В общей сложности уходит около 25-35 секунд. Если еще проще, то сумма частей в СМС-ке умножаем на 15. Так, если будет уже 3 части в СМС сообщении, то придёт (пипикнет на телефоне пользователя) за 45 секунд.
Я так подробно пишу, т.к. встречал вопросы по созданию СМС сообщений через Cache.
Модератор: убрал моноширинный шрифт
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39231963
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitБлок А.Н.На мой взгляд, запомнить CRLF сложнее, чем $C(13,10)
по мне так лучше таскать с собой комментарии Одно с другим не вяжется: или запомнить или комментарии.
Не вижу проблем. Запомнить, продублировать комментарием.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39237566
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В linux системах существуют замечательные готовые решения для работы с SMS сообщениями, например бесплатный SMSTools. Прикрутить его без проблем можно через скрипты к любой СУБД.
У меня есть проект, где SMSTools с USB GSM модема принимает sms сообщения и отправляет их в Cache, и наоборот, Cache формирует сообщение для рассылки через smstools.
Не надо ничего изобретать и тратить на это время, все давно уже написано и отлажено.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39237594
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalinВ linux системах существуют замечательные готовые решения для работы с SMS сообщениями, например бесплатный SMSTools.Этот вариант предлагался ТС-у в одном из более ранних топиков. Однако он, не ища лёгких путей, всё же прошёл выбранным путём до конца.

P.S. Вы сюда, похоже, последнее время редко заходите и пропустили много важного...
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39237754
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы может и применял бы стандартные приложения, у них у всех косячёк - отправляют хорошо, а приём СМС сообщения и их дальнейший анализ - делают плохо. Будете смеяться, но разобраться, но разобраться в платном в стороннем софте было тяжеловато (с наскоку не получилось), а написать свою СМС-силку гораздо легче.
Я делал программу для отправки СМС с заделом на будущее - чтобы через СМС команды можно было и управлять машиной, оборудованием дистанционно.

Кроме всего этого, то что заложено в стандартных (бесплатных) программах по отправке СМС сообщений - чистый функционал.
Я же натура Творческая
и узнал много чего интересного, что может существенно разнообразить отправку СМС-ок.
Кроме того, зная все то что я уже знаю по AT командам - не составит особого труда и делать голосовую рассылку, обзвонку. Правда мой 3G модем не поддерживает голосовые функции. Но резервный канал - в случае сбоя я оставил и идет не только СМС сообщение, но и звонок на указанный номер сотового телефона.

Игры играми, а программирование для отправки СМС сообщений вылилось в нечто большее, что может решить массу задач.
В общем, я не жалею о потраченном месяце.

За месяц я получил все что хотел и полностью бесплатно. Есть задел на будущее по функционалу. Софт удобный для меня и полностью интегрированный в работу Cache.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39237797
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-ОЯ бы может и применял бы стандартные приложения, у них у всех косячёк - отправляют хорошо, а приём СМС сообщения и их дальнейший анализ - делают плохо. Будете смеяться, но разобраться, но разобраться в платном в стороннем софте было тяжеловато (с наскоку не получилось), а написать свою СМС-силку гораздо легче.
Я делал программу для отправки СМС с заделом на будущее - чтобы через СМС команды можно было и управлять машиной, оборудованием дистанционно.

Кроме всего этого, то что заложено в стандартных (бесплатных) программах по отправке СМС сообщений - чистый функционал.
Я же натура Творческая
и узнал много чего интересного, что может существенно разнообразить отправку СМС-ок.
Кроме того, зная все то что я уже знаю по AT командам - не составит особого труда и делать голосовую рассылку, обзвонку. Правда мой 3G модем не поддерживает голосовые функции. Но резервный канал - в случае сбоя я оставил и идет не только СМС сообщение, но и звонок на указанный номер сотового телефона.

Игры играми, а программирование для отправки СМС сообщений вылилось в нечто большее, что может решить массу задач.
В общем, я не жалею о потраченном месяце.

За месяц я получил все что хотел и полностью бесплатно. Есть задел на будущее по функционалу. Софт удобный для меня и полностью интегрированный в работу Cache.
Может еще и статью накидаете для Хабра? )
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39237944
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-ОЯ бы может и применял бы стандартные приложения, у них у всех косячёк - отправляют хорошо, а приём СМС сообщения и их дальнейший анализ - делают плохо. Будете смеяться, но разобраться, но разобраться в платном в стороннем софте было тяжеловато (с наскоку не получилось), а написать свою СМС-силку гораздо легче.
Я делал программу для отправки СМС с заделом на будущее - чтобы через СМС команды можно было и управлять машиной, оборудованием дистанционно.

Кроме всего этого, то что заложено в стандартных (бесплатных) программах по отправке СМС сообщений - чистый функционал.
Я же натура Творческая
и узнал много чего интересного, что может существенно разнообразить отправку СМС-ок.
Кроме того, зная все то что я уже знаю по AT командам - не составит особого труда и делать голосовую рассылку, обзвонку. Правда мой 3G модем не поддерживает голосовые функции. Но резервный канал - в случае сбоя я оставил и идет не только СМС сообщение, но и звонок на указанный номер сотового телефона.

Игры играми, а программирование для отправки СМС сообщений вылилось в нечто большее, что может решить массу задач.
В общем, я не жалею о потраченном месяце.

За месяц я получил все что хотел и полностью бесплатно. Есть задел на будущее по функционалу. Софт удобный для меня и полностью интегрированный в работу Cache.
Все здесь описанное уже есть в бесплатных реализациях ПО под linux, вплоть до серверов типа Asterisk https://ru.wikipedia.org/wiki/Asterisk, которые могут делать все здесь описанное и еще не описанное.
Зачем СУБД Cache навешивать функционал ей не свойсвенный? 80 годы давно прошли, когда данная СУБД выступала в качестве операционной системы.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39237947
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было бы интересно почитать интеграцию Cache с готовой системой типа Asterisk, это бы более соответствовало бы сегодняшнему развитию ПО.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39237962
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"а приём СМС сообщения и их дальнейший анализ - делают плохо."
Ничего здесь сложного нет. Тот-же smstools может отправить в Cache все входящие SMS сообщения, а дальше можно его анализировать "хоть слева направо, хоть справа налево".
"Будете смеяться, но разобраться, но разобраться в платном в стороннем софте было тяжеловато (с наскоку не получилось), а написать свою СМС-силку гораздо легче."
В бесплатном smstools разобраться можно за один день, там все расписано до деталей.
"Я делал программу для отправки СМС с заделом на будущее - чтобы через СМС команды можно было и управлять машиной, оборудованием дистанционно."
В linux "море" языков программирования вплоть до скриптовых. В моем случае взаимодействие между smstools и Cache происходит через php скрипт. А управление внешними устройствами дело 10, и Cache здесь точно "никаким боком".

"В общем, я не жалею о потраченном месяце."
За это время можно было-бы изучить тот-же Asterisk и решить с его использованием гораздо больше задач.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39238136
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще дополнение.
Мобильные модемы бывают разных типов, подключаемые непосредственно к ПК (usb, com и т.д.), встроенные (планшеты, смартфоны), внешние (работающие по TCP/IP). Для всех этих типов модемов существует готовое бесплатное ПО, где тип подключения указывается в файле настройки и прямая работа с API данных модемов скрыта в данном ПО и нет никакой необходимости вмешиваться в его работу. Вся задача разработчика сводиться к написанию скриптов, вызов которых обеспечит взаимодействие ПО модема и ПО разработчика.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39238752
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kalin

Я конечно считаю себя программистом (не профи), но работаю из под Windows и только.
Об описанных приложениях даже не слышал, хотя искал долго что то путное, что могло бы решить мои задачи. Если бы нашёл, то возможно, что действовал бы иначе.

Вообще к готовым решениям я отношусь двояко. Считаю примерное время на их адаптацию и написание такого же кода самостоятельно. Если время примерно одинаковое - то пишу сам, т.к. ты потом:
а) - развиваешься
b) - можешь всегда что то подправить и добавить
c) - практика показывает, что нужно перелапатить массу программ (а это опять же время), для того чтобы выбрать что то реально стоящее и бесплатное. а систему такие действия напрочь загаживают.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39238755
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kalin За это время можно было-бы изучить тот-же Asterisk и решить с его использованием гораздо больше задач.


Он не для Windows. Точнее ссылка на Windows есть, но самого дистрибутива нет, да и верси указана только Win2000/XP.
Это я видел.
...
Рейтинг: 0 / 0
COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
    #39239214
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О,
Asterisk под Linux http://www.asterisk.org/downloads
В чем польза, к примеру, изучить asterisk ? Изучив данную технологию, можно затем заработать на стороне денежек, т.к. данный продукт много где используется. Построив это все на Cache для себя, вряд ли потом можно это будет предложить еще где-то еще :(
И так во всем :)
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / COM port приглашает ввести данные, но поймпть эту ситуацию не могу.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]