Форум программистов, компьютерный форум CyberForum.ru

C++: COM, OLE, ActiveX

Войти
Регистрация
Восстановить пароль
 
Антон Бутов
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 9
#1

Отправить Ctrl+Z по UART - C++ COM

24.12.2016, 11:41. Просмотров 522. Ответов 1
Метки нет (Все метки)

Устройство отменивается данными с sim900 AT коммандами, проблема в том, что в конце сообщение необходимо закрыть комбинацией Cntrl+Z она же \032 оно же \x1a в общем виде порядок передаваемых комманд выглядит так
AT+CMGF=1
AT+CMGS="phone#"
message
Ctrl-Z

Множество проб и ошибок передать комбинацию цифр как Ctrl-Z к успеху не привело, потратил несколько часов на поиске в интернете, где нашел кучу каких-тообрывочных данных, о каких-о пролемах с буфферизацией символа, необходимости его передать с конечной длинной, что вообщем-то мне ни о чем не говорит. Вот мой код, он отлично отрабатывает до Cntl+Z что я вижу через Com-порт, нет только закрывающего символа, очень прошу помочь --

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char MySmsText [] = "All Normal" ;// переменная хранения сообщения
char MyNumberPhone [] ="+88888888888"; // Переменная для хранения номера
int message(char MySmsText [],char MyNumberPhone []){
 FILE *fptty = fopen("/dev/ttyS2", "w");
fprintf(fptty, "AT+CMGF=1\r\n");  //Инициация передач смск -- AT+CMGF=1<enter>
delay (5000);
fprintf(fptty, "AT+CMGS="%s"\r\n", MyNumberPhone);   // AT+CMGS=(номер телефона)<enter>
delay (4000);
fprintf(fptty, "%s", MySmsText);   // "All Normal", GSM module!
delay (1000);
 fprintf(fptty, "\032");  // Строка которая должна отправить Ctrl +Z, но вместо этого отправлся   032 ))
 fclose (fptty);
         }
main(){ 
 message(MySmsText,MyNumberPhone);
}
Добавлено через 3 часа 2 минуты
что-то там связано с передачей нулевого символа кажись, может кто знает как его передать в этом коде?

Добавлено через 4 часа 42 минуты
Эта проблема каким-то образом разрешается через отправу символа с каким то символическим нулем, в общем вот этот код, но я не понимаю как его прикрутить к моей задаче

C
1
2
3
4
5
6
7
bzero (buffer, sizeof(buffer));
read(fd, buffer, sizeof(buffer));
strcpy(buffer, "AT+CMGS ="+60125649001"\r\nhello\n");
buffer[strlen(buffer)+1] = '\0';
buffer[strlen(buffer)] =(char)0x1A;
write (fd, buffer, strlen(buffer)+1);
wait();
человек что-то отписался на английском --
Well, It was my mistake. I generalized the size of the data sent t following 0x1A meant. To solve this I used strlen to send the real size of the char * sent to the serial port.o the serial port. I think since the sent size defined was larger, the values following the ctrl-z hex value 0x1A were garbage values. So my command could not save the sms in memory as it did not know the values
и вот вроде , как то еще вот так можно символ подсунуть
C
1
char ctrlZ[]={0x1A,0x00};
применяя strcpy кто-нибудь что-нибуд в этом понимает? программисты здесь вообще бывают?))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2016, 11:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отправить Ctrl+Z по UART (C++ COM):

.NET 3.x Отправить нажатие Ctrl+F9 программе работающего в фоном режиме - Visual Basic .NET
Доброго, гуглил вопрос и нашел массу не работающих решений :) - не получается отправить нажатие Ctrl+F9 программе работающего в фоном...

Как отправить форме сочетание клавиш - Ctrl+C - для копирования выделенного текста? - C#
Всем доброго дня. Вопрос в следующем. На форме есть некий выделенный текст, нужно его скопировать нажатием на кнопку или при выборе пункта...

Как отловить нажатие ctrl+v ctrl+c ctrl+x key_Press - C#
Как правильно отловить нажатие ctrl+v ctrl+c ctrl+x в событии key_Press? я пробую так: private void textBox_ServerIP_KeyPress(object...

JTextPane, функции Ctrl+A, Ctrl+C, Ctrl+X перенести на кнопку - Java SE
Класс JTextPane поддерживает нажатие клавиш таких как Ctrl+A, Ctrl+C, Ctrl+X и т. д. Вопрос заключается в том, чтобы функции, которые...

Не работает ctrl+c, ctrl+v, ctrl+a, ctrl+x в ubuntu 12.04 - Ubuntu Linux
Здравствуйте, не работают такие горячие клавиши, может кто уже стыкался з данной проблемой. Как можно устранить такое?

Как разместить скрипт на все страницы сайта (без Ctrl+c, Ctrl+v)? - JavaScript
Доброго времени суток. Я лишь недавно начал изучать Web программирование, и получил такое задание: вставить скрипт на все страницы сайта......

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DrOffset
7089 / 4230 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
24.12.2016, 16:20 #2
Цитата Сообщение от Антон Бутов Посмотреть сообщение
C++
1
fprintf(fptty, "\032"); // Строка которая должна отправить Ctrl +Z
Для начала попробуй так (вместо процитированного):
C++
1
fprintf(fptty, "\x1A");
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2016, 16:20
Привет! Вот еще темы с ответами:

Awesomium: по нажатию на Ctrl+T / Ctrl+W создавать новые и закрывать текущие формы - C#
Доброго времени суток! Столкнулся с такой проблемой. Есть обычная форма, на форме контрол webControl и addressBox (оба контрола из...

Разработать программу, которая не реагирует на нажатия клавиш Ctrl+Break и Ctrl+C - Assembler
И мне помогите пожалуйста)) На входном языке Assembler разработать программу, которая не реагирует на нажатия клавиш Ctrl+Break и Ctrl+C....

Копирование картиннки из интернета и вставка документ путём Ctrl+C, Ctrl+V - MS Word
Здравствуйте! Подскажите по такому вопросу. Как можно скопировать часть текста из интернет страницы вместе с картинкой и вставить это...

GUI table - вставка целикового массива из экселя (Ctrl+C - Ctrl+V) - Matlab
Всем привет, появилась задачка: хочу сделать програмку, в которой будет аналог таблицы excel со следующими возможностями: 1. вставка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru