#include "usbcontrol.h" #include "QDebug" #include double localit = 5; usbcontrol::usbcontrol(QObject* parent): QObject{parent} { device = NULL; bulkinPoint = NULL; initEndPoint(); } int usbcontrol::sendMessage(char *msg, int msglen) { if(msglen!=8){ return -1; } msg[7]=0; for(int i = 1;i<7;i++){ msg[7] +=msg[i]; } if(sp.isOpen()){ sp.write(msg,8); } if(bulkinPoint==NULL){ initEndPoint(); } if(bulkinPoint==NULL){ emit signalSendMessage(QString::fromLocal8Bit("未找到设备或端口,请检查硬件")); return -4; } long len = bulkinPoint->MaxPktSize; memset(buffer,0,len); int ret = 0; contexts = bulkinPoint->BeginDataXfer(buffer,len,&inOvLap); if(!bulkinPoint->WaitForXfer(&inOvLap,1500)) ret = - 1; if(!bulkinPoint->FinishDataXfer(buffer,len,&inOvLap,contexts)) ret = -2; if(ret !=0){ device = new CCyUSBDevice(NULL); int vid,pid; int d = 0; int devices = device->DeviceCount(); do{ device->Open(d); vid = device->VendorID; pid = device->ProductID; d++; }while((dEndPointOf(0x01); if(bulkinPoint == NULL){ return -3; } } memcpy(buffer,msg,msglen); contexts = bulkinPoint->BeginDataXfer(buffer,len,&inOvLap); if(!bulkinPoint->WaitForXfer(&inOvLap,1500)) return -1; if(!bulkinPoint->FinishDataXfer(buffer,len,&inOvLap,contexts)) return -2; return 0; } void usbcontrol::initEndPoint() { device = new CCyUSBDevice(NULL); int vid,pid; int d = 0; int devices = device->DeviceCount(); do{ device->Open(d); vid = device->VendorID; pid = device->ProductID; d++; }while((dEndPointOf(0x01); if(bulkinPoint == NULL){ return; } long len = bulkinPoint->MaxPktSize; buffer = (unsigned char*)malloc(len); inOvLap.hEvent = CreateEventW(NULL,false,false,NULL); } void usbcontrol::bit14(bool b) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x05; if(b) msg[3] = 0x01; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log; if(b) log = t.toString()+QString::fromLocal8Bit("设置14bit输出"); else log = t.toString()+QString::fromLocal8Bit("设置8bit输出"); // emit signalSendMessage(log); } void usbcontrol::tec(bool b) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x01; msg[2] = 0x07; if(b) msg[3] = 0x01; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString(); if(b) log = log+QString::fromLocal8Bit("开启TEC"); else log = log+QString::fromLocal8Bit("关闭TEC"); emit signalSendMessage(log); } void usbcontrol::onepoint() { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x03; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString()+QString::fromLocal8Bit("单点校正"); emit signalSendMessage(log); } void usbcontrol::savelow() { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x01; msg[2] = 0x00; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString()+QString::fromLocal8Bit("存低温图像"); emit signalSendMessage(log); } void usbcontrol::savehigh() { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x01; msg[2] = 0x01; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString()+QString::fromLocal8Bit("存高温图像"); emit signalSendMessage(log); } void usbcontrol::calck() { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x01; msg[2] = 0x02; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString()+QString::fromLocal8Bit("计算K"); emit signalSendMessage(log); } void usbcontrol::savek() { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x01; msg[2] = 0x03; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString()+QString::fromLocal8Bit("保存K"); emit signalSendMessage(log); } void usbcontrol::openk(bool b) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x01; if(b) msg[2] = 0x05; else msg[2] = 0x04; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString(); if(b) log+= QString::fromLocal8Bit("开启K值"); else log+= QString::fromLocal8Bit("关闭K值"); emit signalSendMessage(log); } void usbcontrol::saveb() { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x03; msg[3]= 0x01; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString()+QString::fromLocal8Bit("存储B"); emit signalSendMessage(log); } void usbcontrol::openb(bool b) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x03; if(b) msg[3]= 0x02; else msg[3] = 0x03; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString(); if(b) log+= QString::fromLocal8Bit("开启B值"); else log+= QString::fromLocal8Bit("关闭B值"); emit signalSendMessage(log); } void usbcontrol::openbila(bool b) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x04; if(b) msg[3] = 0x01; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString(); if(b) log+=QString::fromLocal8Bit("开启机芯双边滤波"); else log+= QString::fromLocal8Bit("关闭机芯双边滤波"); emit signalSendMessage(log); } void usbcontrol::setDDE(int v) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x0A; msg[3] = v/256; msg[4] = v%256; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString(); log+= QString::fromLocal8Bit("设置DDE系数为")+QString::number(v); emit signalSendMessage(log); } void usbcontrol::setGPOL(int value) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x12; int v= 16*value; // int v = ui->spinBox_GPOL->value()*16; msg[3] = v/256; msg[4] = v%256; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString()+QString::fromLocal8Bit("设置GPOL为") + QString::number( value) +"mv"; emit signalSendMessage(log); } void usbcontrol::setIT(double value) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x10; // int v = value*6250/4;//转换为int型 int v = value*6250/5; msg[3] = v/256; msg[4] = v%256; sendMessage(msg,8); localit = double(v)/1250.0; QDateTime t = QDateTime::currentDateTime(); QString log = t.toString() +QString::fromLocal8Bit("设置积分时间为")+QString::number( value) +"ms"; emit signalSendMessage(log); } double usbcontrol::getIT() { return localit; } void usbcontrol::setkf(int v) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x02; msg[3] = v; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString()+QString::fromLocal8Bit("设置数字滤波系数为")+QString::number(v); emit signalSendMessage(log); } void usbcontrol::sethist(int gray) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x01; msg[3] = gray/256; msg[4] = gray%256; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString()+QString::fromLocal8Bit("设置直方图平台值")+QString::number(gray) ; emit signalSendMessage(log); } void usbcontrol::setsag(bool b ) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x14; if(b) msg[3] = 0x01; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString(); if(b) log+=QString::fromLocal8Bit("开启自适应增强"); else log += QString::fromLocal8Bit("关闭自适应增强"); emit signalSendMessage(log); } void usbcontrol::mpset(int index,unsigned short avg) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x01; msg[2] = 0x0a; msg[3] = index-1; msg[4] = avg/256; msg[5] = avg%256; sendMessage(msg,8); msg[2] = 0x08; msg[3] = index-1; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString(); log+= u8"保存第" + QString::number(index)+u8"个背景,平均亮度为"+ QString::number(avg); emit signalSendMessage(log); } void usbcontrol::mpflash(int index) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x01; msg[2] = 0x09; msg[3] = index-1; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString(); log+= u8"固化第" + QString::number(index)+u8"个背景"; emit signalSendMessage(log); } void usbcontrol::mpstatus(bool b) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x01; msg[2] = 0x0b; msg[3] = b?1:0; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString(); log+= b?u8"打开多点校正":u8"关闭多点校正"; emit signalSendMessage(log); } void usbcontrol::mppop(int index) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x01; msg[2] = 0x0c; msg[3] = index-1; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString(); log+= u8"读出第"+QString::number(index)+u8"个背景"; emit signalSendMessage(log); } void usbcontrol::mpset1(int index, unsigned short avg) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x01; msg[2] = 0x0a; msg[3] = index-1; msg[4] = avg/256; msg[5] = avg%256; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString(); log+= u8"保存第" + QString::number(index)+u8"个背景,平均亮度为"+QString::number(avg); emit signalSendMessage(log); } void usbcontrol::setge(bool b) { char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x15; msg[3] = b?1:0; sendMessage(msg,8); QDateTime t = QDateTime::currentDateTime(); QString log = t.toString(); log+= b?u8"开启灰度等密度均衡":u8"关闭灰度等密度均衡"; emit signalSendMessage(log); } void usbcontrol::slotsetspname(QString name) { sp.setPortName(name); if(sp.open(QIODevice::ReadWrite)){ sp.setBaudRate(9600); sp.setStopBits(QSerialPort::StopBits::OneStop); sp.setParity(QSerialPort::Parity::NoParity); sp.setDataBits(QSerialPort::Data8); } else emit signalSendMessage(u8"设置串口号错误"); } void usbcontrol::setid(QString id) { QByteArray data = id.toUtf8(); char msg[8] = {0}; msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x25; msg[3] = data[0]; msg[4] = data[1]; msg[5] = data[2]; msg[6] = data[3]; sendMessage(msg,8); msg[0] = 0x44; msg[1] = 0x02; msg[2] = 0x26; msg[3] = data[4]; msg[4] = data[5]; msg[5] = data[6]; msg[6] = data[7]; sendMessage(msg,8); }