Vai al contenuto

Gestione comunicazione con telecamera IP

Home Forum Discussioni su problematiche generali Gestione comunicazione con telecamera IP

Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Autore
    Post
  • #81281
    Roberto
    Partecipante

    Chiedevo se è possibile gestire la comunicazione con una telecamera IP e salvare l’immagine di ritorno su SDCars con i Vs sistemi SlimLine.

    Mi spiego ho trovato esempi in rete con con Arduino che permettono di inviare dei comandi attraverso una connessione TCP che seguono determinate azioni come, spostare il punto se ptz ecc.. Il comando snapshot restituisce un flusso di byte che con arduino poi salvi su SDCard, vedi esempio di codice.

    char kPath[] ="/snapshot.cgi?user=NOMEUTENTE&pwd=PASSWORD";
    err = http.get(kHostname, 81, kPath);
    if (err == 0)
    {
      Serial.println("Connessione con la cam OK !");
    
      err = http.responseStatusCode();
      if (err >= 0)
      {
        Serial.print("Codice risposta http: ");
    
        // Usually you'd check that the response code is 200 or a
        // similar "success" code (200-299) before carrying on,
        // but we'll print out whatever response we get
    
        err = http.skipResponseHeaders();
        if (err >= 0)
        {
          int bodyLen = http.contentLength();
    
          file = SD.open("cam1.jpg", FILE_WRITE);
          file.seek(0);
    #81286
    Sergio Bertana
    Amministratore del forum

    In teoria quello che chiedi è fattibile, bisogna fare dei test per verificarne l’effettiva fattibilità, quindi non ti resta che armarti di buona volontà e provare. Devi utilizzare il FB HTTPClient, ecco alcune dritte riferite a programma di esempio ST_HTTPClient_ToFile.

    Per la connessione alla telecamera seguendo l’esempio di Arduino devi modificare:

    TCPClient.PeerAdd:=ADR('IP TELECAMERA'); //Peer address
    TCPClient.PeerPort:=81; //Peer port
    
    HTTPRq.RMethod:=HTTP_REQUEST#HTTP_GET; //HTTP request method
    HTTPRq.Page:=ADR('snapshot.cgi'); //Web page
    HTTPRq.Request:=ADR('user=NOMEUTENTE&pwd=PASSWORD'); //Request string

    Se la connessionew è Ok in HTTPStatus avrai di ritorno il codice 200. Nel codice Arduino non vedo la richiesta dell’immagine, quindi suppongo che alla connessione la telemera ti ritorni immediatamente un flusso dati binario che tu puoi salvare su file nello stesso modo in cui lo salva il programma di esempio.

    La parte di esempio che esegue il salvataggio dell’header ricevuto dalla telecamera (riferimenti ad HFile) la puoi eliminare. L’header ritornato lo puoi analizzare comodamente dalla console di spionaggio.

    #81304
    Roberto
    Partecipante

    grazie

    Il comando per chiedere immagine è

    snapshot.cgi
Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Devi essere connesso per rispondere a questo topic.