init files

This commit is contained in:
rci
2024-09-27 14:31:22 +08:00
parent d04db633b4
commit a2ce7826dc
407 changed files with 123645 additions and 93 deletions
@@ -0,0 +1,68 @@
# »ñÈ¡»ñÈ¡µ±Ç°Ä¿Â¼Ãû
get_filename_component(CURRENT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR} NAME)
string(TIMESTAMP RUN_TIME)
message( " model start : " ${CURRENT_FOLDER}:${RUN_TIME})
set(DLL_NAMES "opencv" "HslComunnicationCpp")
foreach(child ${DLL_NAMES})
LIST(APPEND ENV_INCLUDE ${${child}_include})
LIST(APPEND ENV_LIB ${${child}_lib})
LIST(APPEND ENV_TARGET ${${child}_target_link})
endforeach()
message(" ENV_INCLUDE : " ${ENV_INCLUDE} )
message(" ENV_LIB : " ${ENV_LIB} )
message(" ENV_TARGET : " ${ENV_TARGET} )
include_directories(
${ENV_INCLUDE}
)
link_directories (
${ENV_LIB}
)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
FILE(GLOB HEAD_FILES "./*.h" )
FILE(GLOB SRC_FILES "./*.cpp")
FILE(GLOB UI_FILES "./*.ui")
#find_package(Qt5 COMPONENTS Core REQUIRED)
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Network REQUIRED)
add_library(${CURRENT_FOLDER} SHARED
${HEAD_FILES}
${SRC_FILES}
${UI_FILES}
)
set_target_properties(${CURRENT_FOLDER} PROPERTIES LINKER_LANGUAGE C
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
)
target_link_libraries(${CURRENT_FOLDER} PRIVATE
${ENV_TARGET}
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Network
)
string(TIMESTAMP RUN_TIME)
message( " model end : " ${CURRENT_FOLDER}:${RUN_TIME})
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,129 @@
#ifndef Hd_SocketModule_ModbusTcp_H
#define Hd_SocketModule_ModbusTcp_H
#include <QtCore/qglobal.h>
#include <QByteArray>
#include <QThread>
#include <iostream>
#include <QTcpSocket>
#include <QHostAddress>
#include <QMutex>
#include <QObject>
#include <QQueue>
#include <QDebug>
#include <Windows.h>
#include <pch.h>
#pragma comment(lib,"./HslComunnicationCpp.lib")
#include "base.h"
class MyThread;
class writeThread;
class Hd_SocketModule_Snap7Tcp :public Base
{
Q_OBJECT
public:
//创建,这里new一下锁
Hd_SocketModule_Snap7Tcp();
//释放,删除连接,释放锁
virtual ~Hd_SocketModule_Snap7Tcp();
//向主线程发送数据,通信Mat为空
//主线程调用sendData函数,把读报文的数据段发送回来。 //注意,只要数据段。
//主线程根据通信流程解析数据段。
//先reciveData,再sendData;
bool readData(std::vector<cv::Mat>&,QByteArray&);//readData将PLC读取或者发送的返回值发回给主线程,通过全局变量的方式逐条发送
//接收主线程发来的数据,通信Mat为空
//例:write_DM1300_9,写寄存器DM1300为9;
//例:writeAll_DM1700_14_1,1,1,1,1,1,1,1,1,1,1,1,1,1,写寄存器DM1700-DM1713的14个寄存器,均为1
//例:readAll_DM1400_100,读DM1400-DM1499的100个寄存器;
//例:readAll_DM1001_1,读DM1001
//例:writeString_DM1340_12_2023-0217-1650-03-0899,写寄存器DM1340-DM1351时间戳,一个寄存器里面含2个字符;
//其它通信方式可参考,并添加解析协议。如:writeFloat_DM10000_-1.1,指令函数增加bool writeFloat(QString DM,QString value);
bool writeData(std::vector<cv::Mat>&,QByteArray&); //writeData调用PLC的收发,将需要的数据发给寄存器,返回OK/NG
//把通信创建需要的参数传进去,不同协议不同,例:init_192.168.1.50_9600_24;
//连接通信,可以在run函数里进行
bool initParas(QByteArray&);
//运行
bool run();
//检查异常标志
bool checkStatus();
private:
QString UShortToHex(int value); // 只转 ushort 类型
QString ShortToHex(int value); // 只转 short 类型
void setSleepTimeAndReadNum(int time,int num);
bool writeCommond(QString DM, QString type, QVector<QString>vec_value); // 写入单个值; //例:write_DM1300_9
bool readCommond(QString DM, QString type, QString Num);
//bool writeCommond(QString DM,QString m_value); // 写入单个值; //例:write_DM1300_9
//bool readCommond(QString DM,QString Num);
//bool readAllCommond(QString DM,QString Num); // 写入连续的值
//bool writeAllCommond(QString DM,QString write_Num,QVector<short> vec_value);
//bool writeResultCommond(QString DM,QString write_Num,QVector<QString> vec_value); // 写入起始位结果值,要做解析再写入
//bool writeStringCommond(QString DM, QString write_num, QString vec_value);
bool decodeWriteResult(QByteArray resultByte,QVector<QString> &vec_ret);
bool tcpServer(QByteArray cmd, QByteArray& resultPack);
void decodePack(QByteArray resultArray);
private:
int m_sleepTime = 100; // 延迟时间
int m_readPackNum = 50; // 接受50个数据包的长度 为 122 ,加包头一起为 130
QString m_host;
QString m_IP;
QString m_pos; // 位置 100 110
QString hex_ip_lastpos; // 获取ip 最后一位
QString m_writeType = "ushort"; // 初始化时候 设置 传输的类型是 sort 还是int 类型,还是ushort 类型, 默认ushort 类型
QString m_posName;
//QString m_Station;
QString m_Rack;
QString m_Slot;
QString m_SiemensType;
//MyThread *m_Thread = nullptr;
//QTcpSocket* tcpsocket = nullptr; //tcp通信的socket
QMutex* m_Mutex = nullptr;
MyThread* m_Thread = nullptr;
};
//自己创建线程
class MyThread : public QThread
{
Q_OBJECT
public:
explicit MyThread(QObject *parent = nullptr):QThread(parent){}
~MyThread();
bool setIpAndPort(QString ip,QString port);
void run();
void readSocketData(); //读取数据
void writeSocketData(); //写入数据
void decodePack();
void setMutexLock(QMutex* lock) { m_mutex_lock = lock; }
void setRunStop(){ init_flag = 2;}
void setReadPackValue(int value);
void closeSocket();
bool getInitSuccessFlag(){return init_success;}
bool disReconnects();
void setSocketIp(QString Rack, QString Slot, QString SiemensType) {
m_Rack = Rack; m_Slot = Slot; m_SiemensType = SiemensType; }
private:
QString m_IP;
QString m_Port;
QString m_Rack;
QString m_Slot;
QString m_SiemensType;
QMutex m_Mutex;
QByteArray reciveData;
QString socketIp;
bool init_success = true; // 初始化成功 返回true;失败返回false
int init_flag = 0; // false为完整数据包,true为非完整数据包
int m_readPackValue = 122; // 接受50个数据包的长度 为 122 ,加包头一起为 130, 如果是 100的话就是 222 加包头为230
QMutex* m_mutex_lock = nullptr;
//QTcpSocket *tcpsocket = nullptr; // tcp通信的socket
HDTcpBase* tcpsocket = nullptr;
};
extern "C"
{
Q_DECL_EXPORT Hd_SocketModule_Snap7Tcp* create();
Q_DECL_EXPORT void destory(Hd_SocketModule_Snap7Tcp* ptr);
}
#endif // Hd_SocketModule_ModbusTcp_H
@@ -0,0 +1,31 @@
#ifndef __BASECLASS_H__
#define __BASECLASS_H__
#include <iostream>
#include <QObject>
#include <QByteArray>
#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
class Base :public QObject
{
Q_OBJECT
public:
bool init_flag; //是否初始化,false,true
bool status = true; //相机状态(判断相机是否断开连接)
std::string paras; //传输数据
std::vector<cv::Mat> m_mat; //传输图片
std::string moduleName; //模块名称
public:
Base() {}
virtual ~Base() {}
virtual bool readData(std::vector<cv::Mat>&, QByteArray&) { return true; }
virtual bool writeData(std::vector<cv::Mat>&, QByteArray&) { return true; }
virtual bool initParas(QByteArray&) { return true; }
virtual bool run() { return true; }
virtual bool checkStatus() { return true; }
};
#endif
@@ -0,0 +1,53 @@
{
"taskName": "task1",
"save_image": "D:\\930SaveStation3\\",
"savePath": "D:\\930TotalResult\\",
"tablelist": [
{
"key": "",
"cName": "机台名:",
"eName": "NG number:",
"value": "外观检测"
},
{
"key": "",
"cName": "班次:",
"eName": "Number :",
"value": "白班"
},
{
"key": "",
"cName": "工位名:",
"eName": "yield :",
"value": "工位三"
}
],
"showlist": [
{
"key": "2D-J93413657-J93413638-K39998967-00K19936732",
"cName": "2D",
"eName": "view1"
},
{
"key": "3D-133872-132192-123490-124229",
"cName": "3D",
"eName": "view2"
}
],
"Communicationlist": [
{
"stations": [
"station3"
],
"Communication_key": "snap7tcp",
"Communication_type": "PLC",
"writetype": "ushort",
"Communication_sleeptime": "30",
"Communication_init": "init_127.0.0.1_502_0_1_1", //init初始化指令,"127.0.0.1"IP,"502"端口,"0"管道号,"1"槽号,"1"西门子类型,西门子S7[S1200,S300,S400,S1500,S200smart,S200] S1200=1,S300 = 2,以下类推
"Communication_readAllCmd": "read_byte_M1400_100", //read读指令,"byte"字节寄存器,"M1400"寄存器位置,除了M还有DB寄存器,"100",连续读100个,如果是"1",则只读1个
"heartCmd": "write_short_M1003_1", //write写指令,"short"16位寄存器,"M1003"寄存器位置,除了M还有DB寄存器,"1"数值,如果是"1,2,3,4,5"则变为连续写5个16位寄存器
"heartTime": "250",
"moduleName": "Hd_SocketModule_Snap7Tcp" //数据类型可选[byte,bool,short,ushort,int,uint,long,ulong,float,double,string]
}
]
}