找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2204|回复: 1
打印 上一主题 下一主题
收起左侧

C++串口读取如何读取数据并显示

[复制链接]
跳转到指定楼层
楼主
ID:496052 发表于 2019-3-22 12:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
示波器发出一段波形,三个字节,有起始位,1位停止位。
波形解码如下
0000000001 0011110011 0100001011
用串口助手接收到的hex:009EA1
C++程序:
void com_init()
{
        COMSTAT ComStat;
        DWORD dwErrorFlags;

        hCom = CreateFile("COM1",//COM1口
        GENERIC_READ|GENERIC_WRITE, //允许读和写
        0, //独占方式
        NULL,
        OPEN_EXISTING, //打开而不是创建
        0, //同步方式
        NULL);

        if (hCom == INVALID_HANDLE_VALUE)
                CloseHandle(hCom);
               
        SetupComm(hCom,1024,1024); //输入缓冲区和输出缓冲区的大小都是1024

        COMMTIMEOUTS TimeOuts;
        //设定读超时
        //在读一次输入缓冲区的内容后读操作就立即返回,
        //而不管是否读入了要求的字符。
        TimeOuts.ReadIntervalTimeout = MAXDWORD;
        TimeOuts.ReadTotalTimeoutMultiplier = 0;
        TimeOuts.ReadTotalTimeoutConstant = 0;
       

        //设定写超时
        TimeOuts.WriteTotalTimeoutMultiplier = 100;
        TimeOuts.WriteTotalTimeoutConstant =   500;
        SetCommTimeouts(hCom, &TimeOuts);   //设置超时

        DCB dcb;
        GetCommState(hCom, &dcb);
        dcb.BaudRate = 9600;        //波特率为9600
        dcb.ByteSize = 8;           //每个字节有8位
        dcb.Parity = NOPARITY;      //无奇偶校验位
        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;  //写入字节数


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

代码也是之前人写的,一知半解。我现在就想读取到Inbuff[3](三个字节的对应波形的值)
目前读取出来的全部都是0,请大虾帮忙指点迷津。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:479009 发表于 2019-3-22 15:20 | 只看该作者
看ReadFile的返回值吧,串口没有数据来,函数就直接返回了。这函数不是阻塞的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表