Necesito una ayudita para trabajar con puertos com

19/03/2007 - 14:21 por R1D2M3 | Informe spam
Hola amigos, necesito desarrollar una aplicación en C# para acceder a datos
que vienen desde una balanza (báscula). La aplicación en sí misma es muy
sencilla, la balanza toma el peso de un artículo, y yo debo capturar el valor
pesado desde mi aplicación para luego emitir un comprobante. He estado
investigando y en el framework 2.0 hay un system.io.ports. Si alguien tiene
experiencia con este namespace, por favor, ¿me pueden tirar un cable?. ¿que
debo conocer de la balanza?, es decir, ¿la balanza me entregará la
información a determinada velocidad, con determinado formato, con o sin bit
de paridad, etc, etc? ¿como detecto que la balanza está enviando datos para
intentar abrir el puerto desde mi programa y no generar una excepción de
puerto abierto.?. Bueno, la verdad es que tengo muchas dudas respecto de este
tema y si alguien me puede aclarar un poco o pasar algunos link (de ser
posible en español), les agradeceré un monton.

Preguntas similare

Leer las respuestas

#1 Diego Jancic
19/03/2007 - 14:31 | Informe spam
On Mar 19, 10:21 am, R1D2M3 wrote:
Mostrar la cita
Hola,
Usar puertos COM es bastante facil, tenes que conocer exactamente que
te esta enviando la balanza (bitrate, stop bits, paridad, etc...)
Una vez que tenes todo eso lo podes probar con el Terminal de windows
para estar seguro...
Despues de eso simplemente es crear un objeto Port (no me acuerdo si
es exactamente ese el nombre), le seteas las propiedades y le das
Open() y listo! ;)
Para ver si otra aplicacion tiene el puerto abierto, no se puede hacer
usando las librerias de .net, posiblemente exista alguna api que lo
haga... lo que podes hacer es capturar la excepcion cuando haces el
Open()
Si el puerto no esta abierto no vas a saber si la balanza te manda
datos. Te recomiendo que encapsules el port en un singleton que maneje
las comunicaciones y, por ejemplo, no haga un Open() si el mismo
objeto ya abrio el puerto.

Saludos!,
Diego
#2 R1D2M3
19/03/2007 - 14:43 | Informe spam
Gracias diego por la pronta respuesta, ¿me podrías especificar un poquito mas
como pruebo mi aplicación con el Terminal de Windows?.

Saludos.

"Diego Jancic" wrote:

Mostrar la cita
#3 Diego Jancic
19/03/2007 - 15:13 | Informe spam
On Mar 19, 10:43 am, R1D2M3 wrote:
Mostrar la cita
Hola,
Esto lo vas a poder hacer si el protocolo es sencillo, si el protocolo
es mas complicado no vas a poder hacerlo o vas a necesitar un programa
mas avanzado (si me acuerdo el nombre de uno que use te aviso).
El HyperTerminal de windows esta en inicio -> Programas -> accesorios -
Mostrar la cita
Una vez que lo abriste, seguis las instrucciones para configurarlo y
listo.
(Cuando te pregunta el nombre al principio, tiene que ser un nombre
cualquiera de la comunicacion, no puede ser COM1, COM2 o palabras
reservadas. normalmente suele ser algo como "asdasas" o "jkasdhkjha" o
"sidowj" ;) )

Saludos!
#4 RFOG
19/03/2007 - 15:45 | Informe spam
Hay por ahí una aplicación muy buena (pero de pago) de un alemán llamada
DockLight con la que se pueden probar protocolos serie. Te defines una serie
de respuestas ante lo que recibas... Toda una gozada para probar pollings y
respuestas automáticas.

http://www.docklight.de/



Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Dios no escucha vuestras palabras, salvo cuando el mismo las profiere a
traves de vuestros labios.

"Diego Jancic" escribió en el mensaje de noticias
news:
On Mar 19, 10:43 am, R1D2M3 wrote:
Mostrar la cita
Hola,
Esto lo vas a poder hacer si el protocolo es sencillo, si el protocolo
es mas complicado no vas a poder hacerlo o vas a necesitar un programa
mas avanzado (si me acuerdo el nombre de uno que use te aviso).
El HyperTerminal de windows esta en inicio -> Programas -> accesorios -
Mostrar la cita
Una vez que lo abriste, seguis las instrucciones para configurarlo y
listo.
(Cuando te pregunta el nombre al principio, tiene que ser un nombre
cualquiera de la comunicacion, no puede ser COM1, COM2 o palabras
reservadas. normalmente suele ser algo como "asdasas" o "jkasdhkjha" o
"sidowj" ;) )

Saludos!
#5 RFOG
19/03/2007 - 15:49 | Informe spam
Diego se refería a probar la balanza, ver qué está enviando esta por el
puerto serie siempre y cuando lo haga automáticamente y no necesite de un
"polling" (consulta).

Todo eso te lo tiene que suministrar el fabricante de la balanza, como ya te
han dicho.

Y una de las formas políticamente correctas de ver si hay algo en el puerto
serie es leerlo bajo un try:

int bytes = 5;
byte cksum = 0;
try
{
for (int i = 0; i < bytes; i++)
{
m_recCommand[i] = (byte)m_serialPort.ReadByte();
if (i == 1)
bytes += m_recCommand[i];
cksum += m_recCommand[i];
}
if (cksum != 0)
resultado = RFOGCommState.ChecksumError;
}
catch (System.TimeoutException)
{
resultado = RFOGCommState.Timeout;
}
return m_recCommand;


Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Dios no escucha vuestras palabras, salvo cuando el mismo las profiere a
traves de vuestros labios.

"R1D2M3" escribió en el mensaje de
noticias news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida