Return to Snippet

Revision: 43272
at March 20, 2011 13:48 by liouys


Initial Code
#include <iostream>
#include <windows.h>
#include <assert.h>

using namespace std;

HANDLE g_hCom = INVALID_HANDLE_VALUE;
const unsigned MAX_BUF_LEN = 32;
const char* const g_pData = "hello";


DWORD WINAPI ThreadRead( LPVOID lpParameter )
{
    char szBuf[ MAX_BUF_LEN ] = { 0 };
    DWORD dwRead;
    if( !ReadFile( g_hCom, szBuf, strlen( g_pData ), &dwRead, NULL ) )
    {
        cout << "Read com failed." << endl;
        return 0;
    }
    if( dwRead != strlen( g_pData ) )
    {
        cout << "Failed to get all the data." << endl;
        return 0;
    }
    cout << "Read: " << szBuf << endl;
    return 1;
}


int main()
{
    g_hCom = CreateFile( "com1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL );
    assert( g_hCom != INVALID_HANDLE_VALUE );

    HANDLE hThread = CreateThread( NULL, 0, ThreadRead, NULL, 0, NULL );
    assert( hThread );

    Sleep( 100 );

    DWORD dwWritten;
    if( !WriteFile( g_hCom, g_pData, strlen( g_pData ), &dwWritten, NULL ) )
    {
        cout << "Write com failed." << endl;
        return 0;
    }
    if( dwWritten != strlen( g_pData ) )
    {
        cout << "Failed to write all the data." << endl;
        return 0;
    }
    cout << "Write: " << g_pData << endl;
    return 1;
}

Initial URL


Initial Description


Initial Title
windows下串口通信同步与异步方式

Initial Tags
windows

Initial Language
C