音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

串口通信老不成功!請高手指點(diǎn)!收發(fā)都不成功

作者:black 欄目:技術(shù)交流
串口通信老不成功!請高手指點(diǎn)!收發(fā)都不成功

OVERLAPPED m_OverlappedRead, m_OverlappedWrite;
HANDLE m_hComDev;
DWORD dwError;
DCB dcb;
BOOL bReadStatus;
DWORD dwErrorFlags;
COMSTAT ComStat;
BOOL bWriteStat;
COMMTIMEOUTS CommTimeOuts;

opensi()
{
    m_hComDev = CreateFile( "COM1", GENERIC_READ |  GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL );
    if( m_hComDev == NULL ) return( FALSE );

    CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;
    CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
    CommTimeOuts.ReadTotalTimeoutConstant = 0;
    CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
    CommTimeOuts.WriteTotalTimeoutConstant = 5000;
    SetCommTimeouts( m_hComDev, &CommTimeOuts );

    memset( &m_OverlappedRead, 0, sizeof( OVERLAPPED ) );
    memset( &m_OverlappedWrite, 0, sizeof( OVERLAPPED ) );
    m_OverlappedRead.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
    m_OverlappedWrite.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );

    dcb.DCBlength = sizeof( DCB );
    GetCommState( m_hComDev, &dcb );
    dcb.BaudRate = 9600;
    dcb.ByteSize = 8;
    dcb.Parity = NOPARITY;
    dcb.fBinary = TRUE;
    fSuccess1 =  SetCommState( m_hComDev, &dcb );
    fSuccess2 =  SetupComm( m_hComDev, 10000.html">10000, 10000.html">10000 );

    if( !SetCommState( m_hComDev, &dcb )||
    !SetupComm( m_hComDev, 10000.html">10000, 10000.html">10000 ) ||
    m_OverlappedRead.hEvent == NULL ||
    m_OverlappedWrite.hEvent == NULL ){
        dwError = GetLastError();
        if( m_OverlappedRead.hEvent != NULL) CloseHandle( m_OverlappedRead.hEvent );
        if( m_OverlappedWrite.hEvent != NULL) CloseHandle( m_OverlappedWrite.hEvent );
        CloseHandle( m_hComDev );
        return FALSE;
    }
}

ReadData( void *buffer, DWORD dwBytesRead)
{
    if( m_hComDev == NULL ) return( 0 );
    ClearCommError( m_hComDev, &dwErrorFlags, &ComStat );
    if( !ComStat.cbInQue ) return 0;

    dwBytesRead = min(dwBytesRead,(DWORD) ComStat.cbInQue);

    bReadStatus = ReadFile( m_hComDev, sdjfsd, dwBytesRead, &dwBytesRead, &m_OverlappedRead );
    if( !bReadStatus ){
        if( GetLastError() == ERROR_IO_PENDING ){
            if(WaitForSingleObject( m_OverlappedRead.hEvent, 1000) == WAIT_OBJECT_0)
            return 1;
        }
        return 0;
    }
    return 1;
}

SendData( const CHAR *buffer, DWORD dwBytesWritten)
{
    bWriteStat = WriteFile( m_hComDev, buffer, dwBytesWritten, &dwBytesWritten, &m_OverlappedWrite );
    if( !bWriteStat){
        if ( GetLastError() == ERROR_IO_PENDING ) {
            if(WaitForSingleObject( m_OverlappedWrite.hEvent, 10000.html">10000 ) == WAIT_OBJECT_0)
                return 1;
            else
                return 0;

        }
        return 0;
    }
    return 1;
}

main()
{
    int i;
    unsigned CHAR data[16];
    opens();
    for (i=0;i<16;i++)
        data[i]=i;
    SendDataCRC(16, data);
          ReadData(data, 16);
}



2樓: >>參與討論
black
這是WIN98下用VC環(huán)境API函數(shù)編寫的!
 
3樓: >>參與討論
ylz111
用示波器觀察一下串口是否能發(fā)出數(shù)據(jù)波形?
 
4樓: >>參與討論
mengjunok
自環(huán)一下
 
5樓: >>參與討論
black
自環(huán)還是不行。。。
 
6樓: >>參與討論
hsb.siq
微軟的網(wǎng)站應(yīng)有這方面的實(shí)例
我以前用C#做過一個。發(fā)送接收都行,就不知如何用PC對單片機(jī)進(jìn)行實(shí)時監(jiān)控。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
國家規(guī)定電信可以這樣收費(fèi)?恐怖!
一個關(guān)于N溝道場效應(yīng)管的問題!
誰幫我買三個CD4025?
關(guān)于232的問題請教一下大家~~
怎樣在微機(jī)232串口取電源???
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號