Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 15

Использование SoftwareSerial с сторонних классах

07.05.2018, 21:13. Показов 1107. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Для одного проекта написал обширный класс по обработке данных принимаемых arduino.
Писал изначально глупо и данные для обработки принимал через loop.
Сейчас дошло дело до того, что понадобилась возможность использования SoftwareSerial, но никак не могу заставить его работать в моем классе.
Сутки пытаюсь найти информацию как сделать так, чтобы в моем классе можно было использовать SoftwareSerial.
С одной стороны проблем нет с его использованием, но вот настройки портов и скорость через setup передать никак не могу.
Подскажите или дайте ссылочку на почитать.
Заранее благодарю за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2018, 21:13
Ответы с готовыми решениями:

Использование сторонних класов
Использую gradle и командную строку. Как использовать другие классы в главном пакете? Ну чтоб можно было прописать import package.test;....

Использование сторонних библиотек
Всем салют! Я новичок на этом форуме, а также в языке Си++. У меня возникли вопросы. Дело в том, что до Си++ я кодил на PHP, причем...

Использование сторонних приложений
Одна идея безумная у меня возникла, а для этого нужно много вычислений программно производить. В том числе и интегралы считать. Ничего...

4
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
07.05.2018, 22:20
Цитата Сообщение от anderson1 Посмотреть сообщение
одскажите или дайте ссылочку на почитать.
может класс покажешь?
и как им пользоваться?
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 15
07.05.2018, 23:25  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
может класс покажешь?
и как им пользоваться?
Для примера:
MyProj.ino
C++
1
2
3
4
5
6
7
8
9
10
11
#include "MyClass.h"
 
void setup() {
    MyClass.begin(9600);
    Serial.begin(9600);
}
 
void loop() {
    MyClass.GetData();
/*..... Что-то делаем.....*/
}
MyProj.cpp
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
#include "MyClass.h"
#include <SoftwareSerial.h>
 
byte _Query[2][5] = { // массив с запросами
    { 0x20, 0x15, 0x00, 0x01, 0xCB },
    { 0x20, 0x55, 0x10, 0x11, 0xСB }
};
 
 
byte InData[19] = {}; // Массив для принятых данных
 
SoftwareSerial My_Serial(12,13);
 
void MyClassClass::begin(uint16_t Speed)
{ 
    My_Serial.begin(Speed); // Настраиваем скорость порта
/*.... тут вызов прочих настроек и т.д. ....*/
 
}
 
void MyClassClass::GetData(void)
{
    My_Serial.write(_Query[0], sizeof(_Query[0]));
    if (My_Serial.available() > 0) {
        int TmpCount = 0;
        while (TmpCount < 19) {
            InData[TmpCount] = My_Serial.read();
            TmpCount++;
        }
    }
/*..... после приема данных обрабатываем их .....*/
 
    My_Serial.flush(); // Очищаем буфер
}
 
MyClassClass MyClass;
MyProj.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef _MYCLASS_h
#define _MYCLASS_h
 
#if defined(ARDUINO) && ARDUINO >= 100
    #include "arduino.h"
#else
    #include "WProgram.h"
#endif
 
class MyClassClass
{
 public:
    void begin(uint16_t Speed);
    void GetData(void);
};
 
extern MyClassClass MyClass;
 
#endif

Суть заключается в том, что в данный момент все работает, но вот проблема в том, что кроме скорости порта я ничего настроить не могу.
Банально, но для смены пинов (RX, TX) необходимо лезть в класс и исправлять там.
Ума не приложу как сделать указание пинов (RX, TX) по аналогии с указанием скорости.
Скажем привести к виду
C++
1
MyClass.begin(12, 13, 9600);
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
07.05.2018, 23:46
Цитата Сообщение от anderson1 Посмотреть сообщение
ма не приложу как сделать указание пинов (RX, TX) по аналогии с указанием скорости.
может с конструктором покумекать
хотя, по моему мнению, это не класс, а полное недоразумение
Цитата Сообщение от anderson1 Посмотреть сообщение
C++
1
2
3
4
5
6
7
void MyClassClass::GetData(void)
{
  My_Serial.write(_Query[0], sizeof(_Query[0]));
  if (My_Serial.available() > 0) {
  ...
/*..... после приема данных обрабатываем их .....*/
My_Serial.flush(); // Очищаем буфер
что будет если данные не приняли? например провод оборвался? будем вечно там висеть?
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 15
08.05.2018, 00:39  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
может с конструктором покумекать
Знать бы еще в какую сторону кумекать.

Цитата Сообщение от ValeryS Посмотреть сообщение
хотя, по моему мнению, это не класс, а полное недоразумение.
.....
что будет если данные не приняли? например провод оборвался? будем вечно там висеть?
Это код для примера и только...
Реализация всех проверок будет впереди, а пока мне не разобраться с тем, как помимо скорости передать номера пинов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2018, 00:39
Помогаю со студенческими работами здесь

Использование сторонних классов в плагинах
Привет, всем. Мучаю плагины, а они меня. Внутри плагина к основному приложению мне нужно создать виджет, который занимается...

Использование сторонних библиотек с Qt Creator на MacOS
Имеется большая библиотека с кучей dll файлов. Возможно ли использовать эту библиотеку в Qt Creator на MacOS? Насколько я знаю, MacOS с dll...

Использование в языке сторонних и стандартных библиотек
Уважаемые кодеры, подскажите пожалуйста, какие opensource библиотеки лучше использовать для работы с excel файлами, ну там .xlsx...

Использование в Delphi Firemonkey сторонних библиотек
Подскажите, как в использовать в Firemonkey-проекте (для Android) сторонние библиотеки в ELF формате? Как их можно подключить?

Бан в онлайн-игре за использование сторонних программ
Доброго времени суток уважаемые! Администрацию ФОРУМА прошу не блокировать меня. Вынужден обратиться к профессионалам. У меня возникла...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru