Muchas Gracias..! Si, debo usar el puerto serie porque es más rápido y es configurable con respecto a interrupciones por lo que tengo entendido... Y es compatible, pero no logro encontrar mucha información. Solo esto que me pierde... Encontré algo que puede serme muy útil pero estoy realmente perdido.. je son muchas cosas juntas...!
<br><br>Si alguien tiene una idea de por donde puedo empezar va a ser
bienvenida..! y si a alguien le sirve, acá está (no tenía sentido poner
todo el codigo fuente entero ya que es largo, esta es solo una parte)<br><br>lo que encontré es esto que corresponde al programa winlirc de código libre (GNU)<br><br><div style="margin-left: 40px;">/* <br> * This file is part of the WinLIRC package, which was derived from
<br> * LIRC (Linux Infrared Remote Control) 0.5.4pre9.<br> *<br> * This program is free software; you can redistribute it and/or modify<br> * it under the terms of the GNU General Public License as published<br> * by the Free Software Foundation; either version 2 of the License, or
<br> * (at your option) any later version.<br> *<br> * This program is distributed in the hope that it will be useful,<br> * but WITHOUT ANY WARRANTY; without even the implied warranty of<br> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
<br> * See the GNU General Public License for more details.<br> *<br> * You should have received a copy of the GNU General Public License<br> * along with this program; if not, write to the Free Software<br> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
<br> *<br> * Copyright (C) 1999 Jim Paris <<a href="mailto:jim@jtan.com">jim@jtan.com</a>><br> * Modifications Copyright (C) 2000 Scott Baily <<a href="mailto:baily@uiuc.edu">baily@uiuc.edu</a>><br> * RX device, some other stuff Copyright (C) 2002 Alexander Nesterovsky <
<a href="mailto:Nsky@users.sourceforge.net">Nsky@users.sourceforge.net</a>><br> */<br><br>#include "irdriver.h"<br>#include "irconfig.h"<br>#include "config.h"<br>#include "remote.h"
<br>#include "drvdlg.h"<br>#include "server.h"<br>    <br>unsigned int IRThread(void *drv) {((CIRDriver *)drv)->ThreadProc();return 0;}<br>unsigned int DaemonThread(void *drv) {((CIRDriver *)drv)->DaemonThreadProc();return 0;}
<br><br>CIRDriver::CIRDriver()<br>{<br>    hPort=NULL;<br>    ov.hEvent=NULL;<br>    hDataReadyEvent=CreateEvent(NULL,FALSE,FALSE,NULL);<br>}<br><br>CIRDriver::~CIRDriver()<br>{<br>    DEBUG("~CIRDriver\n");<br>
    ResetPort();<br>    KillThread(&IRThreadHandle,&IRThreadEvent);<br>    KillThread(&DaemonThreadHandle,&DaemonThreadEvent);<br>    if(hDataReadyEvent) CloseHandle(hDataReadyEvent);<br>}<br><br>bool CIRDriver::InitPort(CIRConfig *cfg, bool daemonize)
<br>{<br>    struct ir_remote *tmp;<br>    if(cfg==NULL) return false;<br><br>    DEBUG("Initializing port...\n");<br><br>    KillThread(&IRThreadHandle,&IRThreadEvent);<br>    KillThread(&DaemonThreadHandle,&DaemonThreadEvent);
<br>    cbuf_start=cbuf_end=0;<br>    <br>    if(ov.hEvent)<br>    {<br>        SetEvent(ov.hEvent);    // singal it<br>        Sleep(100);                // wait a tiny bit<br>        CloseHandle(ov.hEvent);    // and close it
<br>        ov.hEvent=NULL;<br>    }<br><br>    if(hPort)<br>    {<br>        SetCommMask(hPort,0);    // stop any waiting on the port<br>        Sleep(100);                // wait a tiny bit<br>        CloseHandle(hPort);        // and close it
<br>        hPort=NULL;<br>    }<br><br>    if((hPort=CreateFile(<br>        cfg->port,GENERIC_READ | GENERIC_WRITE,<br>        0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0))==INVALID_HANDLE_VALUE)<br>    {<br>        hPort=NULL;
<br>        return false;<br>    }<br><br>    DCB dcb;<br>    if(!GetCommState(hPort,&dcb))<br>    {<br>        CloseHandle(hPort);<br>        hPort=NULL;<br>        return false;<br>    }<br>    if (cfg->animax) dcb.fDtrControl=DTR_CONTROL_ENABLE
; //set DTR high, the animax receiver needs this for power<br>    else<br>        dcb.fDtrControl=DTR_CONTROL_DISABLE; // set the transmit LED to off initially.<br>    dcb.fRtsControl=RTS_CONTROL_ENABLE;<br><br>    dcb.BaudRate
 = cfg->speed;                    <br>    devicetype = cfg->devicetype;                <br>    virtpulse = cfg->virtpulse;                    <br><br>    if(!SetCommState(hPort,&dcb))<br>    {<br>        CloseHandle(hPort);
<br>        hPort=NULL;<br>        DEBUG("SetCommState failed.\n");<br>        return false;<br>    }<br>    tmp=global_remotes;<br>    while (tmp!=NULL && tmp->next!=NULL) {<br>        if (!(tmp->flags&SPECIAL_TRANSMITTER)) tmp->transmitter=cfg->transmittertype;
<br>        tmp=tmp->next;<br>    }<br>    SetTransmitPort(hPort,cfg->transmittertype);<br><br>    if(cfg->sense==-1)<br>    {<br>        /* Wait for receiver to settle (since we just powered it on) */<br>        Sleep(1000);
<br>        DWORD state;<br>        if(!GetCommModemStatus(hPort,&state))<br>        {<br>            CloseHandle(hPort);<br>            hPort=NULL;<br>            return false;<br>        }<br>        sense=(state & MS_RLSD_ON) ? 1 : 0;
<br>        DEBUG("Sense set to %d\n",sense);<br>    }<br>    else<br>        sense=cfg->sense;<br><br>    if((ov.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL))==NULL)<br>    {<br>        CloseHandle(hPort);<br>        hPort=NULL;
<br>        return false;<br>    }<br><br>    /* Start the thread */<br>    /* THREAD_PRIORITY_TIME_CRITICAL combined with the REALTIME_PRIORITY_CLASS */<br>    /* of this program results in the highest priority (26 out of 31) */
<br>    if((IRThreadHandle=<br>        AfxBeginThread(IRThread,(void *)this,THREAD_PRIORITY_TIME_CRITICAL))==NULL)<br>    {<br>        CloseHandle(hPort);<br>        CloseHandle(ov.hEvent);<br>        hPort=ov.hEvent=NULL
;<br>        return false;<br>    }<br><br>    if(daemonize)<br>    {<br><br>        /* Start the thread */<br>        /* THREAD_PRIORITY_IDLE combined with the REALTIME_PRIORITY_CLASS */<br>        /* of this program still results in a really high priority. (16 out of 31) */
<br>        if((DaemonThreadHandle=<br>            AfxBeginThread(DaemonThread,(void *)this,THREAD_PRIORITY_IDLE))==NULL)<br>        {<br>            KillThread(&IRThreadHandle,&IRThreadEvent);<br>            CloseHandle(hPort);
<br>            CloseHandle(ov.hEvent);<br>            hPort=ov.hEvent=NULL;<br>            return false;<br>        }<br>    }<br><br>    DEBUG("Port initialized.\n");<br>    <br>    return true;<br>}<br><br>HANDLE CIRDriver::GetCommPort()
<br>{<br>    return(hPort);<br>}<br>void CIRDriver::ResetPort(void)<br>{<br>    DEBUG("Resetting port\n");<br>    <br>    KillThread(&IRThreadHandle,&IRThreadEvent);<br>    KillThread(&DaemonThreadHandle,&DaemonThreadEvent);
<br>    <br>    if(ov.hEvent) {<br>        CloseHandle(ov.hEvent);<br>        ov.hEvent=NULL;<br>    }<br>    if(hPort) {<br>        CloseHandle(hPort);<br>        hPort=NULL;<br>    }<br>}<br><br>void CIRDriver::ThreadProc(void)
<br>{<br>    /* Virtually no error checking is done here, because */<br>    /* it's pretty safe to assume that everything works, */<br>    /* and we have nowhere to report errors anyway.      */<br><br>    /* We use two timers in case the high resolution doesn't   */
<br>    /* last too long before wrapping around (is that true?     */<br>    /* is it really only a 32 bit timer or a true 64 bit one?) */<br><br>    __int64 hr_time, hr_lasttime, hr_freq;    // high-resolution<br>    time_t lr_time, lr_lasttime;            // low-resolution
<br><br>    DWORD status;<br>    GetCommModemStatus(hPort, &status);<br>    int prev=(status & MS_RLSD_ON) ? 1 : 0;<br><br>    /* Initialize timer stuff */<br>    QueryPerformanceFrequency((LARGE_INTEGER *)&hr_freq);
<br><br>    /* Get time (both LR and HR) */<br>    time(&lr_lasttime);<br>    QueryPerformanceCounter((LARGE_INTEGER *)&hr_lasttime);<br>    <br>    HANDLE events[2]={ov.hEvent,IRThreadEvent};<br><br>    for(;;)<br>
    {<br>        /* We want to be notified of DCD or RX changes */<br>        if(SetCommMask(hPort, devicetype ? EV_RLSD : EV_RXCHAR)==0)    <br>        {<br>            DEBUG("SetCommMask returned zero, error=%d\n",GetLastError());
<br>        }<br>        /* Reset the event */<br>        ResetEvent(ov.hEvent);<br>        /* Start waiting for the event */<br>        DWORD event;<br>        if(WaitCommEvent(hPort,&event,&ov)==0 && GetLastError()!=997)
<br>        {<br>            DEBUG("WaitCommEvent error: %d\n",GetLastError());<br>        }<br><br>        /* Wait for the event to get triggered */<br>        int res=WaitForMultipleObjects(2,events,FALSE,INFINITE);
<br>        <br>        /* Get time (both LR and HR) */<br>        QueryPerformanceCounter((LARGE_INTEGER *)&hr_time);<br>        time(&lr_time);<br>        <br>        if(res==WAIT_FAILED)<br>        {<br>            DEBUG("Wait failed.\n");
<br>            continue;<br>        }<br>        <br>        if(res==(WAIT_OBJECT_0+1))<br>        {<br>            DEBUG("IRThread terminating\n");<br>            AfxEndThread(0);<br>            return;<br>        }
<br>        <br>        if(res!=WAIT_OBJECT_0)<br>        {<br>            DEBUG("Wrong object\n");<br>            continue;<br>        }<br><br>        int dcd;<br>        if (devicetype) {                <br>            GetCommModemStatus(hPort,&status);
<br><br>            dcd = (status & MS_RLSD_ON) ? 1 : 0;<br><br>            if(dcd==prev)<br>            {<br>                /* Nothing changed?! */<br>                /* Continue without changing time */<br>                continue;
<br>            }<br><br>            prev=dcd;<br>        }<br><br>        int deltv=lr_time-lr_lasttime;<br>        if (devicetype && (deltv>15)) {        <br>            /* More than 15 seconds passed */<br>            deltv=0xFFFFFF;
<br>            if(!(dcd^sense))<br>            {<br>                /* sense had to be wrong */<br>                sense=sense?0:1;<br>                DEBUG("sense was wrong!\n");<br>            }<br>        } else
<br>            deltv=(int)(((hr_time-hr_lasttime)*1000000) / hr_freq);<br>    <br>        lr_lasttime=lr_time;<br>        hr_lasttime=hr_time;<br>        <br>        int data;                <br>        if (devicetype) {        
<br>            data = (dcd^sense) ? (deltv) : (deltv | 0x1000000);    <br><br>            if(SetData(data))<br>                SetEvent(hDataReadyEvent);<br>        } else {<br>            data = deltv;    <br><br>            SetData(data-100);                        
<br>            if(SetData(virtpulse | 0x1000000))        <br>                SetEvent(hDataReadyEvent);            <br>            PurgeComm(hPort,PURGE_RXCLEAR);            <br>        }<br>    }<br>}<br><br>bool CIRDriver::SetData(unsigned long int src)
<br>{<br>    int diff=cbuf_start-cbuf_end;<br>    if(cbuf_end>cbuf_start) diff+=CBUF_LEN;<br>    if(diff==1)<br>    {<br>        DEBUG("buffer full\n");<br>        return false;<br>    }<br><br>    cbuf[cbuf_end++]=src;
<br>    if(cbuf_end>=CBUF_LEN) cbuf_end=0;<br><br>    return true;<br>}<br><br>bool CIRDriver::GetData(unsigned long int *dest)<br>{<br>    if(cbuf_end==cbuf_start)<br>        return false;<br><br>    *dest=cbuf[cbuf_start++];
<br>    if(cbuf_start>=CBUF_LEN) cbuf_start=0;<br>    return true;<br>}<br><br>unsigned long CIRDriver::readdata(unsigned long maxusec, HANDLE ThreadEvent)<br>{<br>    unsigned long int x=0;<br><br>    HANDLE events[2]={hDataReadyEvent,ThreadEvent};
<br>    int evt;<br>    if(ThreadEvent==NULL) evt=1;<br>    else evt=2;<br>        <br>    if(GetData(&x)==false)<br>    {<br>        ResetEvent(hDataReadyEvent);<br>        int res;<br>        if(maxusec)<br>            res=WaitForMultipleObjects(evt,events,FALSE,(maxusec+500)/1000);
<br>        else<br>            res=WaitForMultipleObjects(evt,events,FALSE,INFINITE);<br>        if(res==(WAIT_OBJECT_0+1))<br>        {<br>            DEBUG("Unknown thread terminating (readdata)\n");<br>            AfxEndThread(0);
<br>            return 0;<br>        }<br>        GetData(&x);<br>    }<br><br>    return x;<br>}<br><br>void CIRDriver::DaemonThreadProc(void)<br>{<br>    /* Accept client connections,        */<br>    /* and watch the data buffer.        */
<br>    /* When data comes in, decode it    */<br>    /* and send the result to clients.    */<br>    unsigned long data;<br>    char *message;<br><br>        Cwinlirc *app = (Cwinlirc *)AfxGetApp();<br><br>    for(;;)<br>
    {<br>        if(GetData(&data)==false)<br>        data=readdata(0,DaemonThreadEvent);<br>        use_ir_hardware=true;<br>        message=decode_command(data);<br>        if(message!=NULL)<br>        {<br>            //DEBUG("decode_command successful\n");
<br>            drvdlg->GoGreen();<br>            app->server->send(message);<br>        }<br>        else<br>        {<br>            //DEBUG("decode_command failed\n");<br>        }<br>    }<br>}<br><br>
<br></div>Si alguien tiene una idea de por donde puedo empezar va a ser bienvenida..! y si a alguien le sirve, acá está (no tenía sentido poner todo el codigo fuente entero ya que es largo, esta es solo una parte)<br>Un saludo a todos y muchas gracias por los aportes!
<br><br><div><span class="gmail_quote">El día 27/01/07, <b class="gmail_sendername">Juan Antonio</b> <<a href="mailto:jalr43@hotmail.com">jalr43@hotmail.com</a>> escribió:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">






<div bgcolor="#ffffff">
<div>
<div><font face="Arial" size="2">Hola,</font></div>
<div><font face="Arial" size="2"></font> </div>
<div><font face="Arial" size="2">gracias Steven por la aclaración y Diego de nada, 
aquí estamos todos para ayudarnos.</font></div>
<div><font face="Arial" size="2"></font> </div>
<div><font face="Arial" size="2">Diego yo en tu caso vería la opción de usar el 
puerto paralelo en vez del serie. Conectaría la línea en la que se van a 
producir los cambios en el pin de datos menos significativo (LSB). Luego 
deberías establecer la frecuencia con la que quieres muestrear la la línea, es 
decir leer los datos del puerto a partir del conocimiento de tu dispositivo, 
porque supongo que puedes estimar una frecuencia de muestreo para no cometer 
mucho error en las medidas de la anchura de los pulsos. Ojo en un puerto serie 
que sigue la norma RS-232 la tensiones oscilan entre +15 y -15V, el  puerto 
pararalelo trabaja con 0 y 5V, aunque lo mismo si tu dispositivo no transmite 
con ningún protocolo tampoco sigue los niveles de tensión del 
RS-232.</font></div>
<div><font face="Arial" size="2"></font> </div>
<div><font face="Arial" size="2">Para hacerlo con puerto serie, para que el PC se 
entere que le quieres enviar datos la señal tiene que pasar de '1' (entre -3 y 
-15V) a '0' (de 3 a 15V) que es el bit de inicio o los que hayan, para decirle 
que el dato termina se necesita enviar los bits de parada (paso de '0' a '1') 
establecidos al configurar la comunicación. Entonces claro se podría usar una 
función para ver si hay datos en el puerto, mientrás no hayan la señal ha 
permanecido a '1' por lo que la puedes contar el tiempo a partir de la velocidad 
de transmisión. Mi duda es la señal cambia de '1' a '0', la UART empieza a 
muestrear, pero si la señal no vuelve a pasar de '0' a '1' en el tiempo 
configurado del puerto (que se obtiene a partir de la velocidad) para indicar 
los bits de parada después de los bits de datos, sobrescribirá los datos 
anteriores o ocurrirá algún error.</font></div>
<div> </div>
<div><font face="Arial" size="2">Lo mismo también puedes usar alguna de las líneas 
de control como mencionastes en el primer mensaje, navega, busca su significado, 
si son compatibles en voltios con tu entrada y con qué función puedes 
leerlas.</font></div>
<div> </div>
<div><font face="Arial" size="2">Espero que te sirva.</font></div>
<div> </div>
<div><font face="Arial" size="2">Un saludo,</font></div>
<div><font face="Arial" size="2">Juan Antonio.</font> </div></div>
<blockquote style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;"><span class="q">
  <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">----- Original Message ----- </div>
  <div style="background: rgb(228, 228, 228) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
<b>From:</b> 
  <a title="diegogeid@gmail.com" href="mailto:diegogeid@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">D1e6o!</a> 
  </div>
  <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>To:</b> <a title="cconclase@listas.conclase.net" href="mailto:cconclase@listas.conclase.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
Lista de correo sobre C y C++</a> 
  </div></span><div><span class="e" id="q_110639f0f9b61852_2">
  <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>Sent:</b> Friday, January 26, 2007 4:52 
  AM</div>
  <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>Subject:</b> Re: [C con Clase] Ayuda Puerto 
  Serial</div>
  <div><br></div>Antes que nada siempre agradezco a quienes se toman un tiempo 
  en leer o contestar mis dudas... (creo que está bien ser agradecido y saber 
  reconocer) así que Juan Antonio muchas gracias por todo (entre otros que 
  leyeron)<br><br>El tema es el siguiente: (y te entiendo que no me hayas 
  entendido.. je, no me expliqué muy bien) estoy intentando analizar lógicamente 
  datos asincrónicos, que no poseen bits de stop ni de paridad ni nada por el 
  estilo, a eso me refería sin protocolo, ya que para eso necesitaría conectar 
  un microcontrolador y no, el circuito ya está armado así. Entonces debería 
  comuncarme con el pc y que este detecte el ancho (en tiempo) de los pulsos, 
  que no de error y poder almacenar en un buffer el tiempo entre un '1' lógico y 
  un '0' y viceversa, y a eso viene mi pregunta, como podría hacer para 
  lograrlo? Sé que se puede, pero no se como... El problema central es conocer 
  en tiempo cuando cambia de estado el pin dts, y si es posible asignarle alguna 
  interrupción o algo por el estilo para poder almacenar en una pila estas 
  duraciones. <br><br>Muchas gracias! (y perdón por expresarme 
  mal)<br><br>Saludos!<br><br>
  <div><span class="gmail_quote">El día 25/01/07, <b class="gmail_sendername">Juan 
  Antonio</b> <<a href="mailto:jalr43@hotmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">jalr43@hotmail.com 
  </a>> escribió:</span>
  <blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div bgcolor="#ffffff">
    <div><font face="Arial" size="2">Hola Diego,</font></div>
    <div><font face="Arial" size="2"></font> </div>
    <div><font face="Arial" size="2">no lo encuentro sentido a medir la anchura de 
    los pulso cuanto depende exclusivamente de la velocidad a la que tengas 
    configurado el puerto. Por ejemplo si la velocidad es de 9600 bps, es decir 
    9600 bits por segundo la anchura de cada bit que se transmite es 1/9600 = 
    104.16 microsegundos. Entonces cuando se hayan transmitido 9600 bits habrá 
    pasado un segundo, 104.16 microsegundos = 1/9600 que por 9600 devuelte 1 
    segundo.</font></div>
    <div><font face="Arial" size="2"></font> </div>
    <div><font face="Arial" size="2">Si los datos los vas a leer en un PC, lo que se 
    envía por el puerto deberías seguir la norma RS-232, porque el puerto del PC 
    conecta con una UART que se encarga de quitar de la trama los bits de 
    comienzo y parada almacanando el dato resultante en una pila.</font></div>
    <div><font face="Arial" size="2"></font> </div>
    <div><font face="Arial" size="2">Yo hicé un diseño una vez creando el protocolo 
    RS-232 es tan fácil como tener la rutina de espera de un bit: poner la línea 
    con el valor del bit, rutina de espera de un bit, poner el la línea el 
    siguiente valor, etc. Lógicamente si los bits de parada, comienzo no son 1 ó 
    2, por ejemplo 1.5 bits también hace falta una rutina de espea de 1/2 
    bit.</font></div>
    <div><font face="Arial" size="2"></font> </div>
    <div><font face="Arial" size="2">Si explicas con más detalle tu 
    problema quizá te pueda ayudar, es decir conecto en el pueto serie del PC un 
    cacharro que cambia el valor de la señal que transmite sin ningún 
    protocolo.</font></div>
    <div><font face="Arial" size="2"></font> </div>
    <div><font face="Arial" size="2">Un saludo,</font></div>
    <div><font face="Arial" size="2">Juan Antonio.</font></div>
    <blockquote style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;">
      <div><span>
      <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">----- 
      Original Message ----- </div>
      <div style="background: rgb(228, 228, 228) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
<b>From:</b> 
      <a title="diegogeid@gmail.com" href="mailto:diegogeid@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">D1e6o!</a> </div>
      <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>To:</b> 
      <a title="cconclase@listas.conclase.net" href="mailto:cconclase@listas.conclase.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Lista de correo 
      sobre C y C++</a> </div>
      <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>Sent:</b> 
      Thursday, January 25, 2007 7:13 PM</div>
      <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><b>Subject:</b> 
      [C con Clase] Ayuda Puerto Serial</div>
      <div><br></div>Hola gente, bueno estoy programando un poco con el puerto 
      serial y quería saber si alguien tiene ideas de esto: No de una 
      comunicación a través de rs232 por el puerto serial sino sin protocolo, es 
      decir, medir el ancho de los pulsos (1 y 0) para después procesarlos... Se 
      que se puede.. pero no se como, tengo entendido que es por los pines rts y 
      dtr del puerto serie pero como hago para saber el estado en tiempo real de 
      los pines?... <br><br>Saludos si alguien tiene algo acerca de esto 
      cualquier cosa me sirve..! <br><br>Gracias..<br></span></div>
      <p></p>
      <hr>

      <p></p>_______________________________________________<br>Lista de correo 
      Cconclase <a href="mailto:Cconclase@listas.conclase.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Cconclase@listas.conclase.net</a><br><a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>Bajas: 
      <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a>
      <p></p></blockquote></div><br>_______________________________________________<br>Lista 
    de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Cconclase@listas.conclase.net</a><br><a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net 
    </a><br>Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br><br>
</blockquote></div><br>
  </span></div><p>
  </p><hr><span class="q">

  <p></p>_______________________________________________<br>Lista de correo 
  Cconclase 
  <a href="mailto:Cconclase@listas.conclase.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Cconclase@listas.conclase.net</a><br><a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>Bajas: 
  <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a></span><p></p></blockquote>
</div>

<br>_______________________________________________<br>Lista de correo Cconclase <a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a onclick="return top.js.OpenExtLink(window,event,this)" href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
</a><br>Bajas: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br><br></blockquote>
</div><br>