zennoposter+at команды

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
Доброго всем времени.

Требуется задача:
- Выполнение первой AT команды
- пауза
- Выполнение второй AT команды

Вычитал, что реализовывать это нужно на C#. Но не совсем понимаю по какому принципу работает C#. должны ли быть установлены какие-либо терминалы/нечто подобное, чтобы выполнялись AT команды? Или это все уже в винде есть по умолчанию и через C# автоматом выполняется?
Нужен выбор ком порта, я так понимаю.

Вот с форума взял некоторый код, чуть поправил, подскажите что лишнее и что не хватает?

//serial_port.PortName = "COM7"; //назначаем конкретный COM порт

serial_port.PortName = "COM13"

System.Threading.Thread.Sleep(100); //па-ааауза
serial_port.DiscardInBuffer();
serial_port.WriteLine("AT^SYSCFGEX="01",3fffffff,2,4,7fffffffffffffff,,"); //отправляем простейшую AT команду AT+CUSD=1,"2A19AC3602",15
System.Threading.Thread.Sleep(10000);
serial_port.WriteLine("AT^SYSCFGEX="03",3fffffff,2,4,7fffffffffffffff,,"); //отправляем простейшую AT команду AT+CUSD=1,"2A19AC3602",15

}
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
должны ли быть установлены какие-либо терминалы/нечто подобное, чтобы выполнялись AT команды?
Судя по примеру, потребуется указать в GAC: System.IO а в using'и: System.IO.Ports.
В самих C# экшенах выполняется код (тело) метода.
 

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
Судя по примеру, подребуется указать в GAC: System.IO а в using'и: System.IO.Ports.

В самих C# экшенах выполняется код (тело) метода.
Скажу прямо - ничего не понял. Я новичок в зеннопостере, а понадобилось реализовать такую простенькую(с виду) процедуру. Пока что не представляю даже как что работает
Единственное что понял, то что } быть либо не должно, либо должно где то открываться))
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18


Ещё учитывайте, что на разных модемах, разные команды.
Это да, как добавить C# код в шаблон - знаю. А вот как сделать чтобы работал - не знаю. Код что я написал выше - это не рабочий код.
AT команды выполняют нужные действия на моем модеме, протестировал в обычном терминале.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
Тогда вы можете обратиться сюда: https://zennolab.com/discussion/forums/poisk-i-predlozhenie-uslug-po-sozdaniju-shablonov.213/
где вам напишут и протестируют код удалённо.
Спасибо. заказать можно все что угодно)) Но тут сама проблема - код написан неправильно. Возможно в зеннопостере нужно включить какие то функции или добавить что то.
Придется видимо действительно платить, за срочность.
 
  • Спасибо
Реакции: Yuriy Zymlex

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
Всё ещё актуально, не могу разобраться. Код не работает...

Код:
using System;
using System.IO.Ports;

// Инициализируем COM порт по-умолчанию ----
SerialPort serial_port = new SerialPort();

serial_port.BaudRate =9600;
serial_port.DataBits = 8;
serial_port.StopBits = StopBits.One;
serial_port.Parity = Parity.None;
serial_port.Handshake = Handshake.None;
serial_port.RtsEnable = true;
serial_port.ReadTimeout = 500;
serial_port.WriteTimeout = 500;
// ----

string response = String.Empty;

serial_port.PortName = "COM13"; //назначаем конкретный COM порт
if (!serial_port.IsOpen) { //если порт НЕ открыт, то...
    try {
        serial_port.Open(COM13); //... пробуем его открыть
    }
    catch (Exception e) {return "упс!";}
     
    if (serial_port.IsOpen) { //если всё окейно, то работаем
        System.Threading.Thread.Sleep(1000); //па-ааауза
        serial_port.Write("AT^SYSCFGEX="01",3fffffff,2,4,7fffffffffffffff,, \r\n"); //отправляем простейшую AT команду
        System.Threading.Thread.Sleep(1000);
        try {
            response = serial_port.ReadExisting(); //пробуем читать ответ порта
        }
        catch (Exception e) {return "упс №2"; }
         
        if (response != String.Empty) {
            project.Variables["response"].Value = response; //если ответ не нулевой, то передаем его в проект
        }
        serial_port.Close(); //закрываем порт
    }
}
 

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
Проблему решил, нужно было добавить(включить нужные библиотеки), чтобы выполнялись команды с ком портом
И кавычки в команде были неправильно написаны с точки зрения программирования.
 

dimon0

Client
Регистрация
14.06.2016
Сообщения
3
Благодарностей
1
Баллы
3
Если решил, почему не поделиться итоговым решением?
 

iicemaster

Client
Регистрация
20.01.2022
Сообщения
41
Благодарностей
3
Баллы
8
  • Спасибо
Реакции: Juniorcpa

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
Всё просто, человеку главное решить свою проблему)
На остальных ему наплевать
Археолог :-) Я ж написал выше решение - проблема была в библиотеках. Код был - директив и using не было.
Готовое решение это как? Свой шаблон на публику выложить? Выше есть код, он же есть и где то на форуме тут.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)