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

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

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

Студворк — интернет-сервис помощи студентам
Программа отправки 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 устройства в качестве примера?

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

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

6
инженер-системотехник
 Аватар для Haster
111 / 111 / 5
Регистрация: 10.03.2009
Сообщений: 533
05.01.2012, 01:31
Сдается тебе нужно настроить ком-порт. Копай в сторону 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
 Аватар для denix
65 / 65 / 5
Регистрация: 11.01.2009
Сообщений: 130
05.01.2012, 22:50
еще бы посоветовал читать с устройства именно побайтно
0
 Аватар для zeppus
1 / 1 / 1
Регистрация: 07.02.2010
Сообщений: 64
06.01.2012, 11:38  [ТС]
Я поясню, у меня модем сидит на /dev/ttyUSB2 , я хочу отправить "с него" ussd - запрос; "Просто" как файл читать/писать его нельзя?
0
 Аватар для denix
65 / 65 / 5
Регистрация: 11.01.2009
Сообщений: 130
06.01.2012, 13:05
Цитата Сообщение от zeppus Посмотреть сообщение
"Просто" как файл читать/писать его нельзя?
можешь, поставь задержку еще между записью и чтением. и вот еще прочти:

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru