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.
 
 
 
 
 
 

580 lines
12 KiB

#include "usbcontrol.h"
#include "QDebug"
#include <QDateTime>
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((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);
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);
}