串口通信的接收部分

// CommComunication_Receive.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "Comm.h"
int main()
{
    CComm cComm;
    char szCommName[] = "COM3";
    if (cComm.OpenComm(szCommName))
    {

#if 0
        DCB dcb;
        //GetCommState(cComm.hComm, &dcb);//获取端口状态信息
        //定义初始化dcb,用dcb的参数对串口的参数进行设置
        dcb.BaudRate = 9600;
        dcb.ByteSize = 8;
        dcb.Parity = 0;
        dcb.StopBits = 1;
        //if (SetCommState(cComm.hComm, &dcb))
        char szDCBparam[50];
        sprintf_s(szDCBparam, "baud=%d parity=%c data=%d stop=%d", CBR_9600, 'N', 8, 1);
        if (GetCommState(cComm.hComm, &dcb) && BuildCommDCB(szDCBparam, &dcb))
        {
            cout << "SetCommState OK." << endl;

        }
        system("pause");
#endif

        /*定义一个COMMTIMEOUTES结构并初始化设置参数*/
        COMMTIMEOUTS  ctTimSet;
        ctTimSet.ReadIntervalTimeout = 0;
        ctTimSet.ReadTotalTimeoutMultiplier = 0;
        ctTimSet.ReadTotalTimeoutConstant = 0;
        ctTimSet.WriteTotalTimeoutMultiplier = 0;
        ctTimSet.WriteTotalTimeoutConstant = 0;

        /*用接构当中的参数设置串口超时参数*/
        if (cComm.SetCommunicationTimeouts(ctTimSet.ReadIntervalTimeout, ctTimSet.ReadTotalTimeoutMultiplier, ctTimSet.ReadTotalTimeoutConstant, ctTimSet.WriteTotalTimeoutMultiplier, ctTimSet.WriteTotalTimeoutConstant))
        {

            DWORD BaudRate = CBR_9600;
            BYTE ByteSize = 8;
            DWORD fParity = 1;
            BYTE  Parity = 'N';
            BYTE  StopBits = 1;
            //if (cComm.ConfigureComm(BaudRate, ByteSize, fParity, Parity, StopBits))
            if (cComm.ConfigureComm(BaudRate, ByteSize, Parity, StopBits))
            {
                cComm.CleanComm();
                DWORD dwError = 0;
                COMSTAT  comstat;   /** COMSTAT结构体,记录通信设备的状态信息 */
                memset(&comstat, 0, sizeof(COMSTAT));/** 将定义的comstat清空*/
                UINT BytesInQue = 0;  /*定义一个获取实际缓冲区拥有的字节数量*/
                BYTE byByteGet;  /*定义一个接收读取数据的变量*/
                while (1)
                {

                    if (ClearCommError(cComm.hComm, &dwError, &comstat))/*获取实际缓冲区当中的字节数量*/
                    {
                        BytesInQue = comstat.cbInQue;
                        if (!BytesInQue)/*没有的话等待4ms秒再读*/
                        {
                            Sleep(8);
                            continue;
                        }
                        do
                        {
                            cComm.ReadByte(byByteGet);/*将字节读取到byByterGet当中*/
                            cout << byByteGet;
                        } while (--BytesInQue);
                        //cout << "\t\t"<<endl;
                        //cComm.CleanComm();
                    }
                    //Sleep(1000);


                }
                cout << "dog1" << endl;
            }
            cout << "dog2" << endl;

            //signed char data[] = { 'a','b','c','d','e','f','g','h' };
            //unsigned char data[]byByte = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 };//定义要写入的数据
        }
        cout << "dog3" << endl;
    }
}
    
类还是之前的类 主程序'改变了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值