UTNianos

Versión completa: Pregunta para electronicos: ttyACM0
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas!

Necesitaria saber si alguno conoce alguna forma de emular el dispositivo que esta en /dev/ttyACMx (en particular, ttyACM0). En internet no entiendo un pomo, todos los ejemplos que veo estan relacionados con arduino (?)

Mil gracias! =P
que necesitas hacer? Yo un par de veces probe de hacer emulacion de hardware y no pude.

Si sabes lo que te va a entrar por el TTY.
Es un puerto serial plano? y por ahi te llega una trama?

Depende de lo que tengas conectado y lo que quieras conectar es si se puede emular o no.
Algunos smartphones se conectar via ese puerto. Por eso te pregunto.

Yo lo soluciono para debugear de dos formas esto que me decis.

Opcion tumbera:
Creo un archivo con un volcado de lo que creo que me va a entrar por el puerto...
Total se trabaja con fopen, fwrite y fread. (En el caso de c++)

O... la Opcion more profesinal xD.
Con un cable rs232 cruzado, creo un emulador en otra maquina y ahi uso algun emulador de software o algun cliente 232 copado.
Clientes copados:
Termite.
No busques mas.
Adhiero. ¿Para qué lo necesitas? ¿Estás programando algo?

Acá hablan de algo similar pero para windows, mencionan termite también:
http://stackoverflow.com/questions/16057...erial-port
Pasa que es al pedo emular un puerto serial, ya sea COM en windows o un tty en linux... es algo bastante tedioso en cuanto a programacion, viola miles de reglas (niveles de proteccion, porque el puerto serial esta en una capa de las mas bajas) y la relacion dificultad/complejidad vs ganancias son feas...
Lo que se hace es justamente eso que te digo yo... si estas en linux (la mayoria conocemos el pilar que dice que en linux todo es un archivo) y estas programando en C, usa un archivo binario plano, y con condiciones de compilador haces:


#ifdef EMULATIONIMAKUNINATOR
elPuertoPija = fopen("imakuniFiles.bin","a+");
#else
elPuertoPija = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
#endif


Podes usar Tanto fopen como open

y en windows el CreateFile

Despues lo tenes que configurar para el baudrate en el que vas a laburar, sino es como tratar de poner a una rubia de 17 años enpastillada con extasis en la fiesta de egresados, a hablar con un salteño... van a manejar tiempos distintos y no se van a entender xD

Pero, lo mejor que podes hacer, es tener otra computadora y establecer una conexion real de 232, si no tenes el puerto "COM" o seriales, hay unos blecas que son adaptadores de 232toUSB.
Cita:Adhiero. ¿Para qué lo necesitas? ¿Estás programando algo?

Si, estoy programando algo =P.

Nada, basicamente en un proyecto tengo una caja china para un equipo de 4 personas. Queremos realizar tests para no tener que tener la caja china conectada siempre (ademas porque es una buena practica y bla). Sobre el puerto, tengo entendido que es un puerto serie plano.

Lo primero que pense fue "bueno, creo un archivo ttyACM0 y listo, le voy pasando los datos" pero no sabia si esa era la forma correcta de hacerlo =P.

No entiendo lo del baudrate.... es mas, pensaba que los baudios solo eran para los modems telefonicos (no me peguen =P). Tengo el numero con el que el dispositivo real funciona... pero no entiendo bien como podria "emular" eso.

Mi idea era emular el dispositivo de alguna forma, para crear un simulador de este dispositivo en particular para mostrarselo al cliente, y no tener que tocar codigo del lado de la aplicacion =P

Mil gracias por la data!
(14-10-2014 17:19)Imakuni escribió: [ -> ]
Cita:Adhiero. ¿Para qué lo necesitas? ¿Estás programando algo?

Si, estoy programando algo =P.

Nada, basicamente en un proyecto tengo una caja china para un equipo de 4 personas. Queremos realizar tests para no tener que tener la caja china conectada siempre (ademas porque es una buena practica y bla). Sobre el puerto, tengo entendido que es un puerto serie plano.

Lo primero que pense fue "bueno, creo un archivo ttyACM0 y listo, le voy pasando los datos" pero no sabia si esa era la forma correcta de hacerlo =P.

No entiendo lo del baudrate.... es mas, pensaba que los baudios solo eran para los modems telefonicos (no me peguen =P). Tengo el numero con el que el dispositivo real funciona... pero no entiendo bien como podria "emular" eso.

Mi idea era emular el dispositivo de alguna forma, para crear un simulador de este dispositivo en particular para mostrarselo al cliente, y no tener que tocar codigo del lado de la aplicacion =P

Mil gracias por la data!

En ese caso podrías agarrar un arduino y "emularlo": programar que envíe por serie determinados datos.
Para eso necesitaria un arduino por cada miembro del equipo =P.

Uno de los motivos por los cuales estamos haciendo esto, ademas de ser una buena practica, es para no tener que tener una instancia del dispositivo por maquina, si no que cualquiera pueda bajarselo y correr una simulacion.
Ima, consejo. Crea un archivo y usalo para emular la caja. Te juro que vas a ver que para debugear es casi lo mismo.

Hay ciertas diferencias, como cada cuanto la caja china te mandaria una trama (en el caso del archivo, ese tiempo lo definis vos por cada vez que lees), una de las formas de usar el puerto serial, es por medio de funciones bloqueantes de lectura... hasta que no tenes precencia de nuevos datos en el buffer interno, la funcion de lectura bloquea la ejecucion del programa (la pones en un thread independiente de lectura.).

Lo del modem, es porque, justamente el modem era serial :B

Te quiero ima jejeje, si necesitas una mano me decis. el 50% de mi laburo comprende programar sobre puertos seriales en C JAJAJA.

Entre compañeros peronistas no nos vamos a andar despreciando una mano!
Acá http://stackoverflow.com/questions/56365...or-testing sugieren lo mismo.


Pero por otro lado, buscando 'virtual serial port', encontré esto: http://justcheckingonall.wordpress.com/2...-vsp-socat
ah mira que piola lo de socat... no es mala eh! con probar no se pierde nada.

El asunto es que tenes que programar logica (un programirigilla) para agregarle al stdio del socat (o eso es lo que entendi)...

Es cuestion de poner a pesar costo beneficio xD

Lo voy a tener en cuenta para chusmearlo algun dia! :B
grande leibniz !!!
(15-10-2014 09:13)sebasthian777 escribió: [ -> ]grande leibniz !!!

(15-10-2014 06:54)sebasthian777 escribió: [ -> ]Entre compañeros peronistas no nos vamos a andar despreciando una mano!

=)

Una vez que tenés el loop de puertos serie, podés armar un script para probarlo con tu weapon of choice.
Parece demasiado grosso el socat!!!!

sebasthian777 Y gracias por tu ofecimiento =). Por ahora en realidad lo que quiero es aprender... asi que si tenes algun link piola de "puerto serie para no-electronicos" me vendria bien =P (mas que nada porque, si bien el baudrate lo tengo como un numero fijo, quisiera saber bien que joraca es).


Gracias a ambos!!!! =)
Tomalo de esta forma, que es la forma mas natural en la que lo puedo explicar (me gusta explicar en argentino), es la velocidad de transmicion, Como es un medio fisico real, necesitas que la comunicacion se realice en los diferentes nodos, bajo la misma velocidad.

Si te queres drogar tranquilo informandote sobre EL EXTENSO MUNDO del puerto serial xD
te tiro palabras claves para buscar en gugle.

8n1.
Baudrate.
bitrate.
RS232.

Con eso tenes para jugar tranquilo JAJAJA
Si solo queres usarlo
"Open Serial port in" + lenguaje_que_vas_a_usar
"Read Serial port in" + lenguaje_que_vas_a_usar
"Write Serial port in" + lenguaje_que_vas_a_usar
Sobre los baudios:
Cita:La velocidad en baudios de una señal representa el número de cambios de estado, o eventos de señalización, que la señal tiene en un segundo. Cada evento de señalización transmitido puede transportar uno o más bits. Sólo cuando cada evento de señalización transporta un solo bit coinciden la velocidad de transmisión de datos en baudios y en bits por segundo.

Además en wikipedia, la página en inglés del puerto serie es bastante completa.
URLs de referencia