Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
1 / 1 / 1
Регистрация: 07.02.2010
Сообщений: 64
1

Чтение/запись на устройства

03.01.2012, 17:38. Показов 3023. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа отправки ussd-команд(написанная мной) выглядит так:
C
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
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#define CS 255
int main(int argc, char *argv[]){
    char dev[CS], coml[CS], t[CS], ans[CS];
    int v1, c;
    FILE *fp;
    
    v1 = getopt(argc, argv, "d:l:");
    if (v1 == -1){
        fprintf(stderr,"%s: input error\n", argv[0]);
        return 1;
    } else
        strncpy(dev, optarg, CS);
    v1 = getopt(argc, argv, "d:l:");
    if (v1 == -1){
        fprintf(stderr,"%s: input error\n", argv[0]);
        return 2;
    } else
        strncpy(coml, optarg, CS);
    strncpy(t, coml, CS);
    sprintf(coml, "AT+CUSD=1,%s,15\r\n", t);
    //printf("arg1:\n%s\narg2:\n%s\n", dev, coml);
    fp = fopen(dev, "wr");
    fprintf(fp, "%s", coml);
    fgets(ans, CS, fp);
    printf("%s", ans);
    fclose(fp);
    return 0;
}
Но в ответ я получаю крякозябру(один символ) в Linux+C я нуб, как(где) доработать код?
dev - /dev/ttyUSB2
coml - *102#
AT команду позаимствовал из:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/python
import binascii
import sys
f = open("/dev/ttyUSB2", "r+")
data=''
error="Usage: python ussd.py action (code)\r\nActions: balans, popolnit, data-status, 3g-data-status, signal"
if len(sys.argv) < 2:
    print error
    sys.exit()
 
if sys.argv[1] == 'balans':
    print>>f, "AT+CUSD=1,*102#,15\r\n"
    while data[:5]!="+CUSD":
        data=f.readline()
    data = data[10:-6]
    print binascii.unhexlify(data) ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.01.2012, 17:38
Ответы с готовыми решениями:

Чтение данных от устройства usb
Подскажите, может у кого есть простенькая программа на С для передачи и чтения из usb устройства в...

Открыть текстовый файл в необходимом режиме (на чтение, на чтение и запись, на добавление)
Открыть текстовый файл в необходимом режиме (на чтение, на чтение и запись, на добавление). (В...

Чтение файла, чтение названия папки где находится файл, запись данных на PHP
Допустим у нас есть структура с папками типа Large -&gt; Vehicles -&gt; Firetruck_0 В этой папке лежит...

Чтение имени устройства в COM-порте
Ребят, подскажите как узнать имя устройства в конкретном COM порте. Пробую через jssc 2.6.0. но...

6
инженер-системотехник
111 / 111 / 5
Регистрация: 10.03.2009
Сообщений: 533
05.01.2012, 01:31 2
Сдается тебе нужно настроить ком-порт. Копай в сторону termios.h

Вот как выглядит функция открытия и настройки ком-порта:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool ComPort::Open(const QString &device)
{
  
  device_name = device;
  com = ::open(device_name.toLocal8Bit().data(),O_RDWR | O_NOCTTY | O_NONBLOCK);
  if (com < 0)
    return false;
 
  termios options;
  tcgetattr(com,&options);
  cfsetispeed(&options,B57600);             // Скорость чтения 57600 бод
  cfsetospeed(&options,B57600);             // Скорость записи 57600 бод
  options.c_cflag |= (CLOCAL | CREAD);          // Активируем приемник, разрешая чтение
  options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);   // Настраиваем приемник
  options.c_oflag &= ~OPOST;                // Настраиваем передатчик (RAW-данные)
  options.c_iflag &= ~(IXON | IXOFF | IXANY);       // отключаем программное управление потоком (чтобы принимать байты 0x11 и 0x13)
  tcsetattr(com, TCSANOW, &options);
  tcflush(com,TCIOFLUSH);
  return true;
}
0
65 / 65 / 5
Регистрация: 11.01.2009
Сообщений: 130
05.01.2012, 22:50 3
еще бы посоветовал читать с устройства именно побайтно
0
1 / 1 / 1
Регистрация: 07.02.2010
Сообщений: 64
06.01.2012, 11:38  [ТС] 4
Я поясню, у меня модем сидит на /dev/ttyUSB2 , я хочу отправить "с него" ussd - запрос; "Просто" как файл читать/писать его нельзя?
0
65 / 65 / 5
Регистрация: 11.01.2009
Сообщений: 130
06.01.2012, 13:05 5
Цитата Сообщение от zeppus Посмотреть сообщение
"Просто" как файл читать/писать его нельзя?
можешь, поставь задержку еще между записью и чтением. и вот еще прочти:

