ver serie serial puertos puerto probar listar habilitar dispositivos com1 linux serial-port virtualbox

serial - escribiendo en el puerto serie desde la línea de comandos de Linux



ver dispositivos serial linux (3)

Si desea usar códigos hexadecimales, debe agregar -e opción para habilitar la interpretación de escapes de barra invertida por eco (pero el resultado es el mismo que con echo Ctrl R Ctrl B ). Y como dijo wallyk, es probable que desee agregar -n para evitar el resultado de una nueva línea:

echo -en ''/x12/x02'' > /dev/ttyS0

También asegúrese de que /dev/ttyS0 sea ​​el puerto que desee.

Desde Windows, puedo comunicarme con un dispositivo de puerto serie usando los siguientes comandos:

mode com1: baud=9600 data=8 parity=n stop=1 copy con com1 alt+18alt+2ctrl+z

El dispositivo inicia la operación solicitada.

Cuando trato de realizar la misma operación desde un buzón de debian autónomo o desde una instancia de Debian virtualbox de la misma máquina de Windows, hasta ahora no he tenido suerte.

Aquí hay comandos de Linux equivalentes (al menos eso creo)

stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb echo ''/x12/x02'' > /dev/ttyS0

No pasa nada.

¿Puede alguien por favor dirigirme en la dirección correcta?


PANTALLA:

NOTA : por lo que yo sé, la pantalla en realidad no puede enviar hexadecimal. Para hacer eso, usa echo o printf

Estaba usando las sugerencias en esta publicación para escribir en un puerto serie, y luego usar la información de otra post para leer desde el puerto, con resultados mixtos. Descubrí que usar la pantalla es una solución "más fácil", ya que abre una sesión de terminal directamente con ese puerto. (Pongo más fácil entre comillas, porque la pantalla tiene una interfaz realmente extraña, IMO, y necesita más lecturas para resolverlo).

Puede emitir este comando para abrir una sesión de pantalla, y todo lo que escriba se enviará al puerto, más los valores de retorno se imprimirán debajo de él:

screen /dev/ttyS0 19200,cs8

(Cambie lo anterior para que se adapte a sus necesidades de velocidad, paridad, bits de parada, etc.). Me doy cuenta de que la pantalla no es la "línea de comando de Linux" como lo pide específicamente la publicación, pero creo que tiene el mismo espíritu. Además, no tiene que escribir eco y comillas todo el tiempo.

ECO:

Sigue la respuesta del droide pretoriano. SIN EMBARGO, esto no funcionó para mí hasta que también usé el comando cat < /dev/ttyS0 ( cat < /dev/ttyS0 ) mientras estaba enviando el comando echo.

PRINTF:

Descubrí que también se puede usar el comando ''% x'' de printf:

c="/x"$(printf ''%x'' 0x12) printf $c >> $SERIAL_COMM_PORT

De nuevo, para printf, inicie cat < /dev/ttyS0 antes de enviar el comando.


echo ''/x12/x02''

no se interpretará, y literalmente escribirá la cadena /x12/x02 (y anexará una nueva línea) al puerto serie especificado. En su lugar use

echo -n ^R^B

que puedes construir en la línea de comando al presionar Ctrl V Ctrl R y Ctrl V Ctrl B. O es más fácil usar un editor para escribir en un archivo de script.

El comando stty debería funcionar, a menos que otro programa esté interfiriendo. Un culpable común es gpsd que busca dispositivos GPS enchufados.