Hier ein Beispiel wie der Status (On/OFF) eines Sony TV´s ausgelesen werden kann.
Beispiele:
- TV ON und Schalter X wird gedrückt → Es wird das TV-Licht geschaltet
- TV ON und Schalter X wird gedrückt → Es wird das Licht auf 100% gestellt
fyi: Protokoll wird von euer Suchmaschine gefunden "Simple IP Control Protocol for BRAVIA"
Schritt-für-Schritt-Anleitung
- Pico C Programm erstellen (code unten)
- Ausgabe beliebieg weiterverarbeiten
////// Hier der PicoC Code
#define BUFF_SIZE 50
#define RD_BLOCK_SIZE 24
#define TIME_OUT_TO_READ 4000
char szBuffer[BUFF_SIZE];
char szTmpBuffer[RD_BLOCK_SIZE];
int nCnt;
int nBytesReceived = 0;
char* pTcpCmd = "*SEPOWR################\n";
STREAM* pTcpStream = NULL;
while(TRUE) {
// connect to TV
pTcpStream = stream_create("/dev/tcp/10.0.0.13/20060",0,0); // create Stream
stream_write(pTcpStream,pTcpCmd,strlen(pTcpCmd)); // write to output buffer
stream_flush(pTcpStream); // flush output buffer
sleep(500); // wait 500 millisecond
// read stream from TV
do {
nCnt = stream_read(pTcpStream, szTmpBuffer, RD_BLOCK_SIZE, TIME_OUT_TO_READ);
if (nCnt + nBytesReceived > BUFF_SIZE) {
nBytesReceived = -1;
setoutput(0,1); // Error
break; //File is too large
}
else if(nCnt > 0) {
strncpy((char*)szBuffer + nBytesReceived, szTmpBuffer, nCnt);
nBytesReceived += nCnt;
}
} while (nCnt > 0);
stream_close(pTcpStream); // close Stream
if (nBytesReceived > 0) {
if(szBuffer[22] == 48) { // "0"
setoutput(0,0);
} else if (szBuffer[22] == 49) { // "1"
setoutput(0,2);
} else {
setoutput(0,1); // Error
}
}
nBytesReceived = 0;
nCnt = 0;
sleeps(3); // wait 4 seconds
}
fyi: Protokoll wird von euer Suchmaschine gefunden "Simple IP Control Protocol for BRAVIA"
Freu mich auf euer review...