c# – Falha no recebimento de dados esp-01 arduino mega

Boas, estou tentando fazer um sistema de segurança com RFID, no momento sou capaz de detetar se existe na base de dados um ID e receber uma string “autorizado” no meu programa, o problema é que essa string(ou booleano) tambem deveria ser passada para o meu arduino (monitor serial), para que assim eu possa fazer algo caso o acesso seja permitido ou não.

esquema de ligações

arduino mega —————–esp-01
gnd————————–gnd
3.3—————————3.3
rx1—————————-tx
tx1—————————-rx (deveria usar resis divider)

leitor rfid ligado no arduino mega
buzzer pin 7
led pin4

codigo da aplicação em python

from bottle import route, run, request, get, response, default_app

from paste import httpserver
import sqlite3
import json
from pathlib import Path

#NOTE: CHANGE THIS TO WHERE YOU DOWNLOAD YOUR GIT REPO
db_folder = Path(“C:/git/database-project/StudentDB.db”)

application = default_app()

@get(‘/student/isauthorized’)
def message():

rf_id_code = request.query.rf_id_code.lstrip().rstrip()
length = len(rf_id_code)
print(f"Received the following query parameter rf_id_code={rf_id_code}, len={length}")

conn = sqlite3.connect(db_folder)
cursor = conn.cursor()

cursor.execute("SELECT COUNT(*) FROM STUDENTS WHERE RF_ID_CODE=?", (rf_id_code,))
result = cursor.fetchone()
row_count = result(0)
print(f"query result :: ", row_count);
cursor.close()

#Set Response Header to JSON
response.headers('Content-Type') = 'application/json'
response.headers('Cache-Control') = 'no-cache'

if(row_count > 0):
    message_result = {"is_authorized": "true"}
else:
    message_result = {"is_authorized": "false"}
print(f"message_result :: {message_result}")
return json.dumps(message_result)

httpserver.serve(application, host=’0.0.0.0′, port=8080)

codigo do arduino

#include <StreamUtils.h>
#include <SPI.h>
#include <MFRC522.h>
#include <ArduinoJson.h>
#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(18, 19); // TX, RX
 
MFRC522 mfrc522(53, 5);   // Create Instance of MFRC522 mfrc522(SS_PIN, RST_PIN)
const int buzzerPin = 7; //buzzer attach to digital 7
const int ledPin = 4; 
 
bool isRead = false;
bool isNewCard = false;
String tagContent = "";
String currentUID = "";
 
// Interval before we process the same RFID
int INTERVAL = 2000;
unsigned long previousMillis = 0;
unsigned long currentMillis = 0;
 
void setup()
{
  Serial.begin(115200);
  mySerial.begin(4800);
  mySerial.setTimeout(5000);
  // Setup the led
pinMode(ledPin, OUTPUT); 
pinMode(buzzerPin, OUTPUT);

  SPI.begin();
  mfrc522.PCD_Init();
 
  Serial.println("Detecting RFID Tags");
}
 
 
void loop()
{
  // Look for new cards
  if (mfrc522.PICC_IsNewCardPresent())
  {
    // Select one of the cards
    if (mfrc522.PICC_ReadCardSerial())
    {
      isRead = true;
 
      byte letter;
      for (byte i = 0; i < mfrc522.uid.size; i++)
      {
        tagContent.concat(String(mfrc522.uid.uidByte(i) < 0x10 ? " 0" : " "));
        tagContent.concat(String(mfrc522.uid.uidByte(i), HEX));
      }
 
      tagContent.toUpperCase();
    }
    if (isRead){
      currentMillis = millis();
      // If current UID is not equal to current UID..meaning new card, then validate if it has access
      if (currentUID != tagContent) {
        currentUID =  tagContent;
        isNewCard = true;
      } else {
        // If it is the same RFID UID then we wait for interval to pass before we process the same RFID
        if (currentMillis - previousMillis >= INTERVAL) {
          isNewCard = true;
        } else {
          isNewCard = false;
        }
      }
      if (isNewCard) {
        if (tagContent != ""){
          turnOffLED();
          
          previousMillis = currentMillis;
          //Send the RFID Uid code to the ESP-01 for validation
          Serial.print("Sending data to ESP-01 :: ");
          Serial.println(tagContent);
          //TODO Process read from serial here
          mySerial.println(tagContent);
          Serial.println("Waiting for response from ESP-01....");
          
          int iCtr = 0;
          while (!mySerial.available())
          {
            iCtr++;
            if (iCtr >= 100)
            {
            Serial.println("Time over");
              break;
            }
            delay(50);
          }
           //não passa para baixo
       
          if (mySerial.available()) 
          {
            bool isAuthorized = isUserAuthorized(tagContent);
            // If not authorized then sound the buzzer
            if (!isAuthorized)  
            {
              playNotAuthorized();
            } 
            else{ //light up the Green LED
              turnOnLED();  
            }
          } 
          Serial.println("Finished processing response from ESP-01....");
        }
      } 
    } 
    else {
      Serial.println("No card details was read!");
    }
    tagContent = "";
    isNewCard = false;
  }
}

bool isUserAuthorized(String tagContent){
  const size_t capacity = JSON_OBJECT_SIZE(1) + 30;
  DynamicJsonDocument doc(capacity);
  // Use during debugging
    //ReadLoggingStream loggingStream(mySerial, Serial);
   // DeserializationError error = deserializeJson(doc, loggingStream);
 
  // Use during actual running
  DeserializationError error = deserializeJson(doc, mySerial);
  if (error) {
       // Serial.print(F("deserializeJson() failed: "));
    Serial.println(error.c_str());
    return error.c_str();
  }
  bool is_authorized = doc("is_authorized") == "true";
  Serial.print("is_authorized :: ");
  Serial.println(is_authorized);
  return is_authorized;
 
}

void playNotAuthorized() 
{
  tone(buzzerPin, 2000);
  delay(500);
  noTone(7);
}
 
void turnOffLED() 
{
 digitalWrite(ledPin, LOW);

}
 
void turnOnLED() 
{
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
}
 

codigo do esp-01

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <ArduinoJson.h>
 
// NOTE:  CHANGE THIS TO YOUR WIFI SSID AND PASSWORD
const char* ssid     = "Noira2";
const char* password = "12345678";
 
//#define DEBUG   //If you comment this line, the DPRINT & DPRINTLN lines are defined as blank.
#ifdef DEBUG    //Macros are usually in all capital letters.
  #define DPRINT(...)    Serial.print(__VA_ARGS__)     //DPRINT is a macro, debug print
  #define DPRINTLN(...)  Serial.println(__VA_ARGS__)   //DPRINTLN is a macro, debug print with new line
#else
  #define DPRINT(...)     //now defines a blank line
  #define DPRINTLN(...)   //now defines a blank line
#endif
 
void setup() {
  Serial.begin(4800);
  delay(10);
 
  // We start by connecting to a WiFi network
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
   
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 
  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}
 
const byte numChars = 20;
char receivedChars(numChars);   // an array to store the received data
 
boolean newData = false;
 
void loop() {
    recvWithEndMarker();
    processRFIDCode();
}
void recvWithEndMarker() {
    static byte ndx = 0;
    char endMarker = 'n';
    char rc;
    
    while (Serial.available() > 0 && newData == false) {
        rc = Serial.read();
 
        if (rc != endMarker) {
            receivedChars(ndx) = rc;
            ndx++;
            if (ndx >= numChars) {
                ndx = numChars - 1;
            }
        }
        else {
            receivedChars(ndx) = ''; // terminate the string
            ndx = 0;
            newData = true;
        }
    }
}
 
void processRFIDCode() {
    if (newData == true) {
        DPRINT("This just in ... ");
        DPRINTLN(receivedChars);
        newData = false;
        isUserAuthorized(receivedChars);
    }
}
 
 
 
void isUserAuthorized(String rfIdCode){
    // wait for WiFi connection
  if ((WiFi.status() == WL_CONNECTED)) {
 
    WiFiClient client;
 
    HTTPClient http;
 
    // NOTE:  CHANGE THIS TO THE IP ADDRESS WHERE YOUR APPLICATION IS RUNNING
    String url = "http://192.168.1.122:8080/student/isauthorized?rf_id_code=";
    //192.168.1.122
    //172.19.0.89
    String encodedRFIDCode = urlencode(rfIdCode);
    url+=encodedRFIDCode;
    DPRINT("url :: ");
    DPRINTLN(url);
 
    http.setTimeout(20000);
    if (http.begin(client, url)) {  // HTTP
 
      // start connection and send HTTP header
      int httpCode = http.GET();
      DPRINT("httpCode :: ");
      DPRINTLN(httpCode);
 
      // httpCode will be negative on error
      if (httpCode > 0) {
        // HTTP header has been send and Server response header has been handled
 
        if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
          String payload = http.getString();
          DPRINTLN(payload);
          sendDataBackToArduino(payload);
 
        }
      } else {
        Serial.printf("(HTTP) GET... failed, error: %sn", http.errorToString(httpCode).c_str());
      }
 
      http.end();
    } else {
      Serial.printf("(HTTP} Unable to connectn");
    }
  }
}
 
String urlencode(String str)
{
    String encodedString="";
    char c;
    char code0;
    char code1;
    char code2;
    for (int i =0; i < str.length(); i++){
      c=str.charAt(i);
      if (c == ' '){
        encodedString+= '+';
      } else if (isalnum(c)){
        encodedString+=c;
      } else{
        code1=(c & 0xf)+'0';
        if ((c & 0xf) >9){
            code1=(c & 0xf) - 10 + 'A';
        }
        c=(c>>4)&0xf;
        code0=c+'0';
        if (c > 9){
            code0=c - 10 + 'A';
        }
        code2='';
        encodedString+='%';
        encodedString+=code0;
        encodedString+=code1;
        //encodedString+=code2;
      }
      yield();
    }
    return encodedString;
     
}
 
void sendDataBackToArduino(String payload)
{
  const size_t capacity = JSON_OBJECT_SIZE(1) + 30;
  DynamicJsonDocument doc(capacity);
    // Parse JSON object
  DeserializationError error = deserializeJson(doc, payload);
  if (error) {
    Serial.print(F("deserializeJson() failed: "));
    Serial.println(error.c_str());
    return;
  }
  serializeJson(doc, Serial);
}

O meu output

inserir a descrição da imagem aqui

back end – Meu código no PHP está dando “Falha de segmentação (imagem do núcleo gravada)”

<?php

$total = 0.00;

echo "(1)X-Bacon - R$5,00n(2)Refrigerante - R$3,50n(3)Hot dog - R$4,25n(4)Batata frita - R$1,99n(5)Suco - R$2,00n";
$opcao = readline("Digite sua opção:n");
$quantidade = readline("Digite a quantidade: ");

switch ($opcao) {
    case 1:
        echo"X-Bacon adicionado!n";
        $total += (5.00 * $quantidade);
        break;
    case 2:
        echo"Refrigerante adicionado!n";
        $total += (3.50 * $quantidade); 
        break;
    case 3:
        echo"Hot dog adicionado!n";
        $total += (4.25 * $quantidade);
        break;
    case 4:
        echo"Batata frita adicionada!n";
        $total += (1.99 * $quantidade);
        break;
    case 5:
        echo"Suco adicionado!n";
        $total += (2.00 * $quantidade);
        break;
}

echo"TOTAL: R$$totaln";

output: Falha de segmentação (imagem do núcleo gravada)

java – Falha ao carregar aplicação Angular + Spring Boot na AWS