http://www.linuxquestions.org/... -c-675382/
0
инженер-системотехник
111 / 111 / 5
Регистрация: 10.03.2009
Сообщений: 533
09.01.2012, 23:07 6
Можно будет, но только после правильной настройки порта )
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
13.01.2012, 06:56 7
Цитата Сообщение от zeppus Посмотреть сообщение
C
1
fp = fopen(dev, "wr");
такого режима нет
эта строка будет обрабатываться как "w"
используй "w+" или "w+b"
0
13.01.2012, 06:56
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.01.2012, 06:56
Помогаю со студенческими работами здесь

Асинхронное чтение с устройства. Простая задача
Здравствуйте! Плохо знаю C++, а тем более многопоточное программирование. Но возникла задача в...

Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран
1.Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран...

Запись и чтение *.txt файла - запись частичная
Доброе время суток! Помогите решить проблемку. У меня либо не полностью считывается файл, либо не...

[Файлы] Запись-чтение-запись. Почему не прокатывает?
Сначала записываю в файл &quot;а&quot; запись &quot;makulatura&quot;, потом читаю ее в строку h. Все ок. Но потом когда...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как использовать RabbitMQ в Go (Golang)
bytestream 22.01.2025
RabbitMQ представляет собой надежный и широко используемый брокер сообщений, который играет ключевую роль в построении современных распределенных систем и микросервисной архитектуры. В основе работы. . .
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
Как добавить пустую директорию в репозиторий Git
bytestream 22.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо сохранить пустую директорию в репозитории. Данная задача может показаться простой на первый. . .
Как валидировать адрес email в JavaScript
bytestream 22.01.2025
JavaScript, как основной язык веб-разработки, предоставляет разработчикам множество инструментов для реализации эффективной валидации email-адресов. От простых встроенных решений до сложных. . .
Как заменить все вхождения подстроки в JavaScript
bytestream 22.01.2025
Строки в JavaScript представляют собой неизменяемые последовательности символов, что делает их обработку особенно интересной с точки зрения оптимизации и выбора правильного подхода к решению задач. . . .
Управление версиями пакетов в Node.js. В чем разница между тильдой (~) и кареткой (^) в package.json
bytestream 22.01.2025
В современной разработке программного обеспечения управление версиями пакетов играет ключевую роль в обеспечении стабильности и надежности проектов. Node. js, как одна из самых популярных платформ для. . .
Аутентификация на сайте с помощью формы
bytestream 21.01.2025
В современном цифровом мире безопасная аутентификация становится краеугольным камнем защиты веб-приложений и пользовательских данных. Каждый день миллионы людей используют различные онлайн-сервисы,. . .
Как получить индекс в цикле for в Python
bytestream 21.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
Как определить адрес, из которого локальный репозиторий Git был клонирован
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса. При работе с Git разработчики часто сталкиваются с необходимостью. . .
Какая разница между операторами == и === в сравнениях в JavaScript
bytestream 21.01.2025
В мире веб-разработки JavaScript занимает особое место как динамический язык программирования, предоставляющий разработчикам широкий набор инструментов для создания интерактивных веб-приложений. . . .
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru