Ms-Dos - Mejorar el código en varios aspectos

 
Vista:
sin imagen de perfil
Val: 24
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Meta (14 intervenciones) el 09/08/2017 23:06:24
Hola:

Hice un código que envia datos al puerto serie. Primero he creado dos archivos de textos llamado puerto_Luz_ON.txt con el contenido Luz_ON y el otro archivo llamado puerto_Luz_OFF.txt con el contenido Luz_OFF.

1
2
3
4
5
6
7
8
9
10
11
12
13
@Echo OFF & (CHCP 1252)1>Nul
 
MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
 
CHOICE.exe /C "12" /M "Escoge una opción..."
If %ErrorLevel% EQU 1 (
copy puerto_Luz_ON.txt COM4:
)
If %ErrorLevel% EQU 2 (
copy puerto_Luz_OFF.txt COM4:
)
 
Pause & Exit

Si pulso la tecla número 1, envía al puerto serie COM4 en este caso este dato: Luz_ON.
Si pulso el 2 envía estos datos Luz_OFF.

El problema que he encontrado es que si pulso el 1 o el 2, luego se cierra el CMD. Quiero que nunca se cierre, que si pulses la tecla 1, te vuelva a prenguntar.

A parte de todo esto. Sería buena idea que el propio programa del cmd, cree los archivos de textos mensiandos arriba y su contenido en vez de crearlo yo mismo manualmente con el notepad. Si ya están creados, no lo sobreescribe, solo sabe que está ahí y el programa sigue su curso.

¿Cómo se hace?

Un cordial saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Antoni Masana (811 intervenciones) el 10/08/2017 07:03:00
Te he puesto lo de mantenerse en el menú y opción de salida sin cerrar la ventana del CMD si lo ejecutas desde la linea de comandos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
@Echo OFF
CHCP 1252 >Nul
MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
:Menu
    CLS
    echo.
    echo.
    echo.                   1.- Luz  ON
    echo.
    echo.                   2.- Luz  OFF
    echo.
    echo.                   3.- Salir
    echo.
    echo.
    echo.
    CHOICE.exe /C "123" /M "                   Escoge una opción "
    echo.
    echo.
    echo.
    If %ErrorLevel% EQU 1 (
        copy puerto_Luz_ON.txt  COM4:
        echo Puerto COM4: Luz ON
        timeout 1 >nul
        goto Menu
    )
    If %ErrorLevel% EQU 2 (
        copy puerto_Luz_OFF.txt COM4:
        echo Puerto COM4: Luz OFF
        timeout 1 >nul
        goto Menu
    )
    Pause
    Exit /B

Otra comando que puedes utilizar en lugar del CHOICE es el SET /P te pongo el mismo BAT con el cambio

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@Echo OFF
CHCP 1252 >Nul
MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
:Menu
    CLS
    echo.
    echo.
    echo.                   1.- Luz  ON
    echo.
    echo.                   2.- Luz  OFF
    echo.
    echo.                   3.- Salir
    echo.
    echo.
    echo.
     SET /P Opc=Escoge una opción [1,2,3]:
    echo.
    echo.
    echo.
    If "%Opc%" == "1" (
        copy puerto_Luz_ON.txt  COM4:
        echo Puerto COM4: Luz ON
        timeout 1 >nul
        goto Menu
    )
    If "%Opc%" == "2" (
        copy puerto_Luz_OFF.txt COM4:
        echo Puerto COM4: Luz OFF
        timeout 1 >nul
        goto Menu
    )
    If "%Opc%" == "3" (
        Pause
        Exit /B
    )
    goto Menu

Esta segunda opción no es mejor que la anterior pero conocerla no esta de más.

Y por último se puede crear con un ECHO cambiando el xxx y zzz por el texto que se debe enviar

1
2
echo xxx>Puerto_Luz_ON.txt
echo zzz>Puerto_Luz_OFF.txt
o mejor
1
2
echo xxx>COM4:
echo zzz>COM4:

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 24
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Meta (14 intervenciones) el 10/08/2017 09:03:10
Buenas:

Me funciona el código. Tengo preguntas y aún quiero mejorar algo que me he despistado.

1. ¿Qué significa CHCP 1252 >Nul? Sobre todo el 1252.

2. ¿En qué se diferencia el CHOICE y el SET /P exactamente o qué ventaja tiene una sobre la otra?

3. ¿Cuál es más recomendable usar la extensión, .bat o el .cmd y por qué?

Otra cosa para mejora el código. Vamos a suponer que los archivos txt no los tengo creado por mi cuenta, como el puerto_ON.txt y el puerto_OFF.txt. Al ejecutar el CDM funciona porque los encuentra, ya están creado a parte con el notepad y les puse su contenido, Luz_ON y Luz_OFF.

Si no hay archivos txt, CMD puede detectarlo y crearlos completamente nuevo. Cuando ya esté creado y vuelva a ejecutar el cmd otro día, no creará los mismos archivos otra vez o lo sobrescribe, sobrescribir es perder el tiempo, simplemente los detecta y sigue su programa principal lo de pulsar las tecla 1, 2 y 3.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Antoni Masana (811 intervenciones) el 10/08/2017 12:57:21
Buenas,

El CHCP en la ayuda pone "Muestra o establece el número de la página de códigos activa.".

Esto sirve o servia para cambiar la tabla de caracteres de la ventana de CMD esto afecta a las vocales acentuaras y algunas letras como la ñ o ç en este caso no creo que tenga alguna utilidad.

El CHOICE sirve para entrar un carácter, ya sea un conforme o una opción de menú.
El SET /P permite entrar cadenas de texto, por ejemplo para pedir una ruta.

¿.BAT o .CMD? Es exactamente lo mismo, la única diferencia es que .BAT existe desde el principio del MS-DOS y el .CMD nació con Windows NT

¿Por que? Quizas hay una explicación: el CMD.exe es más avanzado que el COMMAND.COM y para poder crear una diferenca entre uno y otro crearon esta extensión.

Te pongo una respuesta en un foro:

http://www.compartir-tecnologias.es/respuesta/comandos-pueden-ir-bat-o-cmd-ayuda-198302741.html


En la ayuda de Windows, la gran desconocida, tienes gran cantidad de información sobre lo que puedes usar en la línea de comandos. Busca por "referencia de la línea de comandos" o ejecuta "hh ntcmds.chm" (sin comillas).

Respecto a las extensiones, no hay ninguna diferencia en sentido técnico. Un fichero .bat se puede renombrar como .cmd y se ejecutará igual en entornos NT/2000/XP/2003 (bajo procesador de comandos Cmd.exe); igual a la inversa.

Sin embargo, la sintaxis de las órdenes de Cmd.exe está ampliada con respecto a las de su homólogo de los Windows 9x, Command.com. Puedes observar por ejemplo la compleja sintaxis del comando FOR, mucho más potente.

Suelen renombrarse a .cmd los ficheros por lotes que usan funciones ampliadas de Cmd.exe (Windows NT y su familia), las cuales no están soportadas en los Windows 9x. Así, dado que la extensión .cmd no tiene asignada por defecto ninguna asociación en estos entornos, se evita la ejecución indebida de un fichero diseñado para entornos Windows NT (y familia).

Por otra parte, otro método de control para distinguir el entorno es comprobar la variable de entorno OS. Por ejemplo:
if .%os% == .Windows_NT echo Windows NT y familia
if not .%os% == .Windows_NT echo Windows 9x

De hecho, la variable OS no está definida en Windows 9x.
Ramón Sola desde Málaga (España) /
MS MVP Windows - Shell/User -> http://mvp.support.microsoft.com
Para escribirme, convierte "yanoseashooligan" en "yahoo".

Política de Microsoft para Distribución de Software
http://www.microsoft.com/spain/tech...sfdist.asp
(A ver si queda claro lo de no abrir archivos adjuntos no
solicitados, y mucho menos si el mensaje menciona a Microsoft.)




Yo creo que es mejor hacerlo sin ficheros, es decir enviar el texto directamente al puerto.

Yo haria esto (extracto del BAT) es mejor que crear archivos:

