diff --git a/.gitignore b/.gitignore
index a547bf3..b83b508 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,11 @@ dist-ssr
*.njsproj
*.sln
*.sw?
+/myis11/project/is11/cmake-build-debug-visual-studio-2022/
+/myis11/project/is11/cmake-build-release-visual-studio-2022/
+/myis11/project/is11/vscode/
+/myis11/.vscode/
+/myis11/.cmake/
+/.vscode/
+/src-tauri/.cargo/
+/.vscode/
diff --git a/index.html b/index.html
index 16ca539..598fbca 100644
--- a/index.html
+++ b/index.html
@@ -23,7 +23,7 @@
padding: 0px;
}
-
+
diff --git a/myis11/project/is11/CMakeLists.txt b/myis11/project/is11/CMakeLists.txt
new file mode 100644
index 0000000..4682630
--- /dev/null
+++ b/myis11/project/is11/CMakeLists.txt
@@ -0,0 +1,27 @@
+cmake_minimum_required(VERSION 3.5)
+project(is11lib)
+if (MSVC)
+ # 静态链接多线程版本的运行时库
+ set(CMAKE_CXX_FLAGS "/MT")
+ set(CMAKE_C_FLAGS "/MT")
+
+endif()
+include_directories(../../src/test)
+include_directories(../../src/is11)
+add_library(is11lib SHARED
+ ../../src/test/test.cpp
+ ../../src/is11/SensorIS11.cpp
+ ../../src/is11/SensorIS11.h
+ ../../src/is11/IS11Comon.cpp
+ ../../src/is11/IS11Comon.h
+ ../../src/is11/IS11_INST.cpp
+ ../../src/is11/IS11_INST.h
+
+)
+set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
+
+
+add_executable(is11test
+ testmain.cpp
+)
+target_link_libraries(is11test is11lib)
diff --git a/myis11/project/is11/testmain.cpp b/myis11/project/is11/testmain.cpp
new file mode 100644
index 0000000..48c6156
--- /dev/null
+++ b/myis11/project/is11/testmain.cpp
@@ -0,0 +1,18 @@
+/**
+ ******************************************************************************
+ * @file : testmain.cpp
+ * @author : xin
+ * @brief : None
+ * @attention : None
+ * @date : 2024/8/14
+ ******************************************************************************
+ */
+#include "IS11_INST.h"
+int main() {
+ // IS11SensorInit();
+ Set_Serial_FUN(NULL,NULL);
+ return 0;
+}
+//
+// Created by xin on 2024/8/14.
+//
diff --git a/myis11/src/is11/IS11Comon.cpp b/myis11/src/is11/IS11Comon.cpp
new file mode 100644
index 0000000..8c70740
--- /dev/null
+++ b/myis11/src/is11/IS11Comon.cpp
@@ -0,0 +1,238 @@
+#include "IS11Comon.h"
+#ifdef _WIN32
+#include
+#elif
+
+#include
+
+#endif
+
+void delay(int ms){
+ Sleep(ms);
+}
+
+
+u_char BufferForRead[10000];
+int TotalIndexNow = 0;
+u_char BufferFortempWrite[1000];
+// MySerialWrite=nullptr;
+SERIALWRITE MySerialWrite = nullptr;
+SERIALREAD MySerialRead = nullptr;
+bool ISIS11Init = false;
+uint16_t crc16(const uint8_t *data, size_t len, uint16_t polynomial)
+{
+ uint16_t i, j, tmp, CRC16;
+
+ CRC16 = 0xFFFF; // CRC寄存器初始值
+ for (i = 0; i < len; i++)
+ {
+ CRC16 ^= data[i];
+ for (j = 0; j < 8; j++)
+ {
+ tmp = (uint16_t)(CRC16 & 0x0001);
+ CRC16 >>= 1;
+ if (tmp == 1)
+ {
+ CRC16 ^= polynomial; // 异或多项式
+ }
+ }
+ }
+ return CRC16;
+}
+
+size_t SendSettingCommand(u_char *Command, size_t CommandLenth, u_char *Value, size_t ValueLenth)
+{
+ memcpy(BufferFortempWrite, Command, CommandLenth);
+ memcpy(BufferFortempWrite + CommandLenth, Value, ValueLenth);
+ uint16_t crc = crc16(BufferFortempWrite, CommandLenth + ValueLenth);
+ memcpy(BufferFortempWrite + CommandLenth + ValueLenth, &crc, 2);
+ SerialWrite(BufferFortempWrite, CommandLenth + ValueLenth + 2);
+ // Serial.write(BufferFortempWrite, CommandLenth+ValueLenth + 2);
+ return GetSetBackFromSensor();
+}
+
+size_t SendGetData(int shutter)
+{
+ int lenth = sizeof(GET_ALL_DN);
+ uint16_t crc = crc16(GET_ALL_DN, lenth);
+ memcpy(BufferFortempWrite, GET_ALL_DN, lenth);
+ memcpy(BufferFortempWrite + lenth, &crc, 2);
+ SerialWrite(BufferFortempWrite, lenth + 2);
+ // Serial.write(BufferFortempWrite, lenth + 2);
+ // Serial.println(shutter);
+
+
+ delay(shutter);
+ return GetInfoBackFromSensor(true);
+}
+
+size_t SendGetSensorInfo(u_char *Command, size_t lenth)
+{
+
+ uint16_t crc = crc16(Command, lenth);
+ memcpy(BufferFortempWrite, Command, lenth);
+ memcpy(BufferFortempWrite + lenth, &crc, 2);
+ // Serial.println((int)MySerialWrite);
+ // Serial.write(BufferFortempWrite,lenth+2);
+ //delay(200);
+ SerialWrite(BufferFortempWrite, lenth + 2);
+
+ size_t retunnumber = GetInfoBackFromSensor();
+
+ return retunnumber;
+}
+
+size_t GetSetBackFromSensor()
+{
+ TotalIndexNow = 0;
+ TotalIndexNow += (int)SerailRead(BufferForRead + TotalIndexNow, 1);
+
+ while (TotalIndexNow < 8)
+ {
+ // Serial.println(TotalIndexNow);
+ // Serial.write(BufferForRead,1);
+ TotalIndexNow += (int)SerailRead(BufferForRead + TotalIndexNow, 1);
+ }
+ return TotalIndexNow;
+}
+
+bool panduanHeader()
+{
+ if (TotalIndexNow < 2)
+ {
+ return false;
+ /* code */
+ }
+ int temp = 0;
+ while (BufferForRead[temp] != 0x01 &&
+ !(BufferForRead[temp + 1] == 0x03 || BufferForRead[temp + 1] == 0x06 || BufferForRead[temp + 1] == 0x10))
+ {
+ if (temp >= TotalIndexNow - 2)
+ {
+ break;
+ /* code */
+ }
+ temp++;
+
+ /* code */
+ }
+ memcpy(BufferForRead, BufferForRead + temp, TotalIndexNow - temp);
+ TotalIndexNow = TotalIndexNow - temp;
+ temp = 0;
+ if (BufferForRead[temp] != 0x01 &&
+ !(BufferForRead[temp + 1] == 0x03 || BufferForRead[temp + 1] == 0x06 || BufferForRead[temp + 1] == 0x10))
+ {
+ return false;
+ }
+ return true;
+}
+
+size_t GetInfoBackFromSensor(bool isbig) // big 是指用几个字节表示数据长度 暂时只发现采集数据时用两个字节
+{
+
+ if (isbig)
+ {
+ // 长度用两个字节表示
+ // Serial.println(shutter);
+ // Serial.println("i am here12312312312312312");
+ TotalIndexNow = 0;
+ BufferForRead[0] = 0x00;
+ TotalIndexNow +=(int) SerailRead(BufferForRead + TotalIndexNow, 2);
+
+ // while(BufferForRead)
+
+ while (!panduanHeader())
+ {
+ TotalIndexNow +=(int) SerailRead(BufferForRead + TotalIndexNow, 1);
+ }
+ while (TotalIndexNow < 4)
+ {
+ // Serial.write(BufferForRead,TotalIndexNow);
+ //delay(20);
+ // Serial.println("i am here12312312312312312");
+ TotalIndexNow += (int)SerailRead(BufferForRead + TotalIndexNow, 1);
+ }
+
+ int lenth = BufferForRead[2] * 256 + BufferForRead[3];
+ while (TotalIndexNow < lenth + 4)
+ {
+ // delay(20);
+ // Serial.write(BufferForRead,TotalIndexNow);
+ // Serial.println(lenth);
+ // Serial.println(TotalIndexNow);
+ // Serial.println("i am here12312312312312312");
+ TotalIndexNow +=(int) SerailRead(BufferForRead + TotalIndexNow, 1024);
+ }
+ return TotalIndexNow;
+ }
+ else
+ {
+ // 长度用一个字节表示
+ TotalIndexNow = 0;
+ TotalIndexNow += (int)SerailRead(BufferForRead + TotalIndexNow, 1);
+
+ while (TotalIndexNow < 3)
+ {
+ TotalIndexNow += (int)SerailRead(BufferForRead + TotalIndexNow, 1);
+ }
+ int lenth = BufferForRead[2];
+ while (TotalIndexNow < lenth + 5)
+ {
+ TotalIndexNow += (int)SerailRead(BufferForRead + TotalIndexNow, 1);
+ }
+ // Serial.write(BufferForRead,TotalIndexNow);
+ return TotalIndexNow;
+ }
+}
+
+size_t SerialWrite(u_char *data, size_t lenth)
+{
+ if (MySerialWrite != nullptr)
+ {
+ // Serial.println("init ok");
+ return MySerialWrite(data, lenth);
+ }
+
+ return 0;
+}
+
+size_t SerailRead(u_char *data, size_t lenth)
+{
+ if (MySerialRead != nullptr)
+ {
+ return MySerialRead(data, lenth);
+ }
+ return 0;
+}
+
+void InitFunction(SERIALWRITE a, SERIALWRITE readfunc)
+{
+ MySerialWrite = a;
+ MySerialRead = readfunc;
+ //std::string temp = "01";
+ //a((u_char *)temp.c_str(), 2);
+ ISIS11Init = true;
+}
+
+u_char *GetDataBufferPTR()
+{
+ return BufferForRead;
+}
+bool isSensorInit()
+{
+ return ISIS11Init;
+}
+
+void CoverLittleAndBig(char *data, int lenth)
+{
+ char *tempdata = new char[lenth];
+ memcpy(tempdata, data, lenth);
+
+ for (size_t i = 0; i < lenth / 2; i++)
+ {
+ data[2 * i] = tempdata[2 * i + 1];
+ data[2 * i + 1] = tempdata[2 * i];
+ /* code */
+ }
+ delete[] tempdata;
+}
\ No newline at end of file
diff --git a/myis11/src/is11/IS11Comon.h b/myis11/src/is11/IS11Comon.h
new file mode 100644
index 0000000..037a749
--- /dev/null
+++ b/myis11/src/is11/IS11Comon.h
@@ -0,0 +1,136 @@
+
+/**
+ * @brief is11相关底层函数
+ *
+ */
+#ifndef __IS11COMON_H__
+#define __IS11COMON_H__
+
+#ifndef IS11COMMON_H
+#define IS11COMMON_H
+#include
+#include
+#include
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define COMMAND_GET 0x03
+#define COMMAND_SET 0x06
+#define COMMAND_MULTSET 0x10
+#define POLYNOMIAL 0xa001 //modbus crc
+#include "comon.h"
+
+
+const u_char GET_ADDRESS[]={0x01,0x03,0x00,0x01,0x00,0x01};
+const u_char GET_BANDRATE[]={0x01,0x03,0x00,0x02,0x00,0x01};
+const u_char GET_INTEGRAL_TIME[]={0x01,0x03,0x00,0x06,0x00,0x01};
+const u_char GET_AVERAGE_NUMBER[]={0x01,0x03,0x00,0x07,0x00,0x01};
+const u_char GET_WAVELENTH_AT_BAND[]={0x01, 0x03, 0x00,0x10, 0x00,0x02};
+const u_char GET_VALUE_AT_BAND[]={0x01, 0x03, 0x00,0x30, 0x00,0x02};
+const u_char GET_SETTING_OF_LAMP[]={0x01, 0x03, 0x00,0x04, 0x00,0x01};
+const u_char GET_WAVELENTH_COEFF[]={0x01, 0x03, 0x00,0x20, 0x00,0x08};
+const u_char GET_ALL_DN[]={0x01, 0x03, 0x01,0x00, 0x10,0x00};
+const u_char GET_SERIAL_NUMBER[]={0x01, 0x03, 0x00,0x40, 0x00,0x00};
+const u_char GET_PRODUCT_NAME[]={0x01, 0x03, 0x00,0x50, 0x00,0x00};
+
+const u_char SET_ADDRESS[]={0x01,0x06, 0x00,0x01};
+const u_char SET_BandRATE[]={0x01,0x06, 0x00,0x02};
+const u_char SET_INTEGRAL_TIME[]={0x01,0x06, 0x00,0x06};
+const u_char SET_AVERAGE_NUMBER[]={0x01,0x06, 0x00,0x07};
+const u_char SET_WORK_MODE[]={0x01,0x06, 0x00,0x01};
+const u_char SET_WAVELENTH_COEFF[]={0x01,0x10,0x00,0x20,0x00,0x08,0x16};
+
+/**
+ * @brief 判断传感器是否初始化完成
+ *
+ * @return true
+ * @return false
+ */
+bool isSensorInit();
+/**
+ * @brief 初始化传感器
+ *
+ * @param writefunc 写函数
+ * @param readfunc 读函数
+ */
+void InitFunction(SERIALWRITE writefunc,SERIALWRITE readfunc);
+
+/**
+ * @brief 获取 BufferForRead 的指针 用于读取返回的数据
+ *
+ */
+u_char * GetDataBufferPTR();
+
+/**
+ * @brief 发送获取设备信息的指令 适用于Get指令
+ *
+ * @param Command 指令 预定的数组
+ * @param lenth 指令长度 可以用sizeof来求算
+ * @return size_t 返回数据的长度 输出存放于 BufferForRead;
+ */
+size_t SendGetSensorInfo(u_char * Command,size_t lenth);//此过程不适合获取数据
+
+/**
+ * @brief
+ *
+ * @param shutter
+ * @return size_t
+ */
+size_t SendGetData(int shutter);
+/**
+ * @brief 发送设置指令
+ *
+ * @param Command 指令内容
+ * @param CommandLenth 指令长度
+ * @param Value 设置值
+ * @param ValueLenth 值长度 默认是两个字节
+ * @return size_t 返回值长度
+ */
+size_t SendSettingCommand(u_char * Command,size_t CommandLenth,u_char *Value,size_t ValueLenth=2);
+
+//big
+/**
+ * @brief 用来获取信息的返回的数据
+ *
+ * @param isbig 是指用几个字节表示数据长度 暂时只发现采集数据时用两个字节
+ * @return size_t 接收到的数据大小
+ */
+size_t GetInfoBackFromSensor(bool isbig=false);
+/**
+ * @brief 获取设置后返回数据
+ *
+ * @return size_t 返回数据长度;
+ */
+size_t GetSetBackFromSensor();
+
+
+
+/**
+ * @brief
+ *
+ * @param data
+ * @param lenth
+ * @return size_t
+ */
+
+size_t SerialWrite(u_char* data,size_t lenth);
+size_t SerailRead(u_char* data,size_t lenth=0);
+/**
+ * @brief 计算crc16
+ *
+ * @param data 数据
+ * @param len 数据长度
+ * @param polynomial crc16多项式 默认是A001H
+ * @return uint16_t crc16的值
+ */
+uint16_t crc16(const uint8_t *data, size_t len, uint16_t polynomial=POLYNOMIAL) ;
+
+bool panduanHeader();
+
+
+ void CoverLittleAndBig(char *data,int lenth);
+#ifdef __cplusplus
+}
+#endif
+#endif
+#endif // __IS11COMON_H__
\ No newline at end of file
diff --git a/myis11/src/is11/IS11_INST.cpp b/myis11/src/is11/IS11_INST.cpp
new file mode 100644
index 0000000..2ba5bfe
--- /dev/null
+++ b/myis11/src/is11/IS11_INST.cpp
@@ -0,0 +1,60 @@
+/**
+ ******************************************************************************
+ * @file : IS11_INST.cpp
+ * @author : xin
+ * @brief : None
+ * @attention : None
+ * @date : 2024/8/14
+ ******************************************************************************
+ */
+
+//
+// Created by xin on 2024/8/14.
+//
+#include "SensorIS11.h"
+#include "IS11_INST.h"
+#include "iostream"
+#include "cstring"
+
+SensorIS11 *thissensorIS11;
+int IS11SensorInit()
+{
+ std::cout<< "IS11SensorInit" << std::endl;
+ thissensorIS11 = new SensorIS11();
+ thissensorIS11->initSensor(1);
+ return 1;
+}
+
+void Set_Serial_FUN(SERIALWRITE writefunc,SERIALWRITE readfunc)
+{
+ InitFunction(writefunc,readfunc);
+}
+
+STRsensorinfo_C Get_SensorInfo() {
+ STRSensorInfo sensorinfo= thissensorIS11->SensorInfo;
+ STRsensorinfo_C sensorinfo_c;
+ //把sensorname 拷贝到sensorinfo_c
+ strcpy_s(sensorinfo_c.SensorName,sensorinfo.SensorName.c_str());
+ sensorinfo_c.BandNum = sensorinfo.BandNum;
+ sensorinfo_c.maxValue = sensorinfo.maxValue;
+ strcpy_s(sensorinfo_c.serialnumber,sensorinfo.serialnumber.c_str());
+ sensorinfo_c.a1 = sensorinfo.a1;
+ sensorinfo_c.a2 = sensorinfo.a2;
+ sensorinfo_c.a3 = sensorinfo.a3;
+ sensorinfo_c.a4 = sensorinfo.a4;
+ sensorinfo_c.issensorinit= sensorinfo.isSensorInit;
+ return sensorinfo_c;
+
+
+}
+
+int IS11OptSnenser(int percent) {
+ return thissensorIS11->OptSnenser(percent);
+}
+
+int IS11GetData(uint16_t *outdata, int shuttertime) {
+ thissensorIS11->GetOneDate(shuttertime);
+ memcpy(outdata,thissensorIS11->DATABUFF, sizeof(int16_t)*thissensorIS11->SensorInfo.BandNum);
+ return thissensorIS11->SensorInfo.BandNum;
+
+}
diff --git a/myis11/src/is11/IS11_INST.h b/myis11/src/is11/IS11_INST.h
new file mode 100644
index 0000000..b74dd39
--- /dev/null
+++ b/myis11/src/is11/IS11_INST.h
@@ -0,0 +1,34 @@
+/**
+ ******************************************************************************
+ * @file : IS11_INST.h
+ * @author : xin
+ * @brief : None
+ * @attention : None
+ * @date : 2024/8/14
+ ******************************************************************************
+ */
+
+//
+// Created by xin on 2024/8/14.
+//
+
+#ifndef IS11LIB_IS11_INST_H
+#define IS11LIB_IS11_INST_H
+#include "comon.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+__declspec(dllexport) int IS11SensorInit();
+ __declspec(dllexport) void Set_Serial_FUN(SERIALWRITE writefunc,SERIALWRITE readfunc);
+__declspec(dllexport) STRsensorinfo_C Get_SensorInfo();
+__declspec(dllexport) int IS11OptSnenser(int percent);
+__declspec(dllexport) int IS11GetData(uint16_t *outdata,int shuttertime);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif //IS11LIB_IS11_INST_H
diff --git a/myis11/src/is11/SensorIS11.cpp b/myis11/src/is11/SensorIS11.cpp
new file mode 100644
index 0000000..a369cae
--- /dev/null
+++ b/myis11/src/is11/SensorIS11.cpp
@@ -0,0 +1,292 @@
+#include"SensorIS11.h"
+#include "iostream"
+bool SensorIS11::initSensor(int id)
+{
+
+ DataRetrun=GetDataBufferPTR();
+ // IS1Sensor.SetPortName(id);
+ SensorInfo=GetSensorInfo();
+// pinMode(22,OUTPUT);
+// pinMode(23,OUTPUT);
+
+ return true;
+}
+
+STRSensorInfo SensorIS11::GetSensorInfo()
+{
+
+ STRSensorInfo setem;
+ if (!isSensorInit())
+ {
+
+ return setem;
+ }
+
+
+ int retlenth= SendGetSensorInfo((u_char *)GET_SERIAL_NUMBER,sizeof(GET_SERIAL_NUMBER));
+
+ char * result=new char[5];
+ memcpy(result,DataRetrun+3,4);
+ result[4]='\0';
+ std::cout<maxvalue) {
+ if (maxvaluenow > maxvalue)
+ {
+ shutternow = shutternow *0.7;
+ }
+ else
+ {
+ shutternow = maxvalue * 0.98 / (maxvaluenow * 1.0)*shutternow + 1;
+ }
+ if (shutternow > maxtime)
+ {
+ shutternow = maxtime;
+ break;
+ }
+ GetOneDate(shutternow);
+ maxvaluenow= Getmaxvalue(DATABUFF, SensorInfo.BandNum);
+#ifdef ARDUINO
+ Serial.print("now Shutter is :");
+ Serial.print(shutternow);
+ Serial.print(" maxvalue is :");
+ Serial.println(maxvaluenow);
+#else
+ std::cout<<"now Shutter is :"< 200)
+ {
+
+ return maxtime;
+
+ }
+ if (shutternow == maxtime)
+ {
+
+ return maxtime;
+ }
+ }
+#ifdef ARDUINO
+ Serial.print("zi dong value:");
+ Serial.println(shutternow);
+#endif
+ if (shutternow<0)
+ {
+ shutternow=maxtime;
+ /* code */
+ }
+
+ return shutternow;
+}
+
+void SensorIS11::shortLittletoBiG(unsigned short *data,int lenth)
+{
+ CoverLittleAndBig((char *)data,lenth);
+}
+
+
+
+
+
+
+
+
+
+
+
+int SensorIS11::Getmaxvalue(unsigned short *data,int lenth)
+{
+ int ret=-1;
+ for (int i = 0; i < lenth; ++i) {
+ if (data[i]>ret){
+ ret=data[i];
+ }
+ }
+ return ret;
+}
+
+void SensorIS11::TakeOneJob()
+{
+
+ SetShutter(1);
+ int shutter=OptSnenser(90);
+
+ shutterup=shutter;
+ GetOneDate(shutter);
+ // Serial.println("Finish Up ------Green2313123");
+ if (UpData==nullptr)
+ {
+ UpData=new unsigned short[SensorInfo.BandNum*2];
+ /* code */
+ }
+
+ memcpy(UpData,DATABUFF,SensorInfo.BandNum*2);
+ SetShutter(0);
+ GetOneDate(shutter);
+ for (int i = 0; i < SensorInfo.BandNum; ++i) {
+ // UpData[i]=UpData[i]-DATABUFF[i];
+ }
+ shutterup=shutter;
+
+ bool dingbing=false;
+#ifdef DINBIAO
+ String strout="1 shutteruo is "+String(shutterup)+" Finish Up ------Green change the fiber";
+ PrintFunc(strout );
+ digitalWrite(21, LOW);
+ delay(60000);
+ SensorInfo.SensorName=SensorInfo.SensorName+"cali";
+ Serial.println("begindown");
+ digitalWrite(21, HIGH);
+#endif
+
+
+
+ SetShutter(2);
+ shutter=OptSnenser(90);
+ shutterdown=shutter;
+ GetOneDate(shutter);
+ if (DownData==nullptr)
+ {
+ DownData=new unsigned short[SensorInfo.BandNum*2];
+ /* code */
+ }
+ memcpy(DownData,DATABUFF,SensorInfo.BandNum*2);
+ SetShutter(0);
+ GetOneDate(shutter);
+
+
+ for (int i = 0; i < SensorInfo.BandNum; ++i) {
+ // DownData[i]=DownData[i]-DATABUFF[i];
+ }
+ shutterdown=shutter;
+
+#ifdef DINBIAO
+ String strout1="2 shutterdown is "+String(shutterdown)+" Down Finish ------Blue";
+ PrintFunc(strout1 );
+
+#endif
+}
+
+SensorIS11::SensorIS11()
+{
+ shutternow=0;
+ // DataRetrun=GetDataBufferPTR();
+}
diff --git a/myis11/src/is11/SensorIS11.h b/myis11/src/is11/SensorIS11.h
new file mode 100644
index 0000000..239b6d7
--- /dev/null
+++ b/myis11/src/is11/SensorIS11.h
@@ -0,0 +1,43 @@
+#ifndef SENSORIS11_H
+#define SENSORIS11_H
+
+#include "comon.h"
+#include "IS11Comon.h"
+
+
+
+class SensorIS11 {
+public:
+ SensorIS11();
+ STRSensorInfo SensorInfo;
+ bool initSensor(int id = 2);
+ STRSensorInfo GetSensorInfo();
+ void SetShutter(int id);// 0 dark 1 green 2 blue
+ void GetOneDate(int msc);
+ int OptSnenser(int percent);
+ unsigned short DATABUFF[2048];
+ int shutterup,shutterdown;
+ unsigned short *DownData=nullptr;
+ unsigned short *UpData=nullptr;
+ void shortLittletoBiG( unsigned short *data,int lenth);
+
+ int Getmaxvalue(unsigned short *data,int lenth);
+ void TakeOneJob();
+ PRINTFUNC PrintFunc;
+
+
+
+ int shutternow;
+ //uint16_t result[2048];
+
+
+ u_char *DataRetrun;
+
+
+};
+
+
+
+
+
+#endif
\ No newline at end of file
diff --git a/myis11/src/is11/comon.h b/myis11/src/is11/comon.h
new file mode 100644
index 0000000..1869cf0
--- /dev/null
+++ b/myis11/src/is11/comon.h
@@ -0,0 +1,43 @@
+
+#pragma once
+#include
+
+typedef unsigned char u_char;
+/**
+ * @brief 串口写函数类型
+ *
+ */
+typedef size_t (*SERIALWRITE)(u_char* data,size_t lenth);
+/**
+ * @brief 串口读函数原型
+ *
+ */
+typedef size_t (*SERIALREAD)(u_char* data,size_t lenth);
+struct STRSensorInfo
+{
+ std::string SensorName;
+ long maxValue;
+ long BandNum;
+ std::string WavelenthStr;
+ float *wavelenthlist;
+ //double *wavelenth;
+ bool isSensorInit;
+ std::string serialnumber;
+ float a1,a2,a3,a4;
+
+};
+struct STRsensorinfo_C
+{
+char SensorName[100];
+long maxValue;
+long BandNum;
+char serialnumber[100];
+float a1,a2,a3,a4;
+u_char issensorinit;
+
+};
+
+
+
+typedef void (*PRINTFUNC)(std::string );
+
diff --git a/myis11/src/test/test.cpp b/myis11/src/test/test.cpp
new file mode 100644
index 0000000..29bb2ae
--- /dev/null
+++ b/myis11/src/test/test.cpp
@@ -0,0 +1,25 @@
+/**
+ ******************************************************************************
+ * @file : test.cpp
+ * @author : xin
+ * @brief : None
+ * @attention : None
+ * @date : 2024/8/14
+ ******************************************************************************
+ */
+
+//
+// Created by xin on 2024/8/14.
+//
+
+#include "test.h"
+#include "stdio.h"
+void test() {
+ printf("hello world sdfsdf12131321321313132\n");
+ printf("dsdf\n");
+}
+
+//int isSensorInit() {
+//
+// return 1;
+//}
\ No newline at end of file
diff --git a/myis11/src/test/test.h b/myis11/src/test/test.h
new file mode 100644
index 0000000..9bfe77f
--- /dev/null
+++ b/myis11/src/test/test.h
@@ -0,0 +1,29 @@
+/**
+ ******************************************************************************
+ * @file : test.h
+ * @author : xin
+ * @brief : None
+ * @attention : None
+ * @date : 2024/8/14
+ ******************************************************************************
+ */
+
+//
+// Created by xin on 2024/8/14.
+//
+
+#ifndef MYIS11_TEST_H
+#define MYIS11_TEST_H
+
+#include
+#include
+
+extern "C" __declspec(dllexport) std::int32_t abs1(std::int32_t n) {
+ return 100;
+}
+extern "C" {
+
+}
+extern "C" __declspec(dllexport) void test();
+
+#endif //MYIS11_TEST_H
diff --git a/package-lock.json b/package-lock.json
index 4a3976b..83c18bf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1579,12 +1579,13 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -2056,10 +2057,11 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -2292,9 +2294,10 @@
},
"node_modules/is-number": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
@@ -2571,12 +2574,13 @@
}
},
"node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.8",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
@@ -3128,9 +3132,10 @@
},
"node_modules/to-regex-range": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
@@ -4272,12 +4277,12 @@
}
},
"braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"requires": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
}
},
"cache-content-type": {
@@ -4630,9 +4635,9 @@
}
},
"fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"requires": {
"to-regex-range": "^5.0.1"
@@ -4798,7 +4803,7 @@
},
"is-number": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true
},
@@ -5027,12 +5032,12 @@
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
},
"micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.8",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"requires": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
}
},
@@ -5408,7 +5413,7 @@
},
"to-regex-range": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"requires": {
diff --git a/src-tauri/calibratefile/downgain.bin b/src-tauri/calibratefile/downgain.bin
deleted file mode 100644
index 7f53682..0000000
Binary files a/src-tauri/calibratefile/downgain.bin and /dev/null differ
diff --git a/src-tauri/calibratefile/upgain.bin b/src-tauri/calibratefile/upgain.bin
deleted file mode 100644
index 941eeb3..0000000
Binary files a/src-tauri/calibratefile/upgain.bin and /dev/null differ
diff --git a/src-tauri/config.json b/src-tauri/config.json
index 7f09fd5..f438604 100644
--- a/src-tauri/config.json
+++ b/src-tauri/config.json
@@ -1 +1 @@
-{"pathofsave":"D:\\06Learn\\rust\\tarui\\testdarta","Filename":"test","caijiavgNumber":"1","useSG":true,"usehighpass":true}
\ No newline at end of file
+{"pathofsave":"D:\\06Learn\\rust\\tarui","Filename":"testaa","caijiavgNumber":"1","useSG":false,"usehighpass":false,"Dispatcher":{"isenable":true,"begin":"14:25","end":"23:59"}}
\ No newline at end of file
diff --git a/src-tauri/src/comman.rs b/src-tauri/src/comman.rs
deleted file mode 100644
index bf1b53b..0000000
--- a/src-tauri/src/comman.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-
-use super::serport::serport::*;
-use super::mylog::*;
-
-
-#[tauri::command]
-pub fn greet(name: &str) -> String {
- format!("Hello, {}! You've been greeted from Rust!", name)
-}
- #[tauri::command]
- pub fn getportnames() -> Vec {
- get_port_name()
-}
-#[tauri::command]
-pub fn opencom(portname: serde_json::Value, baudrate: serde_json::Value) -> String {
- //tauri
- let portname = portname.as_str().unwrap();
- let baudrate = baudrate.as_u64().unwrap() as u32;
- set_port_info(&portname.to_string(), baudrate);
-
- println!("opencom portname:{} baudrate:{}", portname, baudrate);
- logtorust(format!(
- "opencom portname:{} baudrate:{}",
- portname, baudrate
- ));
- tryuseport()
-}
-#[tauri::command]
-pub fn clearportbuff() -> String {
- clearserilport()
-}
-
-#[tauri::command]
-pub fn setport(data: serde_json::Value) -> String {
- //判断是否存在portname和baudrate
- if !data.is_object() {
- return String::from("Invalid data");
- }
- if !data["portname"].is_string() || !data["baudrate"].is_u64() {
- return String::from("Invalid data");
- }
- let portname = data["portname"].as_str().unwrap();
- let baudrate = data["baudrate"].as_u64().unwrap() as u32;
- set_port_info(&portname.to_string(), baudrate);
- //println!("{}",readdatafromport(1000));
- String::from("Port set ok")
-}
-#[tauri::command]
-pub fn closecome() -> String {
- closeport()
-}
\ No newline at end of file
diff --git a/src-tauri/src/comman1.rs b/src-tauri/src/comman1.rs
new file mode 100644
index 0000000..49e8d07
--- /dev/null
+++ b/src-tauri/src/comman1.rs
@@ -0,0 +1,38 @@
+
+use super::serport::serport::*;
+use super::mylog::*;
+
+
+#[tauri::command]
+pub fn greet(name: &str) -> String {
+ format!("Hello, {}! You've been greeted from Rust!", name)
+}
+ #[tauri::command]
+ pub fn getportnames() -> Vec {
+ get_port_name()
+
+}
+// #[tauri::command]
+// pub fn opencom(portname: serde_json::Value, baudrate: serde_json::Value) -> String {
+// //tauri
+// let portname = portname.as_str().unwrap();
+// let baudrate = baudrate.as_u64().unwrap() as u32;
+// set_port_info(&portname.to_string(), baudrate);
+
+// println!("opencom portname:{} baudrate:{}", portname, baudrate);
+// logtorust(format!(
+// "opencom portname:{} baudrate:{}",
+// portname, baudrate
+// ));
+// tryuseport()
+// }
+#[tauri::command]
+pub fn clearportbuff() -> String {
+ clearserilport()
+}
+
+
+#[tauri::command]
+pub fn closecome() -> String {
+ closeport()
+}
\ No newline at end of file
diff --git a/src-tauri/src/irishypersptral/mod.rs b/src-tauri/src/irishypersptral/mod.rs
index 8661efe..bb31711 100644
--- a/src-tauri/src/irishypersptral/mod.rs
+++ b/src-tauri/src/irishypersptral/mod.rs
@@ -55,6 +55,11 @@ pub fn savecalibratefile_iris(gain: Vec, shutter: u32, direction: bool, fil
pub fn sendcalibratetodev_iris(gain: Vec, shutter: u32, direction: bool) -> String {
let mut data = IS11DataStruct::default();
+ if gain.len() != data.data.len() {
+ logtorust(format!["Gain data length error"]);
+ return "Gain data length error".to_string();
+
+ }
data.data = gain.as_slice().try_into().unwrap();
data.shutter_time = shutter as u32;
data.direction = if direction { 1 } else { 0 };
diff --git a/src-tauri/src/jianzhiis11/is11base.rs b/src-tauri/src/jianzhiis11/is11base.rs
index a4524ab..590d921 100644
--- a/src-tauri/src/jianzhiis11/is11base.rs
+++ b/src-tauri/src/jianzhiis11/is11base.rs
@@ -93,9 +93,14 @@ pub fn _is11_opt_snenser(percent: i32) -> i32 {
pub fn is11_get_data(shuttertime: i32) -> Vec {
let mut outdata: Vec = vec![0; 2048];
+
unsafe {
+
let len = IS11GetData(outdata.as_mut_ptr(), shuttertime);
outdata.truncate(len as usize);
+
+
}
+
outdata
}
diff --git a/src-tauri/src/jianzhiis11/is11server.rs b/src-tauri/src/jianzhiis11/is11server.rs
index 958c373..7c9a6ee 100644
--- a/src-tauri/src/jianzhiis11/is11server.rs
+++ b/src-tauri/src/jianzhiis11/is11server.rs
@@ -1,7 +1,7 @@
use super::is11base;
use super::super::mydefine::*;
use lazy_static::lazy_static;
-use chrono::{self, Datelike, Timelike};
+use chrono::{self, format, Datelike, Timelike};
use std::thread;
#[derive(PartialEq)]
enum WorkStat {
@@ -12,6 +12,7 @@ enum WorkStat {
}
+
use std::{
sync::{Arc, Mutex},
};
@@ -19,7 +20,15 @@ struct is11_dev_data {
sensor_info: is11base::STRSensorInfo,
shuttertime: i32,
stat: WorkStat,
+ percent: i32,
workname: String,
+ hasdark: bool,
+ hasflat: bool,
+ removedark: bool,
+ computeflat: bool,
+ average_number_data: u32,
+ average_number_dark: u32,
+ average_number_flat: u32,
}
@@ -28,7 +37,16 @@ lazy_static! {
sensor_info: is11base::STRSensorInfo::default(),
shuttertime: 0,
stat: WorkStat::IDLE,
+ percent: 0,
workname: "noting".to_string(),
+ hasdark: false,
+ hasflat: false,
+ removedark: false,
+ computeflat: true,
+ average_number_data: 1,
+ average_number_dark: 1,
+ average_number_flat: 1,
+
}));
}
@@ -64,6 +82,7 @@ pub fn opt_sensor(percent: i32) -> i32 {
}
dev_stat.stat=WorkStat::OPTING;
+ dev_stat.percent=0;
dev_stat.workname="opting".to_string();
drop(dev_stat); //释放锁
thread::spawn(move || {
@@ -73,6 +92,9 @@ pub fn opt_sensor(percent: i32) -> i32 {
dev_statnow.stat=WorkStat::IDLE;
dev_statnow.shuttertime=shuttertime;
dev_statnow.workname="finish".to_string();
+ dev_statnow.percent=100;
+ dev_statnow.hasdark=false;
+ dev_statnow.hasflat=false;
}
);
@@ -83,22 +105,22 @@ pub fn opt_sensor(percent: i32) -> i32 {
}
-pub fn get_now_stat()->(String,String){
+pub fn get_now_stat()->(String,String,i32){
let mut dev_stat=DEV_STAT.lock().unwrap();
match dev_stat.stat {
WorkStat::IDLE => {
- return ("finish".to_string(),dev_stat.workname.clone());
+ return ("finish".to_string(),dev_stat.workname.clone(),100);
},
WorkStat::WOKING => {
- return ("working".to_string(),dev_stat.workname.clone());
+ return ("working".to_string(),dev_stat.workname.clone(),dev_stat.percent);
},
WorkStat::STOP => {
- return ("finish".to_string(),dev_stat.workname.clone());
+ return ("finish".to_string(),dev_stat.workname.clone(),dev_stat.percent);
},
WorkStat::OPTING => {
- return ("opting".to_string(),dev_stat.workname.clone());
+ return ("opting".to_string(),dev_stat.workname.clone(),dev_stat.percent);
},
}
@@ -106,17 +128,36 @@ pub fn get_now_stat()->(String,String){
}
-pub fn collect(shuttertime:u32){
+pub fn collect(shuttertime:u32,removedark:bool,computeflat:bool){
let mut dev_stat=DEV_STAT.lock().unwrap();
if dev_stat.stat != WorkStat::IDLE {
return ;
}
+
+ let averagenumber=dev_stat.average_number_data;
dev_stat.stat=WorkStat::WOKING;
+ dev_stat.percent=0;
+
dev_stat.workname="采集中".to_string();
drop(dev_stat); //释放锁
thread::spawn(move || {
+
- let data=is11base::is11_get_data(shuttertime as i32);
+ let mut datasum:Vec=vec![0;2048];
+ for _i in 0..averagenumber {
+ let data=is11base::is11_get_data(shuttertime as i32);
+ for i in 0..2048 {
+ datasum[i]=datasum[i]+data[i] as u32;
+ }
+ let mut dev_stat=DEV_STAT.lock().unwrap();
+ let info=format!("采集中,{}%",_i as f32/averagenumber as f32*100 as f32*0.9);
+ dev_stat.workname=info;
+ dev_stat.percent=((_i+1) as f32/averagenumber as f32*100 as f32*0.9) as i32;
+ drop(dev_stat); //释放锁
+
+
+ }
+ let data=datasum.iter().map(|x| *x as f32/averagenumber as f32).collect::>();
let mut dev_stat=DEV_STAT.lock().unwrap();
let _lenth=data.len();
println!("data len={}",_lenth);
@@ -137,8 +178,41 @@ pub fn collect(shuttertime:u32){
tempis11data.datatype=0;
let mut data1=DATA_IS11.lock().unwrap();
+ let darkdata=DARK_DATA.lock().unwrap();
*data1=tempis11data;
+ if removedark && dev_stat.hasdark {
+
+ for i in 0.._lenth {
+ data1.data[i]=data1.data[i]-darkdata.data[i];
+
+ }
+ }
+
+ if computeflat && dev_stat.hasflat {
+ let flatdata=FLAT_DATA.lock().unwrap();
+ for i in 0.._lenth {
+
+ let temp=flatdata.data[i]-darkdata.data[i];
+ if temp<=0.0 {
+ data1.data[i]=10000.0;
+ }else{
+ data1.data[i]=data1.data[i]/temp*10000.0;
+ }
+ if data1.data[i]<0.0 {
+ data1.data[i]=0.0;
+
+ }
+ if data1.data[i]>15000.0 {
+ data1.data[i]=15000.0;
+ }
+
+ // data1.data[i]=data1.data[i]/(flatdata.data[i]-darkdata.data[i])*10000.0;
+ }
+ }
+
+
dev_stat.stat=WorkStat::IDLE;
+ dev_stat.percent=100;
dev_stat.workname="finish".to_string();
});
@@ -154,12 +228,27 @@ pub fn collcect_dark(shuttertime:u32)
if dev_stat.stat != WorkStat::IDLE {
return ;
}
+ let averagenumber=dev_stat.average_number_dark;
dev_stat.stat=WorkStat::WOKING;
- dev_stat.workname="采集中".to_string();
+ dev_stat.percent=0;
+ dev_stat.workname="采集Dark中".to_string();
drop(dev_stat); //释放锁
thread::spawn(move || {
+ let mut datasum:Vec=vec![0;2048];
+ for _i in 0..averagenumber {
+ let data=is11base::is11_get_data(shuttertime as i32);
+ for i in 0..2048 {
+ datasum[i]=datasum[i]+data[i] as u32;
+ }
+ let mut dev_stat=DEV_STAT.lock().unwrap();
+ let info=format!("采集Dark中,{}%",_i as f32/averagenumber as f32*100 as f32*0.9);
+ dev_stat.workname=info;
+ dev_stat.percent=((_i+1) as f32/averagenumber as f32*100 as f32*0.9) as i32;
+ drop(dev_stat); //释放锁
+ }
+ let data=datasum.iter().map(|x| *x as f32/averagenumber as f32).collect::>();
+
- let data=is11base::is11_get_data(shuttertime as i32);
let mut dev_stat=DEV_STAT.lock().unwrap();
let _lenth=data.len();
println!("data len={}",_lenth);
@@ -182,7 +271,9 @@ pub fn collcect_dark(shuttertime:u32)
let mut data1=DARK_DATA.lock().unwrap();
*data1=tempis11data;
dev_stat.stat=WorkStat::IDLE;
+ dev_stat.percent=100;
dev_stat.workname="finish".to_string();
+ dev_stat.hasdark=true;
});
@@ -194,12 +285,26 @@ pub fn collcect_flat(shuttertime:u32)
if dev_stat.stat != WorkStat::IDLE {
return ;
}
+ let averagenumber=dev_stat.average_number_flat;
dev_stat.stat=WorkStat::WOKING;
+ dev_stat.percent=0;
dev_stat.workname="采集中".to_string();
drop(dev_stat); //释放锁
thread::spawn(move || {
+ let mut datasum:Vec=vec![0;2048];
+ for _i in 0..averagenumber {
+ let data=is11base::is11_get_data(shuttertime as i32);
+ for i in 0..2048 {
+ datasum[i]=datasum[i]+data[i] as u32;
+ }
+ let mut dev_stat=DEV_STAT.lock().unwrap();
+ let info=format!("采集白板中,{}%",_i as f32/averagenumber as f32*100 as f32*0.9);
+ dev_stat.workname=info;
+ dev_stat.percent=((_i+1) as f32/averagenumber as f32*100 as f32*0.9) as i32;
+ drop(dev_stat); //释放锁
+ }
+ let data=datasum.iter().map(|x| *x as f32/averagenumber as f32).collect::>();
- let data=is11base::is11_get_data(shuttertime as i32);
let mut dev_stat=DEV_STAT.lock().unwrap();
let _lenth=data.len();
println!("data len={}",_lenth);
@@ -222,7 +327,9 @@ pub fn collcect_flat(shuttertime:u32)
let mut data1=FLAT_DATA.lock().unwrap();
*data1=tempis11data;
dev_stat.stat=WorkStat::IDLE;
+ dev_stat.percent=100;
dev_stat.workname="finish".to_string();
+ dev_stat.hasflat=true;
});
}
@@ -230,4 +337,31 @@ pub fn collcect_flat(shuttertime:u32)
pub fn get_data()->IS11DataStruct{
let data1=DATA_IS11.lock().unwrap();
return data1.clone();
+}
+pub fn get_data_flat()->IS11DataStruct{
+ let data1=FLAT_DATA.lock().unwrap();
+ return data1.clone();
+}
+pub fn get_data_dark()->IS11DataStruct{
+ let data1=DARK_DATA.lock().unwrap();
+ return data1.clone();
+}
+pub fn get_is_computeref()->bool{
+ let dev_stat=DEV_STAT.lock().unwrap();
+ return dev_stat.computeflat;
+}
+
+pub fn set_shutter_time(shuttertime:u32){
+ let mut dev_stat=DEV_STAT.lock().unwrap();
+ dev_stat.shuttertime=shuttertime as i32;
+ dev_stat.hasdark=false;
+ dev_stat.hasflat=false;
+}
+
+
+pub fn set_average_number(arverage_number_data:u32,arverage_number_dark:u32,arverage_number_flat:u32){
+ let mut dev_stat=DEV_STAT.lock().unwrap();
+ dev_stat.average_number_data=arverage_number_data;
+ dev_stat.average_number_dark=arverage_number_dark;
+ dev_stat.average_number_flat=arverage_number_flat;
}
\ No newline at end of file
diff --git a/src-tauri/src/jianzhiis11/mod.rs b/src-tauri/src/jianzhiis11/mod.rs
index bf46242..fc61ce5 100644
--- a/src-tauri/src/jianzhiis11/mod.rs
+++ b/src-tauri/src/jianzhiis11/mod.rs
@@ -1,23 +1,26 @@
use super::mydefine::*;
-pub mod is11server;
pub mod is11base;
+pub mod is11server;
+use super::mylog::*;
+use is11server::get_shuttertime;
use serde_json::json;
use std::ffi::CStr;
-use super::mylog::*;
-
-
-
-
-
pub fn sendtoport_andgetreturn(
data: serde_json::Value,
datatype: serde_json::Value,
) -> Result {
-
let command = data.get("command").unwrap().to_string();
-
+ println!("start_collect data:{}", data.to_string());
match command.as_str() {
+
+ "\"start_collect_flat\"" => {
+ return start_collect_flat(data, datatype);
+ },
+
+ "\"start_collect_dark\"" => {
+ return start_collect_dark(data, datatype);
+ },
"\"get_sensor_info\"" => {
is11base::is11_init();
logtorust("init is11 ok".to_string());
@@ -27,7 +30,7 @@ pub fn sendtoport_andgetreturn(
let serilnumber_cstr = unsafe { CStr::from_ptr(sensor_info.serialnumber.as_ptr()) };
let serilnumber = serilnumber_cstr.to_str().unwrap();
//定义一个json对象
- let jsonforret= json!({
+ let jsonforret = json!({
"bochangxishu":{
"a0":sensor_info.a1,
"a1":sensor_info.a2,
@@ -35,22 +38,25 @@ pub fn sendtoport_andgetreturn(
"a3":sensor_info.a4,
},
"serialnumber":serilnumber,
- "name":sensor_name,
+
+ "name":"IS11",
+ // "name":sensor_name,
"version":"1.0.0",
"return_data_type":0,
"work_mode":"advanced_mode",
+ "sensor":"JZ-IS11",
});
- logtorust(format!("get_sensor_info:{}",jsonforret.to_string()));
+ logtorust(format!("get_sensor_info:{}", jsonforret.to_string()));
return Ok(RetStruct {
datatype: 0,
content: jsonforret.to_string(),
- data:IS11DataStruct::default() ,
+ data: IS11DataStruct::default(),
});
}
"\"start_opt\"" => {
is11server::opt_sensor(90);
- let jsonforret= json!({
+ let jsonforret = json!({
"command":"start_opt"
});
@@ -59,82 +65,139 @@ pub fn sendtoport_andgetreturn(
content: jsonforret.to_string(),
data: IS11DataStruct::default(),
});
-
-
}
"\"get_opt\"" => {
println!("get_opt");
- let ret=get_opt_result();
+ let ret = get_opt_result();
return ret;
-
}
"\"start_collect\"" => {
- return start_collect(data,datatype);
-
+ return start_collect(data, datatype);
}
-
- "\"get_caiji_state\"" =>{
- let (caiji_state,caiji_state_str)=is11server::get_now_stat();
- let jsonforret= json!({
+
+ "\"get_caiji_state\"" => {
+ let (caiji_state, caiji_state_str,percent) = is11server::get_now_stat();
+ let jsonforret = json!({
"caiji_state":caiji_state,
"info":caiji_state_str,
+ "percent":percent,
"return_data_type":0,
});
- logtorust(format!("get_caiji_state:{}",jsonforret.to_string()));
+ logtorust(format!("get_caiji_state:{}", jsonforret.to_string()));
return Ok(RetStruct {
datatype: 0,
content: jsonforret.to_string(),
- data:IS11DataStruct::default() ,
+ data: IS11DataStruct::default(),
});
-
- }
- "\"get_data\""=>{
- return get_data(data,datatype);
}
+ "\"get_data\"" => {
+ return get_data(data, datatype);
+ },
+ "\"get_data_flat\"" => {
+ return get_data_flat(data, datatype);
+ },
+ "\"get_data_dark\"" => {
+ return get_data_dark(data, datatype);
+ },
+ "\"set_shutter_time\"" => {
+ return set_shutter_time(data, datatype);
+ },
_ => {
- return Err("command not found ".to_string()+"command is:"+&command);
+ return Err("command not found ".to_string() + "command is:" + &command);
}
}
-
-
-
-
-
- return Ok(RetStruct {
- datatype: 0,
- content: "指令未实现".to_string(),
- data: IS11DataStruct::default(),
- });
-
-
}
-
pub fn get_opt_result() -> Result {
-
-
let shuttertime = is11server::get_shuttertime();
let jsonret = json!({
"opt":shuttertime,
});
+
+
+
return Ok(RetStruct {
datatype: 0,
content: jsonret.to_string(),
data: IS11DataStruct::default(),
});
-
}
-
-pub fn start_collect( data: serde_json::Value,
+pub fn set_shutter_time(data: serde_json::Value,
datatype: serde_json::Value) -> Result {
- let shuttertime = data.get("shutter_time").unwrap().as_u64().unwrap() as u32;
- logtorust(format!("start_collect,shutter time is:{}",shuttertime));
- is11server::collect(shuttertime);
+
+ let shuttertime: u32;
+ if data.get("shutter_time").is_none() {
+ shuttertime = get_shuttertime() as u32;
+ } else {
+ shuttertime = data.get("shutter_time").unwrap().as_u64().unwrap() as u32;
+ is11server::set_shutter_time(shuttertime);
+ }
+
+
+ let jsonret = json!({
+ "shuttertime":"ok",
+
+ });
+
+
+
+ return Ok(RetStruct {
+ datatype: 0,
+ content: jsonret.to_string(),
+ data: IS11DataStruct::default(),
+ });
+}
+pub fn start_collect(
+ data: serde_json::Value,
+ datatype: serde_json::Value,
+) -> Result {
+
+
+ let shuttertime: u32;
+ if data.get("shutter_time").is_none() {
+ shuttertime = get_shuttertime() as u32;
+ } else {
+ shuttertime = data.get("shutter_time").unwrap().as_u64().unwrap() as u32;
+ }
+ //判断是否有这个参数
+
+ let removedark: bool;
+ if data.get("remove_dark").is_none() {
+ removedark = false;
+ } else {
+ if data.get("remove_dark").unwrap().is_boolean() {
+ removedark = data.get("remove_dark").unwrap().as_bool().unwrap();
+ } else if data.get("remove_dark").unwrap().is_string() {
+ let remove_dark_str = data.get("remove_dark").unwrap().as_str().unwrap();
+ if remove_dark_str == "yes" {
+ removedark = true;
+ } else {
+ removedark = false;
+ }
+ } else {
+ removedark = false;
+ }
+ }
+
+ let computeflat = is11server::get_is_computeref();
+ logtorust(format!("start_collect,shutter time is:{}", shuttertime));
+ if !data.get("collect_times").is_none() {
+ if data.get("collect_times").unwrap().is_u64() {
+ let collect_times = data.get("collect_times").unwrap().as_u64().unwrap() as u32;
+ is11server::set_average_number(collect_times,collect_times,collect_times );
+ }
+
+
+
+ }
+
+
+ is11server::collect(shuttertime, removedark, computeflat);
let jsonret = json!({
"command":"start_collect"
@@ -144,26 +207,116 @@ pub fn start_collect( data: serde_json::Value,
content: jsonret.to_string(),
data: IS11DataStruct::default(),
});
+}
+
+pub fn start_collect_dark(
+ data: serde_json::Value,
+ datatype: serde_json::Value,
+) -> Result {
+ let shuttertime: u32;
+ if data.get("shutter_time").is_none() {
+ shuttertime = get_shuttertime() as u32;
+ } else {
+ shuttertime = data.get("shutter_time").unwrap().as_u64().unwrap() as u32;
+ }
+ //判断是否有这个参数
+ if !data.get("collect_times").is_none() {
+ if data.get("collect_times").unwrap().is_u64() {
+ let collect_times = data.get("collect_times").unwrap().as_u64().unwrap() as u32;
+ is11server::set_average_number(collect_times,collect_times,collect_times );
+ }
+ }
+
+ is11server::collcect_dark(shuttertime);
+ let jsonret = json!({
+ "command":"start_collect_dark"
+
+ });
+ return Ok(RetStruct {
+ datatype: 0,
+ content: jsonret.to_string(),
+ data: IS11DataStruct::default(),
+ });
}
-pub fn get_data( data: serde_json::Value,
- datatype: serde_json::Value) -> Result {
+pub fn start_collect_flat(
+ data: serde_json::Value,
+ datatype: serde_json::Value,
+) -> Result {
+ let shuttertime: u32;
+ if data.get("shutter_time").is_none() {
+ shuttertime = get_shuttertime() as u32;
+ } else {
+ shuttertime = data.get("shutter_time").unwrap().as_u64().unwrap() as u32;
+ }
+ //判断是否有这个参数
+ if !data.get("collect_times").is_none() {
+ if data.get("collect_times").unwrap().is_u64() {
+ let collect_times = data.get("collect_times").unwrap().as_u64().unwrap() as u32;
+ is11server::set_average_number(collect_times,collect_times,collect_times );
+ }
+ }
- let is11_data=is11server::get_data() ;
-
+ is11server::collcect_flat(shuttertime);
+ let jsonret = json!({
+ "command":"start_collect_flat"
+ });
+ return Ok(RetStruct {
+ datatype: 0,
+ content: jsonret.to_string(),
+ data: IS11DataStruct::default(),
+ });
+
+}
+
+
+
+
+
+pub fn get_data(data: serde_json::Value, datatype: serde_json::Value) -> Result {
+ let is11_data = is11server::get_data();
let jsonret = json!({
"command":"get_data"
});
+ return Ok(RetStruct {
+ datatype: 2,
+ content: jsonret.to_string(),
+ data: is11_data,
+ });
+}
+
+pub fn get_data_flat(data: serde_json::Value, datatype: serde_json::Value) -> Result {
+ let is11_data = is11server::get_data_flat();
+
+ let jsonret = json!({
+ "command":"get_data_flat"
+
+ });
return Ok(RetStruct {
datatype: 2,
- content:jsonret.to_string(),
+ content: jsonret.to_string(),
data: is11_data,
});
- }
\ No newline at end of file
+}
+
+pub fn get_data_dark(data: serde_json::Value, datatype: serde_json::Value) -> Result {
+ let is11_data = is11server::get_data_dark();
+
+ let jsonret = json!({
+ "command":"get_data_dark"
+
+ });
+
+ return Ok(RetStruct {
+ datatype: 2,
+ content: jsonret.to_string(),
+ data: is11_data,
+ });
+}
\ No newline at end of file
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
index e46ab1e..8aa1e3d 100644
--- a/src-tauri/src/main.rs
+++ b/src-tauri/src/main.rs
@@ -6,27 +6,90 @@ mod mylog;
mod serport;
mod irishypersptral;
mod mydefine;
-mod comman;
+mod comman1;
mod jianzhiis11;
-use comman::*;
+use comman1::*;
use algorithm::interpolate_spline;
use algorithm::sg_smooth;
use mydefine::*;
+enum DevName {
+ IRIS_IS11,
+ JZ_IS11
+
+}
+use lazy_static::lazy_static;
+use tauri::api::version;
+use std::sync::Mutex;
+use std::sync::Arc;
+//设置一个可修改的全局变量
+lazy_static! {
+ static ref DEVNAME: Mutex = Mutex::new(DevName::IRIS_IS11);
+}
-
-
+#[tauri::command]
+ fn setport(data: serde_json::Value) -> String {
+ //判断是否存在portname和baudrate
+ if !data.is_object() {
+ return String::from("Invalid data");
+ }
+ if !data["portname"].is_string() || !data["baudrate"].is_u64() {
+ return String::from("Invalid data");
+ }
+ let portname = data["portname"].as_str().unwrap();
+ let baudrate = data["baudrate"].as_u64().unwrap() as u32;
+ serport::serport::set_port_info(&portname.to_string(), baudrate);
+ //println!("{}",readdatafromport(1000));
+ String::from("Port set ok")
+}
#[tauri::command]
fn savecalibratefile(gain: Vec, shutter: u32, direction: bool, filepath: String) -> String {
- irishypersptral::savecalibratefile_iris(gain, shutter, direction, filepath)
+ let devname=DEVNAME.lock().unwrap();
+ match *devname {
+ DevName::IRIS_IS11=>{
+ return irishypersptral::savecalibratefile_iris(gain, shutter, direction, filepath);
+ },
+ DevName::JZ_IS11=>{
+ return irishypersptral::savecalibratefile_iris(gain, shutter, direction, filepath);
+ //return jianzhiis11::s(gain, shutter, direction, filepath);
+ }
+
+ }
+ //irishypersptral::savecalibratefile_iris(gain, shutter, direction, filepath)
}
#[tauri::command]
-fn sendcalibratetodev(gain: Vec, shutter: u32, direction: bool) -> String {
- irishypersptral::sendcalibratetodev_iris(gain, shutter, direction)
+fn sendcalibratetodev(gain: Vec, shutter: u32, direction: u32) -> String {
+ let devname=DEVNAME.lock().unwrap();
+ println!("sendcalibratetodev");
+ match *devname {
+ DevName::IRIS_IS11=>{
+ return irishypersptral::sendcalibratetodev_iris(gain, shutter, direction !=0);
+ },
+ DevName::JZ_IS11=>{
+ return irishypersptral::sendcalibratetodev_iris(gain, shutter, direction !=0);
+ //return jianzhiis11::s(gain, shutter, direction, filepath);
+ }
+
+ }
+
+
+
+ //irishypersptral::sendcalibratetodev_iris(gain, shutter, direction)
}
+
+
+
+
+
+
+
+
+
+
+
#[tauri::command]
fn __sendto_portbinary(data: Vec, command: u8) -> String {
irishypersptral::sendtoportbinary_iris(data, command)
@@ -42,13 +105,53 @@ fn readformport(commanid: serde_json::Value, wait_time_json: serde_json::Value)
irishypersptral::readformport_iris(commanid, wait_time_json)
}
+#[tauri::command]
+ fn opencom(portname: serde_json::Value, baudrate: serde_json::Value) -> String {
+ //tauri
+ let portname = portname.as_str().unwrap();
+ let devname=DEVNAME.lock().unwrap();
+ let mut baudrate :u32=0;
+ match *devname {
+ DevName::IRIS_IS11=>{
+ baudrate =115200 as u32;
+ },
+ DevName::JZ_IS11=>{
+ baudrate =921600 as u32;
+
+ }
+
+ }
+
+ // let baudrate = baudrate.as_u64().unwrap() as u32;
+ serport::serport::set_port_info(&portname.to_string(), baudrate);
+
+ println!("opencom portname:{} baudrate:{}", portname, baudrate);
+ mylog::logtorust(format!(
+ "opencom portname:{} baudrate:{}",
+ portname, baudrate
+ ));
+ serport::serport::tryuseport()
+}
#[tauri::command]
fn sendtoport_andgetreturn(
data: serde_json::Value,
datatype: serde_json::Value,
) -> Result {
//irishypersptral::sendtoport_andgetreturn_iris(data, datatype)
- jianzhiis11::sendtoport_andgetreturn(data, datatype)
+ //irishypersptral::sendtoport_andgetreturn_iris(data, datatype)
+ let devname=DEVNAME.lock().unwrap();
+ match *devname {
+ DevName::IRIS_IS11=>{
+ return irishypersptral::sendtoport_andgetreturn_iris(data, datatype);
+ },
+ DevName::JZ_IS11=>{
+ return jianzhiis11::sendtoport_andgetreturn(data, datatype);
+ }
+
+ }
+
+
+ //jianzhiis11::sendtoport_andgetreturn(data, datatype)
}
@@ -69,7 +172,6 @@ fn main() {
greet,
getportnames,
opencom,
- setport,
closecome,
sendtoport_andgetreturn,
readformport,
@@ -83,7 +185,18 @@ fn main() {
algorithm::find_peek
])
.setup(|app| {
+
+
+
+ let config = app.config();
+
+
+ // 打印配置信息,例如窗口标题
+ let producnaem = config.package.product_name.clone().unwrap();
+ let version=config.package.version.clone().unwrap();
+ println!("producnaem:{:?}", producnaem);
let main_window = app.get_window("main").unwrap();
+ main_window.set_title(&(producnaem+"_v"+&version));
// 获取屏幕大小
if let Some(monitor) = main_window.primary_monitor().unwrap() {
diff --git a/src-tauri/src/mydefine/mod.rs b/src-tauri/src/mydefine/mod.rs
index af1048e..5128a92 100644
--- a/src-tauri/src/mydefine/mod.rs
+++ b/src-tauri/src/mydefine/mod.rs
@@ -25,6 +25,9 @@ pub struct IS11DataStruct {
pub hour:u8,
pub minute:u8,
pub second:u8,
+ pub nca:u8,
+ pub ncb:u8,
+ pub ncc:u8,
pub shutter_time: u32,
pub index: u64,
pub temprature: [f32; 8],
@@ -45,7 +48,9 @@ pub struct IS11DataStruct {
hour:0,
minute:0,
second:0,
-
+ nca:0,
+ ncb:0,
+ ncc:0,
shutter_time: 0,
index: 0,
temprature: [0.0; 8],
@@ -67,6 +72,10 @@ impl IS11DataStruct {
hour: self.hour,
minute: self.minute,
second: self.second,
+ nca:self.nca,
+ ncb:self.ncb,
+ ncc:self.ncc,
+
shutter_time: self.shutter_time,
index: self.index,
temprature: self.temprature,
diff --git a/src-tauri/src/serport/serport.rs b/src-tauri/src/serport/serport.rs
index c4523eb..7607bf4 100644
--- a/src-tauri/src/serport/serport.rs
+++ b/src-tauri/src/serport/serport.rs
@@ -57,7 +57,10 @@ pub fn set_port_info(portname: &String, baudrate: u32) {
pub fn get_port_name() -> Vec {
let ports = serialport::available_ports().expect("No ports found!");
+ println!("Available ports:{}", ports.len());
let mut portnames: Vec = Vec::new();
+ println!("{}",portnames.len() );
+ // portnames.push("COM5".to_string());
for p in ports {
portnames.push(p.port_name);
}
@@ -91,7 +94,8 @@ pub fn closeport() -> String {
//关闭端口
port_info.port = None;
println!("Port is closed");
- String::from("Port is closed")
+ String::from("串口已关闭")
+ //String::from("Port is closed")
}
pub fn sendtoprot(data: Vec) -> String {
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index 8031c1f..03f8f64 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -10,7 +10,7 @@
"package": {
"productName": "SpectralPlot",
- "version": "0.5.1"
+ "version": "0.5.57"
},
"tauri": {
@@ -24,6 +24,7 @@
"open": true
},
"fs": {
+
"scope": ["**"],
"all": true
@@ -65,11 +66,11 @@
},
"icon": [
- "icons/1.jpg",
- "icons/1.jpg",
- "icons/1.jpg",
- "icons/1.jpg",
- "icons/1.jpg"
+ "icons/icon.ico",
+ "icons/icon.ico",
+ "icons/icon.ico",
+ "icons/icon.ico",
+ "icons/icon.ico"
]
}
diff --git a/src/apphymain.js b/src/apphymain.js
index e66242f..8bca6e3 100644
--- a/src/apphymain.js
+++ b/src/apphymain.js
@@ -8,6 +8,7 @@ import SetName from "./components/menubox/SetName.vue";
import SetWorkmode from "./components/menubox/SetWorkmode.vue";
import setCalibrate from "./components/menubox/SetCalibrate.vue";
import Greet from "./components/Greet.vue";
+import EventBus from "./eventBus.js";
import {$ref} from "vue3-json-editor/dist/vue3-json-editor.cjs.js";
//引入
@@ -15,7 +16,7 @@ export default {
async onmenuclicked(command){
console.log("menuclicked main "+command.name)
- if (command.type=="Set")
+ if (command.type=="Set" )
{
if (!this.isDevOpen())
{
@@ -86,6 +87,16 @@ export default {
}
+
+ if (command.type=="Work")
+ {
+ if (!this.isDevOpen())
+ {
+ return;
+ }
+ EventBus.emit('LetSiderDo',command.name);
+ }
+
diff --git a/src/components/HyperSpectralMainView.vue b/src/components/HyperSpectralMainView.vue
index ea36dce..4898c31 100644
--- a/src/components/HyperSpectralMainView.vue
+++ b/src/components/HyperSpectralMainView.vue
@@ -10,6 +10,7 @@ import eventBus from "../eventBus.js";
this.initChart();
eventBus.on("plotsetwavelength",this.setwavelength);
eventBus.on('setprogressbar',this.setprogressbar);
+ eventBus.on('setplotname',this.setplotname);
},
data() {
diff --git a/src/components/HyperSpectralMethod.js b/src/components/HyperSpectralMethod.js
index f10b68d..ecb13e7 100644
--- a/src/components/HyperSpectralMethod.js
+++ b/src/components/HyperSpectralMethod.js
@@ -48,12 +48,44 @@ export default {
let chart = echarts.getInstanceByDom(chartDom);
chart.setOption(this.option);
},
+ setplotname(params){
+ this.option.series[0].name=params.up;
+ this.option.legend.data[0]=params.up;
+ if (typeof params.donw!="undefined")
+ {
+ this.option.series[1].name=params.donw;
+ this.option.legend.data[1]=params.donw;
+ }else{
+ //如果大于1个数据 则删最后一个
+ if (this.option.series.length>1)
+ {
+ this.option.series.pop();
+ this.option.legend.data.pop();
+ }
+
+ }
+
+ const chartDom = this.$refs.chart;
+ let chart = echarts.getInstanceByDom(chartDom);
+ chart.setOption(this.option);
+
+ },
plotGraph(data, index) {
-
+ if (index>=1&&this.option.series.length < 2) {
+ this.option.series.push({
+ data: [], // 使用二维数组表示数据点的坐标
+ type: 'line',
+ name: 'DOWN',
+ symbol: 'none', // 不显示数据点
+ smooth: false, // 不使用平滑处理
+ //step: 'start' // 设置 step 类型的起始位置
+ });
+ }
this.option.series[index].data = data;
+
const chartDom = this.$refs.chart;
@@ -132,7 +164,8 @@ export default {
left: '5%',
right: '5%',
bottom: '5%',
- top: '5%'
+ top: '5%',
+
},
// visualMap: [
// {
@@ -163,7 +196,7 @@ export default {
// },
series: [
{
- data: [[1, 150], [2, 230], [3, 224], [4, 218], [5, 135], [6, 147], [7, 260]], // 使用二维数组表示数据点的坐标
+ data: [], // 使用二维数组表示数据点的坐标
type: 'line',
name: 'UP',
symbol: 'none', // 不显示数据点
@@ -171,7 +204,7 @@ export default {
// step: 'start' // 设置 step 类型的起始位置
},
{
- data: [[1, 150], [2, 230], [3, 224], [4, 218], [5, 135], [6, 147], [7, 260]], // 使用二维数组表示数据点的坐标
+ data: [], // 使用二维数组表示数据点的坐标
type: 'line',
name: 'DOWN',
symbol: 'none', // 不显示数据点
@@ -207,7 +240,18 @@ export default {
console.log("resize")
const chartDom = this.$refs.chart;
let chart = echarts.getInstanceByDom(chartDom);
- chart.resize()
+ chart.resize();
+ let width=chartDom.clientWidth;
+ if (width<800)
+ {
+ let option =this.option;
+ option.grid.left="10%";
+ chart.setOption(option);
+ }else{
+ let option =this.option;
+ option.grid.left="5%";
+ chart.setOption(option);
+ }
},
diff --git a/src/components/SerialPort/SerialportMethod.js b/src/components/SerialPort/SerialportMethod.js
index b42cf4e..68eb1a4 100644
--- a/src/components/SerialPort/SerialportMethod.js
+++ b/src/components/SerialPort/SerialportMethod.js
@@ -28,6 +28,50 @@ async function Dev_Opt() {
}
+
+async function Get_Data_from_dev(Datatype) {
+
+ let drection=Datatype;
+ //获取数据 UPDN
+ let data = {
+ data: {
+ command: "get_data",
+ return_data_type: CommanDeffine.DataTypeforSend.UpDN
+ },
+ datatype: "json"
+ }
+ if(drection=="UP")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.UpDN;
+ }else if(drection=="DOWN")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.DOWNDN;
+ } else if (drection=="DARK")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.UpDarkDN;
+ } else if (drection=="RAD_UP")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.UpRadiance;
+ } else if (drection=="RAD_DOWN")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.DownRadiance;
+ }
+ else if (drection=="REF")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.Ref;
+
+ }
+
+ let message=await invoke("sendtoport_andgetreturn",data);
+ while (message.datatype!=0x02)
+ {
+ message=await invoke("sendtoport_andgetreturn",data);
+ }
+ return message.data
+}
+
+
+
async function Get_Date_on_Derction(drection,shuttertimes,autoremovedark=false,avgnumber=1) {
@@ -37,12 +81,12 @@ async function Get_Date_on_Derction(drection,shuttertimes,autoremovedark=false,
datatype:"json"
}
data.data.command="start_collect";
- if (drection=="UP")
+ if (drection=="UP" || drection == "RAD_UP")
{
data.data.direction="up";
data.data.shutter_time=Number(shuttertimes);
- }else if (drection=="DOWN")
+ }else if (drection=="DOWN"||drection == "RAD_DOWN")
{
data.data.direction="down";
data.data.shutter_time=Number(shuttertimes);
@@ -77,6 +121,65 @@ async function Get_Date_on_Derction(drection,shuttertimes,autoremovedark=false,
{
data.data.return_data_type=CommanDeffine.DataTypeforSend.DOWNDN;
} else if (drection=="DARK")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.UpDarkDN;
+ } else if (drection=="RAD_UP")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.UpRadiance;
+ } else if (drection=="RAD_DOWN")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.DownRadiance;
+ }
+
+ message=await invoke("sendtoport_andgetreturn",data);
+ while (message.datatype!=0x02)
+ {
+ message=await invoke("sendtoport_andgetreturn",data);
+ }
+ return message.data
+}
+
+async function Get_Dark_Data(drection,shuttertimes,avgnumber=1) {
+ var Command={command:""};
+ let data={
+ data:Command,
+ datatype:"json"
+ }
+ data.data.command="start_collect_dark";
+ if (drection=="UP")
+ {
+ data.data.direction="up";
+ data.data.shutter_time=Number(shuttertimes);
+
+ }else if (drection=="DOWN")
+ {
+ data.data.direction="down";
+ data.data.shutter_time=Number(shuttertimes);
+ }else if(drection=="DARK")
+ {
+ data.data.direction="dark";
+ data.data.shutter_time=Number(shuttertimes);
+ }
+
+ data.data.collect_times=Number(avgnumber);
+ let message=await invoke("sendtoport_andgetreturn",data);
+ await EnsureNotWorking();
+
+ //获取数据 UPDN
+ data = {
+ data: {
+ command: "get_data_dark",
+ return_data_type: CommanDeffine.DataTypeforSend.UpDN
+ },
+ datatype: "json"
+ }
+ if(drection=="UP")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.UpDN;
+ }else if(drection=="DOWN")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.DOWNDN;
+ } else if (drection=="DARK")
{
data.data.return_data_type=CommanDeffine.DataTypeforSend.UpDarkDN;
}
@@ -86,6 +189,73 @@ async function Get_Date_on_Derction(drection,shuttertimes,autoremovedark=false,
{
message=await invoke("sendtoport_andgetreturn",data);
}
+ EventBus.emit('showbox', {title: "系统", body: "采集Dark 完成",interval:10});
+ EventBus.emit('setprogressbar',{percent:100,info:""});
+ EventBus.emit('SetMenubutton', {name:"DC",state:"OK"});
+ return message.data
+}
+
+
+async function Get_Flat_Data(drection,shuttertimes,avgnumber=1) {
+ var Command={command:""};
+ let data={
+ data:Command,
+ datatype:"json"
+ }
+ data.data.command="start_collect_flat";
+ if (drection=="UP")
+ {
+ data.data.direction="up";
+ data.data.shutter_time=Number(shuttertimes);
+
+ }else if (drection=="DOWN")
+ {
+ data.data.direction="down";
+ data.data.shutter_time=Number(shuttertimes);
+ }else if(drection=="DARK")
+ {
+ data.data.direction="dark";
+ data.data.shutter_time=Number(shuttertimes);
+ }
+
+ data.data.collect_times=Number(avgnumber);
+ let message=await invoke("sendtoport_andgetreturn",data);
+ await EnsureNotWorking();
+
+
+
+
+ //获取数据 UPDN
+ data = {
+ data: {
+ command: "get_data_flat",
+ return_data_type: CommanDeffine.DataTypeforSend.UpDN
+ },
+ datatype: "json"
+ }
+ if(drection=="UP")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.UpDN;
+ }else if(drection=="DOWN")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.DOWNDN;
+ } else if (drection=="DARK")
+ {
+ data.data.return_data_type=CommanDeffine.DataTypeforSend.UpDarkDN;
+ }
+
+ message=await invoke("sendtoport_andgetreturn",data);
+ while (message.datatype!=0x02)
+ {
+ message=await invoke("sendtoport_andgetreturn",data);
+ }
+
+
+
+
+ EventBus.emit('showbox', {title: "系统", body: "采集FLat 完成",interval:10});
+ EventBus.emit('setprogressbar',{percent:100,info:""});
+ EventBus.emit('SetMenubutton', {name:"WR",state:"OK"});
return message.data
}
@@ -170,7 +340,10 @@ function delay(ms) {
export default {
Dev_Opt,
Get_Date_on_Derction,
- Get_Device_Info
+ Get_Device_Info,
+ Get_Dark_Data,
+ Get_Flat_Data,
+ Get_Data_from_dev
diff --git a/src/components/SiderleftSerilportMethod.js b/src/components/SiderleftSerilportMethod.js
index b207dc3..b358c8f 100644
--- a/src/components/SiderleftSerilportMethod.js
+++ b/src/components/SiderleftSerilportMethod.js
@@ -3,7 +3,132 @@ import {ref} from "vue";
import CommanDeffine from "./serportdefine.js";
import EventBus from "../eventBus.js";
import SerialportMethod from "./SerialPort/SerialportMethod.js";
+import { tr } from "element-plus/es/locales.mjs";
+import { type } from "vue3-json-editor/dist/vue3-json-editor.cjs.js";
export default {
+
+ async onDevchange(){
+ console.log(this.sensor_typeforset)
+
+ },
+
+ async onshuttimechange(time){
+
+ if(time ==this.lastshuttime&&this.caijiavgNumber==this.lastcaijiavgNumber) return;
+ this.lastshuttime = time;
+ this.lastcaijiavgNumber = this.caijiavgNumber;
+ console.log(time);
+
+ if(!this.SerialInfo.isopen)
+ {
+ console.log("串口未打开");
+ return;
+ }
+ var Command={command:"set_shutter_time",shutter_time:Number(time)};
+ let data={
+ data:Command,
+ datatype:"json"
+ }
+ let message=await invoke("sendtoport_andgetreturn",data);
+
+ EventBus.emit('SetMenubutton', {name:"WR",state:"fail"});
+ EventBus.emit('SetMenubutton', {name:"DC",state:"fail"});
+ if (this.Devinfo.sensor_type!="IRIS-IS11")
+ {
+ this.UPStr="DN";
+ EventBus.emit('setplotname',{up:"DN"});
+ }
+
+ },
+
+ async showdataasup(datatoshow){
+ let coeffweave1=this.Devinfo.bochangxishu.a0;
+ let coeffweave2=this.Devinfo.bochangxishu.a1;
+ let coeffweave3=this.Devinfo.bochangxishu.a2;
+ let coeffweave4=this.Devinfo.bochangxishu.a3;
+ let lenthofdata=datatoshow.data.length;
+ let dataforshow=[];
+ for (var i=0;i
-
+
-
+
工作模式
@@ -121,6 +144,13 @@ export default {
波长系数
定标
+
+
+
+
+
+
+
@@ -136,11 +166,13 @@ export default {
+ OPT
+ DC
+
+ WR
+ Rad
+ Save
- DC
- Rad
- WR
- OPT
diff --git a/src/components/menubox/SetCalibrate.vue b/src/components/menubox/SetCalibrate.vue
index b4c199d..f71ca73 100644
--- a/src/components/menubox/SetCalibrate.vue
+++ b/src/components/menubox/SetCalibrate.vue
@@ -5,6 +5,7 @@ import * as echarts from "echarts";
import EventBus from "../../eventBus.js";
import {dialog, fs} from "@tauri-apps/api";
import {invoke} from "@tauri-apps/api/tauri";
+import SerilporDefine from "../serportdefine.js";
export default {
name: "SetCalibrate",
data(){
@@ -39,6 +40,21 @@ export default {
// this.initChart();
},
methods: {
+
+ updateCalifile(){
+ let aa=invoke("sendcalibratetodev",{
+ gain:this.upGain.gain,
+ shutter:this.upGain.shutter_time,
+ direction:SerilporDefine.Derection.Up
+ });
+ console.log(aa);
+ let aa1=invoke("sendcalibratetodev",{
+ gain:this.downGain.gain,
+ shutter:this.downGain.shutter_time,
+ direction:SerilporDefine.Derection.Down
+ });
+ console.log(aa1);
+ },
async readFileAndParse() {
var options= {
@@ -246,7 +262,7 @@ export default {
let coeffweave3=this.Devinfo.bochangxishu.a2;
let coeffweave4=this.Devinfo.bochangxishu.a3;
if (dire == "UP") {
- var data = await SerialportMethod.Get_Date_on_Derction(dire,this.shutter_time_up,false,Number(this.caijicishu[0]))
+ var data = await SerialportMethod.Get_Date_on_Derction(dire,this.shutter_time_up,true,Number(this.caijicishu[0]))
this.DataUP=data;
this.DataUP.value_lable=0
//获取波长系数
@@ -265,7 +281,7 @@ export default {
// console.log(dataforshow);
}else if(dire=="DOWN")
{
- var data = await SerialportMethod.Get_Date_on_Derction(dire,this.shutter_time_down,false,Number(this.caijicishu[0]))
+ var data = await SerialportMethod.Get_Date_on_Derction(dire,this.shutter_time_down,true,Number(this.caijicishu[0]))
this.DataDown=data;
this.DataDown.value_lable=0
//获取波长系数
@@ -371,18 +387,20 @@ export default {
async SaveGaindata(){
if(this.upGain.shutter_time!=0)
{
- await invoke("savecalibratefile",{
+ console.log(this.upGain.gain);
+ let data={
gain:this.upGain.gain,
shutter:this.upGain.shutter_time,
direction:true,
filepath:"./calibratefile/upgain.bin"
- });
- await invoke("sendcalibratetodev",{
- gain:this.upGain.gain,
- shutter:this.upGain.shutter_time,
- direction:true
+ }
+ await invoke("savecalibratefile",data);
+ // await invoke("sendcalibratetodev",{
+ // gain:this.upGain.gain,
+ // shutter:this.upGain.shutter_time,
+ // direction:true
- });
+ // });
}
if(this.downGain.shutter_time!=0)
@@ -432,7 +450,32 @@ export default {
let lampup=lampData[i]*UpLabel/lampLabel;
let lampdown=lampData[i]*DownLabel/lampLabel;
let gainup=lampup/upDn;
+ //判断upDN是否为0 如果是0 则gainup为前一个值 如果是第一个 则为1
+
+ if (upDn==0)
+ {
+ if (i==0)
+ {
+ gainup=1;
+ }else{
+ gainup=gainofup[i-1];
+ }
+ }
+
+
+
let gaindown=lampdown/downDn;
+ //判断downDn是否为0 如果是0 则gainup为前一个值 如果是第一个 则为1
+ if (downDn==0)
+ {
+ if (i==0)
+ {
+ gaindown=1;
+ }else{
+ gaindown=gainofdown[i-1];
+ }
+ }
+
gainofup.push(gainup);
gainofdown.push(gaindown);
@@ -554,7 +597,7 @@ export default {
导入已有文件
计算
adsfsdsadfsdf
- 设置
+ 设置
diff --git a/src/components/serportdefine.js b/src/components/serportdefine.js
index 9e5bdc0..81c398a 100644
--- a/src/components/serportdefine.js
+++ b/src/components/serportdefine.js
@@ -20,7 +20,8 @@ const SerilporDefine = {
ALLRadiance:0x10,
UpAndDownRadiance:0x11,
UpRadiance:0x12,
- DownRadiance:0x13
+ DownRadiance:0x13,
+ Ref:0x14
},
}
export default SerilporDefine;
diff --git a/src/components/siderleft.vue b/src/components/siderleft.vue
index 9b36638..7aaf3f0 100644
--- a/src/components/siderleft.vue
+++ b/src/components/siderleft.vue
@@ -22,9 +22,11 @@ export default {
ChongCaiyanginterval: 0.2,
},
caijiavgNumber:100,
+ lastcaijiavgNumber:100,
autoremovedark: true,
caijidirection: "UP",
ShutterTime: [100, 100],
+ lastshuttime: 100,
cajitimes: 5,
cajitimesjiange:0,
methodslist: [],
@@ -36,15 +38,19 @@ export default {
nowNumber: 0,
Filename: "Plot",
pathofdir: "./data",
+ sensor_typeforset: "IRIS-IS11",
Devinfo: {
SerilNumber: "",
Version: "0000",
name: "暂无",
Caji_mode: "连续采集",
return_mode: "返回模式",
- Datatype: "DN"
+ Datatype: "DN",
+ sensor_type:"IRIS-IS11"
},
+ UPStr: "UP",
+ DOWNStr: "DOWN",
Datainfoshow: {
header: "数据信息",
infolist: []
@@ -62,7 +68,9 @@ export default {
header: "DOWN",
infolist: []
},
-
+ buttoncolor:{
+ opencombutton:"light"
+ },
devinfoshow: {
header: "设备信息",
@@ -73,6 +81,12 @@ export default {
},
cssme: {
comportvariant: "info",
+ },
+ continuecaiji: false,
+ Dispatcher:{
+ isenable:false,
+ begin:"00:00",
+ end:"23:59",
}
}
},
@@ -84,11 +98,23 @@ export default {
if (typeof(configdata.Filename)!="undefined")
this.Filename=configdata.Filename
if (typeof(configdata.caijiavgNumber)!="undefined")
- this.caijiavgNumber=configdata.caijiavgNumber
+ {
+ this.caijiavgNumber=configdata.caijiavgNumber
+ this.lastcaijiavgNumber=configdata.caijiavgNumber
+ }
+
if (typeof(configdata.useSG)!="undefined")
this.dataprocessconfig.useSG=configdata.useSG
if (typeof(configdata.usehighpass)!="undefined")
this.dataprocessconfig.usehighpass=configdata.usehighpass
+ if (typeof(configdata.Dispatcher.isenable)!="undefined")
+ this.Dispatcher.isenable=configdata.Dispatcher.isenable
+ if (typeof(configdata.Dispatcher.begin)!="undefined")
+ this.Dispatcher.begin=configdata.Dispatcher.begin
+ if (typeof(configdata.Dispatcher.end)!="undefined")
+ this.Dispatcher.end=configdata.Dispatcher.end
+
+
var ports = this.listSerialPorts();
// let btn=document.getElementById("closecomeside");
// btn.disabled=true;
@@ -99,11 +125,16 @@ export default {
window.addEventListener("keydown", this.handlekeydown)
EventBus.on("updatamaindevinfo", this.GetSenSorInfo);
EventBus.on("konamiactive",this.setspectralmode);
- EventBus.on("Get_Dev_Info",this.get_dev_info)
+ EventBus.on("Get_Dev_Info",this.get_dev_info);
+ EventBus.on("LetSiderDo",this.letmedosomething);
},
methods: {
...Siderleftmethode,
- ...siderleftSerilportMethod
+ ...siderleftSerilportMethod,
+ addOption() {
+ this.options.push({label: this.inputValue, value: this.inputValue}),
+ this.inputValue = ''
+ }
},
setup(props, context) {
const optionName = ref('')
@@ -137,6 +168,14 @@ export default {
+
+
+
+ 高光谱传感器
+ IS11
+
+
+
@@ -148,7 +187,7 @@ export default {
-
+
@@ -159,6 +198,20 @@ export default {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
保存
@@ -171,11 +224,12 @@ export default {
+ v-show="caijidirection!='DOWN'" :change="onshuttimechange(ShutterTime[0])">
+ v-show="caijidirection=='DOWN'||caijidirection=='ALL'" >
+
@@ -194,10 +248,13 @@ export default {
- UP
- DOWN
- DARK
- ALL
+ {{ UPStr }}
+ {{ DOWNStr }}
+ DARK
+ ALL
+ RAD_UP
+ RAD_DOWN
+ REF
@@ -211,42 +268,79 @@ export default {
- 保存数据
+ 采集数据
+
+
+
+
-
+
+
+
+
+ 连续保存
+
+
+
+ 停止保存
+
+
+
+
+
+
+
+
+
+
+
+
+
保存间隔
-
-
+
@@ -267,14 +361,18 @@ export default {
+
+
+
- {{ item.label }}
+ {{ item.label }}
- 打开串口
diff --git a/src/components/siderleftmethod.js b/src/components/siderleftmethod.js
index 23191b8..8cdf65e 100644
--- a/src/components/siderleftmethod.js
+++ b/src/components/siderleftmethod.js
@@ -4,6 +4,7 @@ import * as echarts from "echarts";
import {exit} from "@tauri-apps/api/process";
import EventBus from "../eventBus.js";
import eventBus from "../eventBus.js";
+import { en } from "element-plus/es/locales.mjs";
export default {
@@ -15,11 +16,15 @@ export default {
configdata.caijiavgNumber=this.caijiavgNumber;
configdata.useSG=this.dataprocessconfig.useSG;
configdata.usehighpass=this.dataprocessconfig.usehighpass;
+ configdata.Dispatcher=this.Dispatcher;
fs.writeFile("config.json", JSON.stringify(configdata));
EventBus.emit('showbox', {title: "系统", body: "保存配置成功",interval:10});
- this.isSpecialmodeshow=false;
+ this.isSpecialmodeshow=true;
+ },
+ async filenamechange(){
+ var maxn=await this.findmaxNinpath(this.pathofdir);
+ this.Pathtosave=this.pathofdir+"/"+this.Filename+this.nowNumber+".csv";
},
-
async choosesavepath(){
// var path = require('path');
// var dialog = require('@electron/remote').dialog;
@@ -56,6 +61,87 @@ export default {
URL.revokeObjectURL(blob);
},
async ContinueCelect(times){
+ if(times==-1) {
+ this.continuecaiji=!this.continuecaiji;
+ if (this.continuecaiji==false)
+ {
+ EventBus.emit('showbox', {title: "系统", body: "采集将在当前数据采集完成后停止",interval:10});
+ return
+ }
+ }
+
+ if (this.continuecaiji) {
+ while (this.continuecaiji) {
+
+ //获取当前时间
+ let isuseDispatcher=this.Dispatcher.isenable;
+ if (isuseDispatcher)
+ {
+
+ let datenow=new Date();
+ let hour=datenow.getHours();
+ let datanownumber=hour*60+datenow.getMinutes();
+ let begintimestr=this.Dispatcher.begin;
+ let endtimestr=this.Dispatcher.end;
+ let begintime=Number(begintimestr.split(":")[0])*60+Number(begintimestr.split(":")[1]);
+ let endtime=Number(endtimestr.split(":")[0])*60+Number(endtimestr.split(":")[1]);
+
+ if (datanownumber>endtime||datanownumber0)
+ // await delay(this.cajitimesjiange*1000-50);
+ //等待期间每一秒检查一次是否停止
+ let temp=0;
+ this.iscollecting=true;
+ while(temp0)
- await delay(this.cajitimesjiange*1000-50);
+ // if (this.cajitimesjiange>0)
+ // await delay(this.cajitimesjiange*1000-50);
+ let temp=0;
+ while(temp {
// console.log(file)
- var aa = file.path.startsWith(directoryPath + "\\" + this.Filename);
+ var aa = file.path.startsWith(directoryPath + "\\" + fileName);
var bb = file.path.endsWith('.csv');
return aa && bb;
}
@@ -281,14 +443,18 @@ export default {
);
+
// 提取文件名中的N值
const NValues = filteredFiles.map(file => {
- const match = file.name.match(new RegExp(`^${ this.Filename}(\\d+)\\.csv$`));
+ // const match = file.name.match(new RegExp(`^${ fileName}(\\d+)\\.csv$`));
+ const match = file.name.match(new RegExp(`^${fileName}(\\d+)(_(UP|DOWN))?\\.csv$`));
+
return match ? parseInt(match[1]) : null;
}).filter(value => value !== null);
+
var maxN = Math.max(...NValues);
this.nowNumber=maxN+1;
-
+
if (NValues.length === 0) {
// 如果没有匹配的文件,则返回-1
maxN=0;
@@ -296,6 +462,7 @@ export default {
}
// 找到最大的N值
+
this.Pathtosave=this.pathofdir+"\\"+this.Filename+this.nowNumber+".csv";
return new Promise((resolve, reject) => {return maxN});
},