4 / 4 / 0
Регистрация: 29.01.2013
Сообщений: 91
1

Слишком быстрый инпут

24.07.2015, 14:06. Показов 465. Ответов 2
Метки нет (Все метки)

И так, я пишу программу для передачи потока через медленный радиопередатчик(заявленный максимум 10кб/с, но на деле по-моему меньше). Пишу под линукс для Raspberry Pi. Основана на этом - https://github.com/ninjablocks/433Utils . Выглядит она так:

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
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "RCSwitch.h"
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <time.h>
#include <termios.h>
 
using namespace std;
 
char getch()
{
  struct termios old, neue;
  char ch;
  tcgetattr(0, &old);
  neue = old;
  neue.c_lflag &= ~ICANON;
  neue.c_lflag &= ~ECHO;
  tcsetattr(0, TCSANOW, &neue);
  ch = getchar();
  tcsetattr(0, TCSANOW, &old);
  return ch;
}
 
int main(int argc, char *argv[]) {
 
  int PIN = 0;
 
  int tmp;
 
  if (wiringPiSetup () == -1) return 1;
 
  RCSwitch mySwitch = RCSwitch();
  mySwitch.enableTransmit(PIN);
  mySwitch.setRepeatTransmit(10);
 
  int c;
  while(1) {
    c = getch();
    mySwitch.send(c, 24);
  }
 
  return 0;
 
}
Вроде всё нормально и команда типа
Bash
1
echo "hi" | sudo ./tx
работает, но когда дело доходит до большого количества типа dmesg, то оно просто не успевает... Как это исправить? Я думаю нужно что-то типо промежуточного места хранения, но не знаю как это организовать(ибо пишу почти всегда на java). Заранее спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2015, 14:06
Ответы с готовыми решениями:

Как реализовать ручной инпут?(Воид функции)
Доброго времени суток и прошу прощения за грубый заголовок, нужна помощь с выполнением задания. ...

Высокий, быстрый, но не слишком дорогой!
Привет, товарищи!!! Живу в Питере. Сейчас в семье форд фокус 2 (09 года), но к хорошему быстро...

Из инпут в инпут
Здравствуйте хотел чтобы при записи слова в инпут оно записывалось в 10 таких же инпутов .Как...

Keyup в инпут
Нужно из select сделать input . Когда ввожу в инпут мне аяксом по событию keyup должно грузиться...

2
583 / 386 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
24.07.2015, 14:49 2
По видимому тут вам поможет, что то типо очереди которая будет содержать куски информации нужного размера
C++
1
2
3
4
5
6
7
8
while(mySwith.isSend()){ // отправляем до тех пор пока открыт передачик
   if(!buffer.isEmpty()){ //если буфер не пустой
      mySwitch.send(buffer.pop()); // изьять сообщение(которое уже нужногог размера) из буфера и отправить на передачу
   else{
     std::cout << "передавайть пока нечего, ожидаем данные" << std::endl;
}
}
}
0
4 / 4 / 0
Регистрация: 29.01.2013
Сообщений: 91
24.07.2015, 15:02  [ТС] 3
egor2116, а мне не нужно для этого создавать отдельную задачу(процесс), где один считывает все постоянно в буфер, а другой постоянно высылает из буфера? mySwitch.send занимает достаточно много времени.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2015, 15:02

Наклоненный инпут
При помощи чего возможно наклонить так инпут?

Формы и инпут
Здравствуйте . У меня такая проблема , я язык html как таковой незнаю , но у меня задание сделать...

форма/инпут?
Как создать поле в которое будет вносится нужная информация? Как я понимаю информация периодически...

форма и инпут
у меня есть форма и инпут. Мне надо, что бы форма НЕ отправляла запрос пока в инпуте меньше двух...


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

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

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