MFC 串口访问单片机,并提取数据保存,该怎么处理

MFC 串口访问单片机,并提取数据保存
OS:Windows7
环境:Visual Studio 2010 VC++ MFC Application

问题:串口访问单片机,并提取数据保存。

老师说,MUC方面已经是设置好的了。
只要我编写读写程序就直接可以读写。
发送{0x02,0x56,0x20,0x20,0x0D,0x0A}
这个MCU就应该返回Version数据。
我用仪器测试了,我的代码,连发送都没成功。
怎么才能发送和接受成功?
帮我看看代码吧。是新手,拜托了。

C/C++ code

BOOL Comm::OpenComm(char * pPort, int nBaudRate, int nParity, int nByteSize, int nStopBits)
{
    DCB dcb;        // 串口控制块
     COMMTIMEOUTS timeouts = {    // 串口超时控制参数
        100,                // 读字符间隔超时时间: 100 ms
        1,                    // 读操作时每字符的时间: 1 ms (n个字符总共为n ms)
        500,                // 基本的(额外的)读超时时间: 500 ms
        1,                    // 写操作时每字符的时间: 1 ms (n个字符总共为n ms)
        100};                // 基本的(额外的)写超时时间: 100 ms

        m_hComm = CreateFile(pPort,    // 串口名称或设备路径
            GENERIC_READ | GENERIC_WRITE,    // 读写方式
            0,                // 共享方式:独占
            NULL,            // 默认的安全描述符
            OPEN_EXISTING,    // 创建方式
            0,                // 不需设置文件属性
            NULL);            // 不需参照模板文件
        if(m_hComm == INVALID_HANDLE_VALUE) return FALSE;        // 打开串口失败
        GetCommState(m_hComm, &dcb);        // 取DCB

        dcb.BaudRate = nBaudRate;
        dcb.ByteSize = nByteSize;
        dcb.Parity = nParity;
        dcb.StopBits = nStopBits;

        SetCommState(m_hComm, &dcb);        // 设置DCB
        SetupComm(m_hComm, 4096, 1024);    // 设置输入输出缓冲区大小
        SetCommTimeouts(m_hComm, &timeouts);    // 设置超时
        return TRUE;
}

// 关闭串口
BOOL Comm::CloseComm()
{
    return CloseHandle(m_hComm);
}

int Comm::WriteVersion()
{
    Comm send;
    DWORD dwNumWrite = 0;    // 串口发出的数据长度
     char senddate1[1024] = {0x02,0x56,0x20,0x20,0x0D,0x0A};
    int wLength = 6;
    WriteFile(m_hComm,senddate1, wLength, &dwNumWrite, NULL);
    return (int)dwNumWrite;
}

// 读串口
int Comm::ReadVersion()
{
    DWORD dwNumRead = 0;    // 串口收到的数据长度
     char readdate1[1024];
    int rLength = 35;
    ReadFile(m_hComm, readdate1, rLength, &dwNumRead, NULL);
    AfxMessageBox(readdate1);
    return (int)dwNumRead;
}




用下面的函数来调用
C/C++ code

int check()
{
    Comm com;
    com.OpenComm("COM5", 9600, 2, 8, 1);
    com.WriteVersion();
    com.ReadVersion();
    com.CloseComm();
}






------解决方案--------------------
探讨

关注顶一下