1
2
3
4
5
6
7
If %ErrorLevel% EQU 1 (
    copy puerto_Luz_ON.txt  COM4:
    echo.Luz_ON>COM4:
    echo Puerto COM4: Luz ON
    timeout 1 >nul
    goto Menu
)

Te pongo una página que tratan el mismo problema.

https://foro.elhacker.net/scripting/msdos_y_puerto_serie-t473246.0.html;msg2136358

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 24
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Meta (14 intervenciones) el 10/08/2017 13:36:24
Hola:

Muchas gracias por la información.

He probado esta línea por todas partes y no funciona, se comporta como si el código no estuviera.
1
echo.Luz_ON>COM4:

No sirve y lo he intentado, por eso puse lo de los archivos a parte.

Otra cosa.

Ya que se puede enviar datos al puerto serie.

¿Cómo los recibe el CMD y que se muestre en pantalla?

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Antoni Masana (811 intervenciones) el 10/08/2017 17:44:20
Creía que funciona nunca lo he probado.

Otra opción:

1
2
3
4
5
6
7
8
If %ErrorLevel% EQU 1 (
    echo Luz_ON>Puerto_Luz_ON.txt
    copy Puerto_Luz_ON.txt  COM4:
    del  Puerto_Luz_ON.txt
    echo Puerto COM4: Luz ON
    timeout 1 >nul
    goto Menu
)

El BAT simplificado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Echo OFF
CHCP 1252 >Nul
MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
:Menu
    CLS
    echo.                   1.- Luz  ON
    echo.                   2.- Luz  OFF
    echo.                   3.- Salir
    echo.
    SET /P Opc=Escoge una opción [1,2,3]:
    echo.
    If "%Opc%" == "1"  SET Accion=Luz_ON
    If "%Opc%" == "2"  SET Accion=Luz_OFF
    If "%Opc%" == "3"  Pause & Exit /B
 
    echo %Accion%>Puerto.txt
    copy Puerto.txt  COM4:
    del  Puerto.txt
    echo Puerto COM4: %Accion%
    timeout 1 >nul
    goto Menu
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 24
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Meta (14 intervenciones) el 10/08/2017 18:34:06
No funciona nada. El primer código qu epsusiste si.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Antoni Masana (811 intervenciones) el 11/08/2017 05:56:07
No entiendo que es lo que no funciona.

Este es lo mismo que el ultimo pero con CHOICE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Echo OFFX
CHCP 1252 >Nul
MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
:Menu
    CLS
    echo.                   1.- Luz  ON
    echo.                   2.- Luz  OFF
    echo.                   3.- Salir
    echo.
    CHOICE.exe /C "123" /M "                   Escoge una opción "
    echo.
    If %ErrorLevel% EQU 1 SET Accion=Luz_ON
    If %ErrorLevel% EQU 2 SET Accion=Luz_OFF
    If %ErrorLevel% EQU 3 Pause & Exit /B
 
    echo %Accion%>Puerto.txt
    copy Puerto.txt  COM4:
    del  Puerto.txt
    echo Puerto COM4: %Accion%
    timeout 5 >nul
    goto Menu

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Antoni Masana (811 intervenciones) el 11/08/2017 09:36:13
Hago una rectificación.

¿por que? pues por ErrorLevel es el código de retorno de una ejecución y puede no conservarse.

Es decir ejecuto un CHOICE y el primer IF ejecuta un comando que modifica el valor del ErrorLevel, esto puede provocar que se ejecute otra condición inespedara.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Echo OFF
CHCP 1252 >Nul
MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
:Menu
    CLS
    echo.                   1.- Luz  ON
    echo.                   2.- Luz  OFF
    echo.                   3.- Salir
    echo.
    CHOICE.exe /C "123" /M "                   Escoge una opción "
    SET Opc=%ErrorLevel%
    echo.
    If %Opc% EQU 1 SET Accion=Luz_ON
    If %Opc% EQU 2 SET Accion=Luz_OFF
    If %Opc% EQU 3 Pause & Exit /B
 
    echo %Accion%>Puerto.txt
    copy Puerto.txt  COM4:
    del  Puerto.txt
    echo Puerto COM4: %Accion%
    timeout 5 >nul
    goto Menu


Otra forma de hacerlo:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@echo OFF
CHCP 1252 >Nul
MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
:Menu
    CLS
    echo.                   1.- Luz  ON
    echo.                   2.- Luz  OFF
    echo.                   3.- Salir
    echo.
    CHOICE.exe /C "123" /M "                   Escoge una opción "
    echo.
    goto Opcion_%ErrorLevel%
 
:Opcion_1
    SET Accion=Luz_ON
    goto Ejecuta
 
:Opcion_2
    SET Accion=Luz_OFF
    goto Ejecuta
 
:Opcion_3
    pause
    Exit /B
 
:Ejecuta
    echo %Accion%>Puerto.txt
    copy Puerto.txt  COM4:
    del  Puerto.txt
    echo Puerto COM4: %Accion%
    timeout 1 >nul
    goto Menu


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 24
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Meta (14 intervenciones) el 12/08/2017 10:33:56
Buenas:

No funciona nada. Tal vez porque no he creado un archivo txt. La idea es, que si pulso Puerto.cmd de los dos códigos que haz escrito arriba, cree dos archivos, por ejemplo:

Puerto_ON.txt cuyo contenido también debe crearse y tiene estos caractéres en su interior, Luz_ON.
También creará otro archivo llamado Puerto_OFF.txt y dentro contiene Luz_OFF.

Si tu código se peude crear el archivo, lo hará rápido o lo borra rápido y no da tiempo de que envie los datos al puerto serie. Solo lo creo, no lo se.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Antoni Masana (811 intervenciones) el 14/08/2017 06:52:33
Puedes hacer una cosa para que pueda ver que pasa:

- Cambia en la primera línea el @ECHO OFF por el @ECHO ON.
- Abre una ventana de comandos y ejecuta la siguiente instrucción.

1
Puerto.cmd >Puerto.txt 2>&1

Ahora no vas a ver en pantalla el menú, pulsa 1 y espera cinco segundos, pulsa el 2 y espera cinco segundos y pulsa el 3 para salir, si prefieres 2 - 1 - 3 también está bien.

Ahora tendrás dos ficheros, el Puerto.cmd y el Puerto.txt, enviamelos y los revisó habar que esta fallando.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 24
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Meta (14 intervenciones) el 14/08/2017 12:41:56
Hola:

Al ejecutar si se crea el fichero Puerto.txt. Sin pulsar ninguna tecla 1, 2 ó 3 en su interior aparece esto.

Puerto.txt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>CHCP 1252  1>Nul
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
Nombre de dispositivo incorrecto: COM4
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>CLS

C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.                   1.- Luz  ON
                   1.- Luz  ON
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.                   2.- Luz  OFF
                   2.- Luz  OFF
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.                   3.- Salir
                   3.- Salir
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.
 
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>CHOICE.exe /C "123" /M "                   Escoge una opción "
Escoge una opción [1,2,3]?

Pulso la tecla 1, en el CMD no muestra nada y en el Puerto.txt como que se ha aumentado más información y pone esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>CHCP 1252  1>Nul
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
Nombre de dispositivo incorrecto: COM4
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>CLS

C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.                   1.- Luz  ON
                   1.- Luz  ON
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.                   2.- Luz  OFF
                   2.- Luz  OFF
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.                   3.- Salir
                   3.- Salir
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.
 
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>CHOICE.exe /C "123" /M "                   Escoge una opción "
Escoge una opción [1,2,3]?1
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.
 
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>goto Opcion_1
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>SET Accion=Luz_ON
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>goto Ejecuta
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo Luz_ON 1>Puerto.txt
El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso.
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>copy Puerto.txt  COM4:
"COM4:" no es un dispositivo identificable.
El sistema no puede encontrar el archivo especificado.
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>del  Puerto.txt
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa\Puerto.txt
El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso.
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo Puerto COM4: Luz_ON
Puerto COM4: Luz_ON
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>timeout 1  1>nul
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>goto Menu
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>CLS

C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.                   1.- Luz  ON
                   1.- Luz  ON
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.                   2.- Luz  OFF
                   2.- Luz  OFF
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.                   3.- Salir
                   3.- Salir
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo.
 
 
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>CHOICE.exe /C "123" /M "                   Escoge una opción "
Escoge una opción [1,2,3]?


Nunca pone algo en el CMD, se queda coo bloeado, pero si actúa el archivo Puerto.txt.

¿Alguna otra cosa?

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Antoni Masana (811 intervenciones) el 14/08/2017 16:28:23
Veo dos problemas uno puede ser cusa de mi indicación. Si ejecutaste esto

1
Puerto.cmd >Puerto.txt 2>&1

Es normal que salga este error:

1
2
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>echo Luz_ON 1>Puerto.txt
El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso.


Lo que es más raro es que no reconozca el COM4:, de hecho cuando lo configuras ya da un error

1
2
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
Nombre de dispositivo incorrecto: COM4

Y al copiar no lo reconoce:

1
2
3
C:\Users\Meta\aaaaaaaaaaaaaaaaaaaaaaaaaa>copy Puerto.txt  COM4:
"COM4:" no es un dispositivo identificable.
El sistema no puede encontrar el archivo especificado.

Lo primero de todo saber si esta línea funciona y que puertos tienes:

1
MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1

No estoy muy familiarizado con ello pero creo para usar estos puertos necesitas una salida SERIE y el primer puerto disponible es el COM1

Salidos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 24
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Meta (14 intervenciones) el 15/08/2017 15:14:57
Hola:

Usando el archivo Puerto.cmd en suinterior puse ahora mismo esto:
1
2
3
4
5
6
7
8
9
@echo OFF
 
Title Probando COM4.
 
CHCP 1252 >Nul
 
MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
 
Pause

Sí funciona el:
1
MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
bbbbbbbbbbbbbbb5-1766257

Probando un código de atrás con estos dos archivos externos.
bbbbbbbbbbbbbbb6-1766258

Con este código si funciona, lo habíamos probado:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@Echo OFF
 
CHCP 1252 >Nul
 
MODE.com COM4 BAUD=115200 PARITY=n DATA=8 STOP=1
 
:Menu
    CLS
    echo.
    echo.
    echo.                   1.- Luz  ON
    echo.
    echo.                   2.- Luz  OFF
    echo.
    echo.                   3.- Salir
    echo.
    echo.
    echo.
     SET /P Opc=Escoge una opción [1,2,3]:
    echo.
    echo.
    echo.
    If "%Opc%" == "1" (
        copy puerto_Luz_ON.txt  COM4:
        echo Puerto COM4: Luz ON
        timeout 1 >nul
        goto Menu
    )
 
    If "%Opc%" == "2" (
        copy puerto_Luz_OFF.txt COM4:
        echo Puerto COM4: Luz OFF
        timeout 1 >nul
        goto Menu
    )
 
    If "%Opc%" == "3" (
        Pause
        Exit /B
    )
    goto Menu

Solo necesita desde el momento que pulses una tecla el número 1, 2 o 3 para que haga una acción.

Lo que tengo detrás del puerto serie y conectado al COM4 es una placa de Arduino. He probado el mismo funcionamiento en C#, C++ y VB .net y funciona, he subido este vídeo para que sepas de que va.

Aquí subí un tutorial del Visual Studio .net.

Quiero hacer el mismo comportamiento pero con el CMD de Windows.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 24
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Mejorar el código en varios aspectos

Publicado por Meta (14 intervenciones) el 18/08/2017 16:46:21
Hola:

No será mejor hacerlo así:

1.
Al ejecutar el archivo .cmd comprueba si están los dos archivos Puerto_ON.txt y Puerto_OFF.txt.
2. Si faltan algunos de los archivos o los dos, los crea al lado del archivo principal de .cmd.
3. Si comprueba que no falta ninguno, el programa principal se que en el menú esperando las órdenes de las teclas 1, 2 y 3.

¿Alguna sugerencia?

Un cordial saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar