1

Topic: Не работает RemoteXY.connect_flag

Что делать, чтобы установить начальное состояние (например, остановить двигатель). Очень опасно использовать программное обеспечение, если оно не просто игрушка, так как реле и двигатели остаются включенными, если связь прерывается. RemoteXY.connect_flag не работает.

2

Re: Не работает RemoteXY.connect_flag

Скиньте сюда код вашего проекта, только тот код который выдает редактор RemoteXY, в котором не работает RemoteXY.connect_flag

3

Re: Не работает RemoteXY.connect_flag

remotexy wrote:

Скиньте сюда код вашего проекта, только тот код который выдает редактор RemoteXY, в котором не работает RemoteXY.connect_flag

Я поставлю весь код, потому что он не большой.

//Хефест
//нано
#define REMOTEXY_MODE__SOFTSERIAL
#include <SoftwareSerial.h>
#include <RemoteXY.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <stdlib.h>

// RemoteXY
#define REMOTEXY_SERIAL_RX 5
#define REMOTEXY_SERIAL_TX 4
#define REMOTEXY_SERIAL_SPEED 9600

//PCF8574A / LiquidCrystal_I2C
#define I2C_ADDR    0x3F

LiquidCrystal_I2C lcd(0x3F,16,2);

// RemoteXY   
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
   { 255,3,0,11,0,92,0,8,13,1,
  1,2,7,22,50,15,94,8,208,147,
  208,190,209,128,208,181,0,1,2,7,
  46,50,15,94,8,208,148,208,190,208,
  187,208,181,0,67,1,19,6,26,9,
  19,26,11,2,1,8,84,48,10,31,
  13,24,8,208,163,208,186,209,153,209,
  131,209,135,208,181,208,189,208,190,0,
  208,152,209,129,208,186,209,153,209,131,
  209,135,208,181,208,189,208,190,0 };

struct {
  uint8_t Gore;
  uint8_t Dole;
  uint8_t uslov;
  char text_1[8];
  uint8_t connect_flag;
  bool Stanje_gore;
  bool Stanje_dole;
  bool Stanje_uslov;
} RemoteXY;

#pragma pack(pop)

unsigned char rbmerenja;
float suma,mereno;
uint8_t stanje_veze_flag;
#define PIN_GORE 7
#define PIN_DOLE 6

 
void print_at(byte y,byte x,char *string)
  {
    lcd.setCursor(y,x);
    lcd.print(string);
  }

void setup()
  {
    pinMode(A0,INPUT);
    pinMode(PIN_GORE,OUTPUT);
    pinMode(PIN_DOLE,OUTPUT);
    digitalWrite(PIN_GORE,HIGH);
    digitalWrite(PIN_DOLE,HIGH);
    RemoteXY_Init();
    lcd.init();                   
    lcd.backlight();
    lcd.home();
    lcd.clear();
    suma=0;
    rbmerenja=255;
    stanje_veze_flag=!RemoteXY.connect_flag;
  }

void loop()
{
  if (rbmerenja)
    {
      suma+=100*(float)analogRead(A0)/1023;
    }
   else
    {
      suma/=255;
    }
  RemoteXY_Handler ();
  if(RemoteXY.connect_flag!=stanje_veze_flag)//RemoteXY.connect_flag всегда равен нулю !!!!!!!!!!
    { //LCD и I2C не задействованы, если только это не требуется, чтобы ускорить реакцию обработчика.
      if(RemoteXY.connect_flag){print_at(0,0,"Veza DA");}else{print_at(0,0,"Veza NE");}
    }
  stanje_veze_flag=RemoteXY.connect_flag;
  if(RemoteXY.connect_flag)//RemoteXY.connect_flag всегда равен нулю !!!!!!!!!!
    {
      if(RemoteXY.uslov)
        {
          if (rbmerenja)
            {
              dtostrf(suma,3,1,RemoteXY.text_1);
              suma=0;
              rbmerenja=255;
            }
           if((RemoteXY.Gore)&&(!RemoteXY.Stanje_dole))
            {
              RemoteXY.Stanje_gore=1;
              digitalWrite(PIN_GORE,LOW);     
              digitalWrite(PIN_DOLE,HIGH);
            }
          else
            {
              RemoteXY.Stanje_gore=0;
              digitalWrite(PIN_GORE,HIGH);
            }

          if((RemoteXY.Dole)&&(!RemoteXY.Stanje_gore))
            {
              RemoteXY.Stanje_dole=1;
              digitalWrite(PIN_DOLE,LOW);
              digitalWrite(PIN_GORE,HIGH);
            }
           else
            {
              RemoteXY.Stanje_dole=0;
              digitalWrite(PIN_DOLE,HIGH);
            }
        }   
      else
        {
          dtostrf(0,3,0,RemoteXY.text_1);
          digitalWrite(PIN_GORE,HIGH);
          digitalWrite(PIN_DOLE,HIGH);
         }
    }
  else
    {//работает, только если он подключен
       digitalWrite(PIN_GORE,HIGH);
       digitalWrite(PIN_DOLE,HIGH); 
    }
}

4

Re: Не работает RemoteXY.connect_flag

connect_flag никак не связан с библиотекой, и я не могу знать, когда должен отключить электродвигатель в случае прекращения функционирования связи Bluetooth.

5 (edited by hefest 2018-03-18 23:49:47)

Re: Не работает RemoteXY.connect_flag

Я нашел причину, почему чрезвычайно важный флаг безопасности не работает.
I discovered what the problem is with these extremely important security flag.

connect_flag должен быть последним, определенным в структуре RemoteXY !!!!!!!!!!
connect_flag must be the last one defined variable in the structure RemoteXY !!!!!!!
connect_flag мора да буде стављен као последња променљива у структури RemoteXY !!!!

Для моих потребностей 5000 мс слишком длинный, поэтому я уменьшил его до 1000 мс в библиотеке.
Сматрам да је 5000мс предуго дозвољено време прекида блутут везе са андроид апликацијом па сам га смањио на 1000мс.!!
I shortened timeout  in the library from 5000mS to 1000mS.