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

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

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

Студворк — интернет-сервис помощи студентам
Всем привет.
Для одного проекта написал обширный класс по обработке данных принимаемых arduino.
Писал изначально глупо и данные для обработки принимал через loop.
Сейчас дошло дело до того, что понадобилась возможность использования SoftwareSerial, но никак не могу заставить его работать в моем классе.
Сутки пытаюсь найти информацию как сделать так, чтобы в моем классе можно было использовать SoftwareSerial.
С одной стороны проблем нет с его использованием, но вот настройки портов и скорость через setup передать никак не могу.
Подскажите или дайте ссылочку на почитать.
Заранее благодарю за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2018, 21:13
Ответы с готовыми решениями:

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

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

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

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

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

4
Модератор
Эксперт по электронике
8877 / 6651 / 912
Регистрация: 14.02.2011
Сообщений: 23,415
07.05.2018, 22:20 2
Цитата Сообщение от anderson1 Посмотреть сообщение
одскажите или дайте ссылочку на почитать.
может класс покажешь?
и как им пользоваться?
0
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 15
07.05.2018, 23:25  [ТС] 3
Цитата Сообщение от 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
Модератор
Эксперт по электронике
8877 / 6651 / 912
Регистрация: 14.02.2011
Сообщений: 23,415
07.05.2018, 23:46 4
Цитата Сообщение от 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  [ТС] 5
Цитата Сообщение от ValeryS Посмотреть сообщение
может с конструктором покумекать
Знать бы еще в какую сторону кумекать.

Цитата Сообщение от ValeryS Посмотреть сообщение
хотя, по моему мнению, это не класс, а полное недоразумение.
.....
что будет если данные не приняли? например провод оборвался? будем вечно там висеть?
Это код для примера и только...
Реализация всех проверок будет впереди, а пока мне не разобраться с тем, как помимо скорости передать номера пинов
0
08.05.2018, 00:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2018, 00:39
Помогаю со студенческими работами здесь

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

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

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

Использование cookie сторонних браузеров в своем приложении
Допустим в хроме(особо не важно какой браузер) ввел логин и пасс от мыла... Его сохранил там......

Проблема с установкой и использование сторонних библиотек на python
Только начал обучаться python-у и уже столкнулся с проблемой. Пытаюсь установить vk_api для...

Использование сторонних шрифтов в Cocoa(Mac OS X) приложениях
В общем столкнулся с проблемой(см заголовок). Везде пишут, что если мы хотим использовать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru