用api函数打开串口,获取系统时间

1 篇文章 0 订阅
1 篇文章 0 订阅
//打开串口,调用api函数
BOOL CPrtInfoDlg::OpenCommunication(LPCSTR portnum)
{
    // 增加dos设备
CloseHandle(m_hComm);//每次打开串口时,先关闭此串口,避免重复打开后,返回值不一样,不利于后边操作
    m_hComm = CreateFile(portnum,//portnum为端口号的字符串,api函数打开方式,对于10一上的端口号,参数portnum格式需要为"\\\\.\\COM10"
                         GENERIC_READ | GENERIC_WRITE,
                         0,
                         NULL,
                         OPEN_EXISTING,
                         0,
                         NULL); 
//MessageBox("3333333333332",NULL,MB_OK);
if(m_hComm == INVALID_HANDLE_VALUE)
MessageBox("此串口无效。",NULL,MB_OK);
else
    {
        // 禁用读写溢出,使用总线特性
//MessageBox("进入串口配置。",NULL,MB_OK);
        COMMTIMEOUTS cm;
        if (GetCommTimeouts(m_hComm, &cm))
        {
            cm.ReadIntervalTimeout         = 100; // 首字符
            cm.ReadTotalTimeoutMultiplier  = 0;   // 字符间距                
            cm.ReadTotalTimeoutConstant    = 500; // 连续字符间距                
            cm.WriteTotalTimeoutMultiplier = 0;   // 字符间距                   
            cm.WriteTotalTimeoutConstant   = 0;   // 连续字符间距


            SetCommTimeouts(m_hComm, &cm);
        }


        // 禁用自身缓冲区
        SetupComm(m_hComm, 4096, 4096);


        COMSTAT cstat;
        DWORD dwError = 0;
        ClearCommError(m_hComm, &dwError, &cstat);
//MessageBox("11111111",NULL,MB_OK);
        // 波特率
        DCB dcb = {0};
        memset(&dcb, 0, sizeof(dcb));


        dcb.DCBlength = sizeof(DCB);
        if (GetCommState(m_hComm, &dcb)) 
        {
            dcb.ByteSize = 8;//设置数据位
            dcb.StopBits = ONESTOPBIT;//设置停止位
            dcb.BaudRate = CBR_19200;//设置波特率
            //dcb.Parity   = EVENPARITY;
   dcb.Parity   = NOPARITY;//设置校验位
            SetCommState(m_hComm, &dcb);
   SetDlgItemText(IDC_EDIT1, _T("串口已打开!"));
        }


        // 清空开用
        PurgeComm(m_hComm, PURGE_TXCLEAR | PURGE_RXCLEAR | PURGE_RXABORT | PURGE_RXABORT);
    }






//获取系统时间
//获得时间
CString str; //获取系统时间
CTime tm1;
tm1=CTime::GetCurrentTime();
str=tm1.Format("%Y%m%d%H%M%S");//得到顺序 年月日时分秒 的字符串
str=tm1.Format("%Y%m%d%H%M%S%w");//得到顺序 年月日时分秒  星期 的字符串,%w表示星期
//MessageBox(str,NULL,MB_OK);
//这里得到的星期,0表示星期日 
char idayofweek = tm1.GetDayOfWeek();//通过这个函数也能得到单独的 星期
str=str+idayofweek;//这里是将年月日时分秒 星期 两个字符串连接为一个字符串




/**********************************************************************************************/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值