Comandos LG RS232 que funcionan parcialmente

0

Tengo un televisor LG (32SL8000), que tiene un puerto de control RS232. Intenté controlarlo con un Arduino y un TTL a Serial Converter (MAX3232). Busqué los comandos del manual.

Serial.begin(9600);
Serial.println("ka 0 01"); //Turns on TV
Serial.println("ka 0 00"); //Turns off TV

Encender el televisor funciona perfectamente, pero cualquier otro comando no funciona.

No sé cómo solucionar este problema.

Gracias por tu ayuda

El Manual

    
pregunta Chaos_

3 respuestas

2

Tengo bastante experiencia en el control de pantallas de LG en serie, y aunque no he visto nada como lo que informas, puedo hacer algunas observaciones y conjeturas que pueden ayudar:

  1. Mi código de control de LG probablemente ya se ha ejecutado contra docenas de modelos, y creo que nunca me he topado con uno que se haya comportado como usted dice. Por otra parte, no creo que todavía hayamos encontrado un modelo SL.

    (Solo las dos letras en medio del código del modelo parecen importar cuando se trata de compatibilidad, más una "C" opcional al final.)

  2. La mayoría de los LG solo aceptan comandos de encendido mientras están apagados, por lo que no puedes distinguir "apagado" de "incendiado", se cayó por la borda, y actualmente en el fondo del océano siendo masticado por algo de una película HR Giger . " Estas son las pantallas que no son C, como regla general. "C" significa "comercial", y esto distingue los modelos destinados a ser utilizados con sistemas de control automático.

    Los modelos "C" a menudo aceptan al menos los comandos de "estado de encendido" mientras están apagados, por lo que puede probarlos antes de enviar cualquier comando de cambio de estado.

  3. Después de encender la pantalla, tienes que esperar su tiempo de calentamiento de 12 segundos antes de poder enviar cualquier otra cosa. Algunos LG responden con la respuesta "OK" inmediatamente después de recibir el comando, lo que deja el tiempo de espera en su programa, mientras que otros no dan el "OK" hasta que realmente estén listos para aceptar otro comando. (Los primeros son más comunes.)

  4. No es por casualidad conectar la placa de Android al puerto USB para poder, ¿verdad? Si es así, puede ser suficiente para activar esta restricción, que se encuentra en la página 112 del manual vinculado:

      

    "Durante las operaciones de USB como Dvix o EMF, todos los comandos, excepto Power (ka) y Key (mc), no se ejecutan y se tratan como NG".

Solo le das las dos cadenas de comando con las que has tenido éxito. ¿Con qué cadenas de comandos fallas, específicamente?

¿Ha intentado todos los comandos listados, o solo ha fallado con algunos y se ha rendido?

    
respondido por el Warren Young
2

Primero - El manual especifica un retorno de carro después de cada comando:

  
  • [Comando 1]: primer comando para controlar el televisor.
  •   

(j, k, m o x)

     
  • [Comando 2]: Segundo comando para controlar el televisor.

  •   
  • [Establecer ID]: puede ajustar el ID de configuración para elegir

  •   

número de ID del monitor deseado en la opción

     

menú. El rango de ajuste es 1 ~ 99.

     

Al seleccionar Establecer ID ‘0’, cada conexión   El conjunto de ed está controlado.

     

Establecer ID se indica como decimal (1 ~ 99) en

     menú

y como hexadecimal decimal (0x0 ~ 0x63)

     

en el protocolo de transmisión / recepción.

     
  • [DATOS]: para transmitir datos de comandos.
  •   

Transmitir datos ‘FF’ para leer el estado de la compa-   mand.

     
  • [Cr]: Retorno de carro
  •   

Código ASCII '0x0D'

     
  • []: código ASCII ‘espacio (0x20)’
  •   

La función Serial.println finaliza la línea con un retorno de carro (0x0D) y un avance de línea (0x0A). Intente usar Serial.print en su lugar, y suministre manualmente los extremos de la línea. El LF es basura en el instrumento y es probable que invalide los comandos subsiguientes.

Recomendaría el uso de una computadora y un terminal serial al depurar esto. Desea asegurarse de que comprende bien el conjunto de instrucciones de comunicación, antes de intentar escribir su propio programa. Si fuera yo, comenzaría con una computadora y TeraTerm, o algo similar.

Segundo - ¿Está tu cable cruzado? Asegúrese de que su cable tenga el pinout correcto para un cruce.

Tercero - Establecer ID 0 es un catch-all, pero como solo tiene una pantalla conectada a su puerto serie, puede ser más lógico apuntar específicamente su ID . De esta manera, los comandos de consulta serán tratados adecuadamente. Vaya al menú de opciones de su televisor y asigne una ID (probablemente su valor predeterminado sea 1, lo que estaría bien).

Cuarto - Dado que el campo Establecer ID es una representación hexadecimal, puede estar esperando un ancho de campo establecido de 2. Intenta enviar 00 en lugar de 0 - O mejor aún (según la sugerencia anterior), 01 o cualquiera que sea su ID de conjunto.

Ej .: Encendido: ka 01 01[CR] y Apagado: ka 01 00[CR]

Quinto - asegúrate de leer las respuestas de ACK a todo. Por ejemplo, si envía ka 01 01[CR] , el televisor responderá con a 01 OK01x en caso de éxito.

Para consultar el estado de energía, enviaría una solicitud de lectura, como: ka 01 ff[CR] , a lo que el televisor debe responder exactamente como arriba de a 01 OK01x para indicar que el televisor con ID 01 está ENCENDIDO.

Listado de Código

Power ON                    : ka 01 01[CR]
Power OFF                   : ka 01 00[CR]
Energy Saving - OFF         : jq 01 00[CR]
Energy Saving - Minimum     : jq 01 01[CR]
Energy Saving - Medium      : jq 01 02[CR]
Energy Saving - Maximum     : jq 01 03[CR]
Energy Saving - Auto        : jq 01 04[CR]
Energy Saving - Screen Off  : jq 01 05[CR] 
Input Select  - DTV Antenna : xb 01 00[CR]
Input Select  - DTV Cable   : xb 01 01[CR]
Input Select  - Analog Ant. : xb 01 10[CR]
Input Select  - AV or AV1   : xb 01 20[CR]
Input Select  - AV2         : xb 01 21[CR]
Input Select  - Component1  : xb 01 40[CR] 
Input Select  - Component2  : xb 01 41[CR]
Input Select  - RGB-PC      : xb 01 60[CR]
Input Select  - HDMI1       : xb 01 90[CR]
Input Select  - HDMI2       : xb 01 91[CR]
Input Select  - HDMI3       : xb 01 92[CR]
Input Select  - HDMI4       : xb 01 93[CR]
Aspect Ratio - 4:3          : kc 01 01[CR] 
Aspect Ratio - 16:9         : kc 01 02[CR]
Aspect Ratio - Zoom         : kc 01 04[CR]
Aspect Ratio - Set by Prog  : kc 01 06[CR]
Aspect Ratio - Just Scan    : kc 01 09[CR]
Aspect Ratio - Cinema Zoom1 : kc 01 10[CR]
Screen Mute - OFF           : kd 01 00[CR]
Screen Mute - ON            : kd 01 01[CR]
Video Out Mute on           : kd 01 10[CR]
Volume - Mute ON            : ke 01 00[CR]
Volume - Mute OFF           : ke 01 01[CR]
Volume - Relative UP        : mc 01 02[CR]
Volume - Relative DOWN      : mc 01 03[CR]
Volume Control [00-64 Hex]  : kf 01 00[CR]
Picture - Contrast  [Adjust 00 - 64 Hex]    : kg 01 00[CR]
Picture - Brightness [Adjust 00 - 64 Hex]   : kh 01 00[CR]
Picture - Color  [Adjust 00 - 64 Hex]       : ki 01 00[CR]
Picture - Contrast [Adjust 00 - 64 Hex]             : kk 01 00[CR]
Picture - Color Temperature  [Adjust 00 - 64 Hex]   : xu 01 00[CR]
OSD (On Screen Display) - OFF                       : kl 01 00[CR]
OSD (On Screen Display) - ON                        : kl 01 01[CR]
Remote Control Lock - OFF                           : km 01 01[CR]
Remote Control Lock - ON                            : km 01 00[CR]
Audio - Treble Adjust  [Adjust 00 - 64 Hex]         : kr 01 00[CR]
Audio - Bass Adjust  [Adjust 00 - 64 Hex]           : ks 01 00[CR]
Audio - Balance Adjust [Adjust 00 - 64 Hex]         : kt 01 00[CR]
    
respondido por el Blair Fonville
0

Según el manual, establezca el valor de ID para el monitor (el valor predeterminado es 0), use la ID en la cadena de comando que se envía al televisor.

Formato de comando

[Command1][Command2][ ][Set ID][ ][Data][Cr]

Cada comando se confirma, así que lea y haga una confirmación del tiempo que el comando está bien o tiene un error

el comando que está utilizando no tiene un carácter CR al final, intente usarlo como se indica a continuación

Serial.println("ka 0 01\r"); //Turns on TV
Serial.println("ka 0 00\r"); //Turns off TV

Nota: intente capturar los datos de retorno para verificar que el comando esté bien o tenga errores

    
respondido por el Raj

Lea otras preguntas en las etiquetas