You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
513 lines
10 KiB
513 lines
10 KiB
#include "usbcontrol.h" |
|
#include "QDebug" |
|
#include <QDateTime> |
|
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(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((d<devices)&&(vid!=0x04b4)&&(pid!=0x00f1)); |
|
|
|
bulkinPoint =(CCyBulkEndPoint*)device->EndPointOf(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((d<devices)&&(vid!=0x04b4)&&(pid!=0x00f1)); |
|
|
|
bulkinPoint =(CCyBulkEndPoint*)device->EndPointOf(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); |
|
|
|
QDateTime t = QDateTime::currentDateTime(); |
|
QString log = t.toString() |
|
+QString::fromLocal8Bit("设置积分时间为")+QString::number( value) +"ms"; |
|
emit signalSendMessage(log); |
|
|
|
|
|
} |
|
|
|
|
|
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); |
|
}
|
|
|