Criei uma aplicação Angular + SpringBoot + oauth2, na minha maquina local executo aplicação beleza e sem erros, quando subo ela na AWS me retorna a seguinte mensagem:

403 Forbidden

Deve ter alguma configuração que não estou sabendo lidar do Oauth2.

python – Falha na instalação do pyarrow e fastparquet

Boa tarde, pessoal, sou iniciante em python então por favor, tenham paciência.

Estou tentando ler um arquivo do tipo .parquet, para isso procurei na internet como poderia lê-lo e vi que deveria instalar o pyarrow ou fastparquet.

Sendo assim tentei o pip install pyarrow no meu jupyter botebook e ele não pára de rodar (fica aquele asterisco do lado da célula). Tentei então pelo prompt de comando, e recebo um erro:

Error: Failed building wheel for pyarrow (em vermelho)

Failed to build pyarrow (em branco)

Error: Could not build wheels for pyarrow which use PEP 517 and cannot be installed directly (em vermelho)

Claro que tem mais texto em vermelho, mas não sei se vale a pena copiar tudo então deixei as últimas 3 mensagens que aparecem. Talvez isso já ajude vocês a me ajudar.

Tentei o mesmo procedimento para o fastparquet, no jupyter botebook a mesma situação (não pára de rodar) e no prompt de comando uma resposta diferente, mas muito texto em vermelho e, no final das contas, nada feito. Aqui o erro parece ser que preciso do Microsoft Visual C++ 14.0 (Microsoft Visual C++ 14.0 is required.).

Alguém poderia me ajudar a entender porque não consigo baixar o pyarrow? Ou se existe uma forma mais simples de ler e manipular um arquivo do tipo parquet que eu não tenha pensado, agradeço.

Minha versão do Python é a 3.7.4.

Atenciosamente.
Bia.

intellij idea – Erro de compilação do Maven: Falha ao executar o objetivo org.apache.maven.plugins: maven-compiler-plugin: 3.1: compilar no projeto Maven

estou tendo esse erro ao tentar executar a compilação Marvin

“C:Program FilesJavajdk1.8.0_111binjava.exe” -Dmaven.multiModuleProjectDirectory=C:UsersUserDocumentsglobalexemplo.marvenok “-Dmaven.home=C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.3.1pluginsmavenlibmaven3” “-Dclassworlds.conf=C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.3.1pluginsmavenlibmaven3binm2.conf” “-Dmaven.ext.class.path=C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.3.1pluginsmavenlibmaven-event-listener.jar” “-javaagent:C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.3.1libidea_rt.jar=60347:C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.3.1bin” -Dfile.encoding=UTF-8 -classpath “C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.3.1pluginsmavenlibmaven3bootplexus-classworlds-2.6.0.jar;C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.3.1pluginsmavenlibmaven3bootplexus-classworlds.license” org.codehaus.classworlds.Launcher -Didea.version=2020.3.1 install
(INFO) Scanning for projects…
(INFO)
(INFO) ——————< br.com.globallabs:exemplo.marven >——————
(INFO) Building exemplo.marven 0.0.1-SNAPSHOT
(INFO) ——————————–( jar )———————————
(INFO)
(INFO) — maven-resources-plugin:3.2.0:resources (default-resources) @ exemplo.marven —
(INFO) Using ‘UTF-8’ encoding to copy filtered resources.
(INFO) Using ‘UTF-8’ encoding to copy filtered properties files.
(INFO) Copying 1 resource
(INFO) Copying 0 resource
(INFO)
(INFO) — maven-compiler-plugin:3.8.1:compile (default-compile) @ exemplo.marven —
(INFO) Changes detected – recompiling the module!
(INFO) Compiling 1 source file to C:UsersUserDocumentsglobalexemplo.marvenoktargetclasses
(INFO) ————————————————————————
(INFO) BUILD FAILURE
(INFO) ————————————————————————
(INFO) Total time: 2.888 s
(INFO) Finished at: 2021-01-17T12:49:37-03:00
(INFO) ————————————————————————
(ERROR) Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project exemplo.marven: Fatal error compiling: invalid target release: 11 -> (Help 1)
(ERROR)
(ERROR) To see the full stack trace of the errors, re-run Maven with the -e switch.
(ERROR) Re-run Maven using the -X switch to enable full debug logging.
(ERROR)
(ERROR) For more information about the errors and possible solutions, please read the following articles:
(ERROR) (Help 1) http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Process finished with exit code 1

(INFO)
(INFO) ——————< br.com.globallabs:exemplo.marven >——————
(INFO) Building exemplo.marven 0.0.1-SNAPSHOT
(INFO) ——————————–( jar )———————————
(INFO)
(INFO) — maven-resources-plugin:3.2.0:resources (default-resources) @ exemplo.marven —
(INFO) Using ‘UTF-8’ encoding to copy filtered resources.
(INFO) Using ‘UTF-8’ encoding to copy filtered properties files.
(INFO) Copying 1 resource
(INFO) Copying 0 resource
(INFO)
(INFO) — maven-compiler-plugin:3.8.1:compile (default-compile) @ exemplo.marven —
(INFO) Changes detected – recompiling the module!
(INFO) Compiling 1 source file to C:UsersUserDocumentsglobalexemplo.marvenoktargetclasses

(INFO)
(INFO) — maven-compiler-plugin:3.8.1:compile (default-compile) @ exemplo.marven —
(INFO) Changes detected – recompiling the module!
(INFO) Compiling 1 source file to C:UsersUserDocumentsglobalexemplo.marvenoktargetclasses

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project exemplo.marven: Fatal error compiling

Falha na execução do programa ‘pip.exe’

Qualquer pacote que eu tento instalar no python com o comando pip install aparece o seguinte erro:

"Falha na execução do programa ‘pip.exe’: Acesso negadoNo linha:1 caractere:1"

Alguma idéia de como resolver esse problema?

Falha de segmentação(imagem do núcleo gravada)

Primeiro código…

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main(){

FILE *teste;
char titulo(30);
char ch;
int regnum;
float preco;

teste=fopen("arqteste1.txt", "w");

do{
    printf("n Digite o título, registro, e preço:");
    scanf("%s %d %f", titulo, &regnum, &preco);
    fprintf(teste, "%s %d %0.2f", titulo, regnum, preco);
    printf("n Registrar mais um livro? (s/n) n");
    
    }while(ch=='s');
    scanf("%c", &ch);
    fclose(teste);
system("pause");

}

segundo código…

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main(){

FILE *teste;
char titulo(30);
char ch;
int regnum;
float preco;

teste=fopen("arqteste1.txt", "n");

while(fscanf(teste, "%s %d %f", titulo, &regnum, &preco) !=EOF)
printf("%s %d %f", titulo, regnum, preco);
fclose(teste);

system("pause");

}

OBS:O primeiro compila e executa tranquilo, mas a partir do segundo código ele não ler o doc feito pelo segundo…

Falha ao incorporar Material Design no projeto no Android Studio não esta aceitando o FloatingActionButton [fechada]

Segui toda a documentação mas não consegui colocar o FloatingActionButton em meu projeto Aqui estão configurações do meu projeto https://photos.app.goo.gl/mjWSzZ4StSXVC3fV6

Conexao PHP Mysql em VPS falha eventualmente

Tenho um sistema PHP local, que faz conexão com MYSQL em uma VPS na nuvem.
O sistema funciona, porém, em alguns momentos durante o dia, a conexão com o MYSQL falha por alguns segundos e depois volta ao normal.

“Warning: mysql_connect(): Uma tentativa de conexão falgou porque o componente conectado não respondeu corretamente após um período de tempo ou a conexão estabelecida falhou por que o host conectado não respondeu.”

Após atualizar a pagina algumas vezes, a conexão com o Mysql volta ao normal.
Esse erro acontece diversas vezes durante o dia.