eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › WinAPi serial port
Ilość wypowiedzi w tym wątku: 3

  • 1. Data: 2009-03-05 23:05:50
    Temat: WinAPi serial port
    Od: "cubah" <c...@t...pl>

    Hello, mam podlaczony modul GSM do RS232, pod hyperterminalem po kazdym
    wyslanym znaku "A" dostaje odpowiedz od modulka (znak ktory wyslalem).
    Napisalem kod jak ponizej:

    ok = ::WriteFile ( m_hCom, "A", 1, &len, NULL );
    ASSERT( ok );
    ASSERT( len == 1 );
    ::Sleep( 100 );
    ok = ::ReadFile( m_hCom, buf, 1, &len, NULL );
    ASSERT( ok );
    ASSERT( len == 1 );

    i kod zatrzymuje sie na funckji ReadFile.

    Juz mnie trafia szukalem z 5 godzin co moze byc nie tak i nie wiem czemu
    synchorniczny odczyt/zapis nie dziala skoro na stronie MSDN taki sposob
    rekomenduja (ponad OVERLAPPED).

    Kuba




  • 2. Data: 2009-03-05 23:12:23
    Temat: Re: WinAPi serial port
    Od: "cubah" <c...@t...pl>

    To otwarcie portu:

    m_hCom = ::CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE,
    0, // exclusive access
    NULL, // no security attributes
    OPEN_EXISTING,
    0,
    NULL );
    // Driver setup = HT:
    ok = ::SetupComm( m_hCom, 8192, 8192 );
    ASSERT( ok );

    DCB m_Dcb;
    ok = ::GetCommState( m_hCom, &m_Dcb );
    ASSERT( ok );
    m_Dcb.fParity = 0; // no errors reported
    m_Dcb.fBinary = TRUE;
    // Flow ctrl:
    m_Dcb.fInX = FALSE;
    m_Dcb.fOutX = FALSE;
    m_Dcb.fOutxCtsFlow = FALSE; // RTS/CTS
    m_Dcb.fRtsControl = RTS_CONTROL_DISABLE;
    m_Dcb.fOutxDsrFlow = FALSE; // DTR/DSR
    m_Dcb.fDtrControl = DTR_CONTROL_DISABLE;
    m_Dcb.BaudRate = CBR_19200;
    m_Dcb.Parity = NOPARITY; // no parity
    m_Dcb.StopBits = ONESTOPBIT;
    m_Dcb.ByteSize = 8;
    m_Dcb.fAbortOnError = 1;
    m_Dcb.fDtrControl = 1;
    m_Dcb.fTXContinueOnXoff = 1;
    m_Dcb.fRtsControl = 1;
    m_Dcb.XonLim = 80;
    m_Dcb.XoffLim = 200;
    ok = ::SetCommState( m_hCom, &m_Dcb );
    ASSERT( ok );

    COMMTIMEOUTS m_CommTimeouts;;
    m_CommTimeouts.ReadIntervalTimeout = 10;
    m_CommTimeouts.ReadTotalTimeoutConstant = 0;
    m_CommTimeouts.ReadTotalTimeoutMultiplier = 0;
    m_CommTimeouts.WriteTotalTimeoutConstant = 5000;
    m_CommTimeouts.WriteTotalTimeoutMultiplier= 0;
    ok = ::SetCommTimeouts( m_hCom, &m_CommTimeouts );
    ASSERT( ok );
    ok = SetCommMask( m_hCom, EV_RXCHAR | EV_ERR );
    ASSERT( ok );

    tu reszta kodu ktory juz przeslalem....

    Użytkownik "cubah" <c...@t...pl> napisał w wiadomości
    news:gopmcp$mik$1@mx1.internetia.pl...
    > Hello, mam podlaczony modul GSM do RS232, pod hyperterminalem po kazdym
    > wyslanym znaku "A" dostaje odpowiedz od modulka (znak ktory wyslalem).
    > Napisalem kod jak ponizej:
    >
    > ok = ::WriteFile ( m_hCom, "A", 1, &len, NULL );
    > ASSERT( ok );
    > ASSERT( len == 1 );
    > ::Sleep( 100 );
    > ok = ::ReadFile( m_hCom, buf, 1, &len, NULL );
    > ASSERT( ok );
    > ASSERT( len == 1 );
    >
    > i kod zatrzymuje sie na funckji ReadFile.
    >
    > Juz mnie trafia szukalem z 5 godzin co moze byc nie tak i nie wiem czemu
    > synchorniczny odczyt/zapis nie dziala skoro na stronie MSDN taki sposob
    > rekomenduja (ponad OVERLAPPED).
    >
    > Kuba
    >
    >
    >



  • 3. Data: 2009-03-05 23:14:27
    Temat: Re: WinAPi serial port
    Od: "cubah" <c...@t...pl>


    Użytkownik "cubah" <c...@t...pl> napisał w wiadomości
    news:gopmcp$mik$1@mx1.internetia.pl...
    > Hello, mam podlaczony modul GSM do RS232, pod hyperterminalem po kazdym
    > wyslanym znaku "A" dostaje odpowiedz od modulka (znak ktory wyslalem).
    > Napisalem kod jak ponizej:
    >
    > ok = ::WriteFile ( m_hCom, "A", 1, &len, NULL );
    > ASSERT( ok );
    > ASSERT( len == 1 );
    > ::Sleep( 100 );
    > ok = ::ReadFile( m_hCom, buf, 1, &len, NULL );
    > ASSERT( ok );
    > ASSERT( len == 1 );
    >
    > i kod zatrzymuje sie na funckji ReadFile.
    >
    > Juz mnie trafia szukalem z 5 godzin co moze byc nie tak i nie wiem czemu
    > synchorniczny odczyt/zapis nie dziala skoro na stronie MSDN taki sposob
    > rekomenduja (ponad OVERLAPPED).
    >
    > Kuba
    >
    Osobiscie podejrzewam, ze po fukcji WriteFile bajt jest wysylany przez
    urzadzenie szybciej niz zacznie wykonywac sie funkcja ReadFIle. Ale z
    drugiej strony to przeciez ten bajt laduje w buforze drivera (??) wiec
    powinienem go odczytac?


strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: