找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2672|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

C++串口讀取如何讀取數(shù)據(jù)并顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:496052 發(fā)表于 2019-3-22 12:54 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
示波器發(fā)出一段波形,三個字節(jié),有起始位,1位停止位。
波形解碼如下
0000000001 0011110011 0100001011
用串口助手接收到的hex:009EA1
C++程序:
void com_init()
{
        COMSTAT ComStat;
        DWORD dwErrorFlags;

        hCom = CreateFile("COM1",//COM1口
        GENERIC_READ|GENERIC_WRITE, //允許讀和寫
        0, //獨(dú)占方式
        NULL,
        OPEN_EXISTING, //打開而不是創(chuàng)建
        0, //同步方式
        NULL);

        if (hCom == INVALID_HANDLE_VALUE)
                CloseHandle(hCom);
               
        SetupComm(hCom,1024,1024); //輸入緩沖區(qū)和輸出緩沖區(qū)的大小都是1024

        COMMTIMEOUTS TimeOuts;
        //設(shè)定讀超時
        //在讀一次輸入緩沖區(qū)的內(nèi)容后讀操作就立即返回,
        //而不管是否讀入了要求的字符。
        TimeOuts.ReadIntervalTimeout = MAXDWORD;
        TimeOuts.ReadTotalTimeoutMultiplier = 0;
        TimeOuts.ReadTotalTimeoutConstant = 0;
       

        //設(shè)定寫超時
        TimeOuts.WriteTotalTimeoutMultiplier = 100;
        TimeOuts.WriteTotalTimeoutConstant =   500;
        SetCommTimeouts(hCom, &TimeOuts);   //設(shè)置超時

        DCB dcb;
        GetCommState(hCom, &dcb);
        dcb.BaudRate = 9600;        //波特率為9600
        dcb.ByteSize = 8;           //每個字節(jié)有8位
        dcb.Parity = NOPARITY;      //無奇偶校驗(yàn)位
        dcb.StopBits = ONESTOPBIT;  //1個停止位
        SetCommState(hCom, &dcb);
        ClearCommError(hCom,&dwErrorFlags,&ComStat);
}

void test_Version()
{
        int tbit = 0;
        unsigned char OutBuffer[4] = {0XAA,0xF1,0,0};
        unsigned char InBuffer[3]={0};
        DWORD wCount = 3;  //read bytes
        DWORD dwBytesWrite = 4;  //寫入字節(jié)數(shù)


        memset(InBuffer, '\0', 3);
        ReadFile(hCom,InBuffer,wCount,&wCount,NULL);
}

代碼也是之前人寫的,一知半解。我現(xiàn)在就想讀取到Inbuff[3](三個字節(jié)的對應(yīng)波形的值)
目前讀取出來的全部都是0,請大蝦幫忙指點(diǎn)迷津。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:479009 發(fā)表于 2019-3-22 15:20 | 只看該作者
看ReadFile的返回值吧,串口沒有數(shù)據(jù)來,函數(shù)就直接返回了。這函數(shù)不是阻塞的
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表