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

#6 RFOG
19/03/2007 - 16:01 | Informe spam
También puedes capturar el evento DataReceived del componente, y actuar en
consecuencia.

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.

"RFOG" escribió en el mensaje de noticias
news:%
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
#7 R1D2M3
20/03/2007 - 03:52 | Informe spam
gracias por los comentarios. Me descargué la aplicación docklight pero la
versión que está a modo de prueba es muy limitada. Voy a hacer un mix con
todos los comentarios y bueno, si tengo éxitos, será gracias a vuestro
aporte, sino, seguiré preguntando en el foro. Saludos.


"RFOG" wrote:

También puedes capturar el evento DataReceived del componente, y actuar en
consecuencia.

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.

"RFOG" escribió en el mensaje de noticias
news:%
> 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
#8 R1D2M3
28/03/2007 - 01:14 | Informe spam
Hola amigos, pude establecer conexión con el puerto com y el componente
mscomm de visual basic sin mayores problemas, el hecho es que cuando la
balanza realiza la pesada, e intento capturar el valor mediante la propiedad
input, solo obtengo una cadena de caracteres irreconocibles. No puedo
determinar que es lo que está llegando al buffer de entrada del puerto com.
¿Alguien me puede aclarar si debo realizar alguna conversión o algo por el
estilo? El puerto está configurado a 9600 baudios, 8 bit, n, 1.

Saludos.


"R1D2M3" wrote:

gracias por los comentarios. Me descargué la aplicación docklight pero la
versión que está a modo de prueba es muy limitada. Voy a hacer un mix con
todos los comentarios y bueno, si tengo éxitos, será gracias a vuestro
aporte, sino, seguiré preguntando en el foro. Saludos.


"RFOG" wrote:

> También puedes capturar el evento DataReceived del componente, y actuar en
> consecuencia.
>
> 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.
>
> "RFOG" escribió en el mensaje de noticias
> news:%
> > 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
> >>>
> >>>
> >
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida