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:
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.



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
Respuesta Responder a este mensaje
#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:

On Mar 19, 10:21 am, R1D2M3 wrote:
> 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.

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


Respuesta Responder a este mensaje
#3 Diego Jancic
19/03/2007 - 15:13 | Informe spam
On Mar 19, 10:43 am, R1D2M3 wrote:
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:
> On Mar 19, 10:21 am, R1D2M3 wrote:
> > 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.

> 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



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 -
Comunicaciones -> HyperTerminal



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!
Respuesta Responder a este mensaje
#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:
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:
> On Mar 19, 10:21 am, R1D2M3 wrote:
> > 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.

> 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



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 -
Comunicaciones -> HyperTerminal



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!
Respuesta Responder a este mensaje
#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:
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:

On Mar 19, 10:21 am, R1D2M3 wrote:
> 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.

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


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida