#include "widget.h"
#include "ui_widget.h"
#include<Windows.h>
#include <QDebug>
#include <QPainter>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    
    setWindowTitle("test");
}
Widget::~Widget()
{
    delete ui;
}
void Widget::on_pushButton_clicked()
{
    #ifdef Q_WS_WIN
    HANDLE hCom; 
    hCom=CreateFileA("COM1",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
    if(hCom == INVALID_HANDLE_VALUE)
    {
      
         MessageBox(NULL,TEXT("line"),TEXT("HAHA YOYO"),MB_OK);
        
        return;
    }
     SetupComm(hCom,1024,1024); //输入缓冲区和输出缓冲区的大小都是100
    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 = TWOSTOPBITS; 
    SetCommState(hCom,&dcb);
    PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR);
    
    OVERLAPPED m_osRead;
    memset(&m_osRead,0,sizeof(OVERLAPPED));
    m_osRead.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
    COMSTAT ComStat;
    DWORD dwErrorFlags;
    
    char str[100];
    memset(str,'\0',100);
    DWORD dwBytesRead=100;//读取的字节数
    BOOL bReadStat;
    ClearCommError(hCom,&dwErrorFlags,&ComStat);
    dwBytesRead = min(dwBytesRead,(DWORD)ComStat.cbInQue);
    bReadStat = ReadFile(hCom,str,dwBytesRead,&dwBytesRead,&m_osRead);
        
     PurgeComm(hCom, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
         for(int i=0;i<100;i++)
         {
           QString s=str;
           ui->label->setText(s);
         }
       #endif
       
       
         
       
}