当前位置: 首页 > news >正文

基于php房产网站开发网站设计师英文

基于php房产网站开发,网站设计师英文,网站开发费用如何记账,个人介绍网页制作html在qt中调用Cdll一般都可以直接使用#xff0c;但是在调用C#版dll时#xff0c;就有些麻烦了。本文采用C/cli封装C#的dll的方式。实现了qt调用C#dll的方法。 .h文件 #pragma once #include string //stl库 #include vector // stl中vector库//dll生成文件定…在qt中调用Cdll一般都可以直接使用但是在调用C#版dll时就有些麻烦了。本文采用C/cli封装C#的dll的方式。实现了qt调用C#dll的方法。 .h文件 #pragma once #include string //stl库 #include vector // stl中vector库//dll生成文件定义该宏在引用该dll文件中取消该定义 #ifdef CNCNETLIB2CDLL #define CNCNETLIB2C __declspec(dllexport) #else #define CNCNETLIB2C __declspec(dllimport) #endifnamespace CNCNetLib2CPlus {/*6 IP Address Information*/class CNCNETLIB2C CNCNetClassCPlus{public:CNCNetClassCPlus();virtual ~CNCNetClassCPlus();//获取当前电脑可用IP地址std::vectorstd::string GetCurrentIPAddress();//获取IP地址相关的其他信息int GetNetConfig(std::string IPAddress, std::string MACAddress, std::string SubMask, std::string Gateway, bool IsDHCP);//获取cnc的名称及IPstd::vectorstd::string BroadcastGetCNC(std::string localIP, std::string subMask);};/*CNC information*/class CNCNETLIB2C CNCInfoClassCPlus{public:CNCInfoClassCPlus();CNCInfoClassCPlus(std::string LocalIP, std::string CNCIP, int Timeout);virtual ~CNCInfoClassCPlus();/*7.Connection Setting*///设置本地IPvoid SetLocalIP(std::string LocalIP);void GetLocalIP(std::string LocalIP);//设置远程CNC-IPvoid SetCNCIP(std::string CNCIP);void GetCNCIP(std::string CNCIP);//设置连接超时时长msvoid SetTimeOut(int TimeOut);void GetTimeOut(int TimeOut);//設定連線用資訊int SetConnectInfo(std::string LocalIP, std::string CNCIP, int Timeout);//建立連線int Connect();//取得連線狀態bool IsConnect();//中斷已建立的連線void Disconnect();/*8.權限資訊*///讀取目前網路連線最高權限等級int READ_Current_Permission(unsigned short PermissionLevel);//檢查目前網路連線是否具備或高於輸入之權限等級int Check_Current_Permission(unsigned short PermissionLevel); //鎖定網路連線權限鎖定後權限等級降為一般使用者int Lock_Permission();//取得輸入之權限等級int UnLock_Permission(unsigned short PermissionLevel, std::string UserName, std::string Password);//變更權限帳號與密碼int Change_Password(unsigned short PermissionLevel, std::string OriginalUserName, std::string NewUserName, std::string OriginalPassword, std::string NewPassword);//新增低於當前權限的帳號int Permission_Account_Add(unsigned short PermissionCount, std::string UserName, std::string Password);//刪除低於當前權限的帳號int Permission_Account_Delete(unsigned short PermissionCount, std::string UserName, std::string Password);//取得當前低於權限的所有帳號列表int Permission_Account_List(unsigned short PermissionCount, std::vectorunsigned short PermissionLevel , std::vectorstd::string UserName, std::vectorstd::string Password);/*9.基本資訊*///讀取 CNC 加工與報警狀態int READ_CNC_Flags(unsigned char IsProcessing, bool IsAlarm);//讀取 CNC 加工、報警與系統動作狀態int READ_CNC_Flags(unsigned char IsProcessing, bool IsAlarm, unsigned char RestartAct);//讀取 CNC 基本資訊int READ_CNC_Information(unsigned short Channel, unsigned int Model, unsigned short MaxChannels, unsigned short Series,std::string NCVersion, unsigned short ScrewUnit, unsigned short DisplayUnit, unsigned int ApiVersion);//讀取 Channel 基本資訊int READ_Channel_Information(unsigned int Channels, std::vectorunsigned short AxesOfChannel, std::vectorunsigned short ServoAxesofChannel, std::vectorunsigned short MaxAxisOfChannel, std::vectorstd::vectorstd::string AxisNameOfChannel, std::vectorunsigned short DecPointOfChannel);//讀取 Channel 伺服軸軸數int READ_Axis_Count(unsigned short Channels, unsigned short AxisCount);//讀取目標通道內已啟用主軸數量int READ_Spindle_Count(unsigned short Channels, unsigned short SpindleCount);//讀取 CNC 狀態int READ_Status(unsigned short Channel, std::string MainProgram, std::string CurrentProgram, std::string MainProgramPath,int CurrentLine, int MDICurrentLine, int Mode, int Status, bool IsAlarm, bool IsProcessing, unsigned char RestartAct);//讀取 CNC Motion 狀態資訊int READ_NCMotion(unsigned short Channel, unsigned short Unit, unsigned int SPSpeed, double Feed, short SPLoad, double SPActSpeed, double ActFeed, unsigned int DwellTime, short SPToolNo, unsigned short MagaNo, unsigned short CmdToolNo,unsigned short StandbyToolNo, unsigned short StandbyPot, unsigned short DCode, unsigned short HCode, unsigned short TCode, unsigned short MCode,std::vectorunsigned short GCodeGroup, std::vectorunsigned short GCodeGroupDecimal, unsigned short FeedRate, unsigned short RPDRate,unsigned short SpindleRate, double JOGRate, unsigned short MPGRate);//讀取進給率 / 轉速int READ_Feed_Spindle(unsigned short Channel, unsigned short Unit, double CmdFeed, unsigned int CmdSPSpeed, double ActFeed, double SPActSpeed);//讀取 G Code Dataint READ_GCode(unsigned short Channel, std::vectorstd::string GCode);//讀取其他 Code Dataint READ_OtherCode(unsigned short Channel, int HCode, int DCode, int TCode, int MCode);//讀取 NC 主機名稱int READ_CNC_HostName(std::string HostName);//寫入 NC 主機名稱int WRITE_CNC_HostName(std::string HostName);//讀取控制器軸回原點資訊int READ_HomeStatus(unsigned short Channel , unsigned short HomeStatus);/*10.警報資訊*///讀取當前警報個數int READ_Current_Alarm_Count(unsigned int AlarmCount);//讀取當前警報內容int READ_Current_Alarm(unsigned short AlarmCount, std::vectorunsigned short AlarmCode, std::vectorunsigned short AlarmType, std::vectorunsigned short AlarmDataLen, std::vectorstd::vectorunsigned int AlarmData, std::vectorstd::string AlarmMsg,std::vectorstd::string AlarmDateTime);//讀取歷史警報個數int READ_History_Alarm_Count(unsigned int AlarmCount);//讀取全部歷史警報訊息int READ_History_Alarm_All(unsigned short AlarmCount, std::vectorunsigned short AlarmCode,std::vectorunsigned short AlarmType, std::vectorunsigned short AlarmDataLen,std::vectorstd::vectorunsigned int AlarmData, std::vectorstd::string AlarmMsg,std::vectorstd::string AlarmDateTime);//讀取歷史警報訊息int READ_History_Alarm(unsigned short AlarmIndex, unsigned short AlarmLength,unsigned short AlarmCount, std::vectorunsigned short AlarmCode,std::vectorunsigned short AlarmType, std::vectorunsigned short AlarmDataLen,std::vectorstd::vectorunsigned int AlarmData, std::vectorstd::string AlarmMsg,std::vectorstd::string AlarmDateTime);//清除歷史警報訊息int CLEAR_History_Alarm();/*11 伺服資訊*///讀取進給軸負載峰值int READ_Servo_Load_Peak(unsigned short Channel, unsigned short AxisCount,std::vectorunsigned short AxisNr, std::vectorbool Result, std::vectorint AxisValue);//讀取主軸負載峰值int READ_Spindle_Load_Peak(unsigned short Channel, unsigned short AxisCount,std::vectorunsigned short AxisNr, std::vectorbool Result, std::vectorint AxisValue);//讀取進給軸負載int READ_Servo_Load(unsigned short Channel, unsigned short AxisCount,std::vectorunsigned short AxisNr, std::vectorbool Result, std::vectorint AxisValue);//讀取主軸負載int READ_Spindle_Load(unsigned short Channel, unsigned short AxisCount,std::vectorunsigned short AxisNr, std::vectorbool Result, std::vectorint AxisValue);//讀取進給軸轉速int READ_Servo_Speed(unsigned short Channel, unsigned short AxisCount,std::vectorunsigned short AxisNr, std::vectorbool Result, std::vectorint AxisValue);//讀取主軸轉速int READ_Spindle_Speed(unsigned short Channel, unsigned short AxisCount,std::vectorunsigned short AxisNr, std::vectorbool Result, std::vectorint AxisValue);//讀取進給軸溫度int READ_Servo_Temperature(unsigned short Channel, unsigned short AxisCount,std::vectorunsigned short AxisNr, std::vectorbool Result, std::vectorint AxisValue);//讀取主軸溫度int READ_Spindle_Temperature(unsigned short Channel, unsigned short AxisCount,std::vectorunsigned short AxisNr, std::vectorbool Result, std::vectorint AxisValue);/*12 座標資訊*///讀取 CNC 各軸座標int READ_Position(unsigned short Channel, unsigned short Unit, std::vectorstd::string AxisName, std::vectordouble CoordMech, std::vectordouble CoordAbs, std::vectordouble CoordRel,std::vectordouble CoordRes, std::vectordouble CoordOffset);//讀取選擇的座標類型的各軸座標int READ_Select_Position(unsigned short Channel, unsigned short Unit, unsigned short CoordType,std::vectordouble CoorCoordArray);//清除選取軸相對座標int CLEAR_Relative_Coordinary(unsigned short Channel, unsigned short AxisNr);//清除所有軸相對座標int CLEAR_Relative_Coordinary_All(unsigned short Channel);/*13 工件座標*///讀取工件座標標題名稱int READ_GCoordinary_Title(std::vectorstd::string GCoordinaryTitle);//讀取工件座標資料int READ_GCoordinary(unsigned short Channel, unsigned short Unit, unsigned short Index, unsigned short Length, std::vectorstd::vectordouble GCoordinaryArray);//写入工件座標資料int WRITE_GCoordinary(unsigned short Channel, unsigned short Unit, unsigned short Index, unsigned short Length, std::vectorstd::vectordouble GCoordinaryArray);//讀取偏移座標資料int READ_Offset_Coordinary(unsigned short Channel, unsigned short Unit, std::vectordouble CoordinaryArray);//写入偏移座標資料int WRITE_Offset_Coordinary(unsigned short Channel, unsigned short Unit, std::vectordouble CoordinaryArray);/*14 刀具資訊*///讀取刀具標題列int READ_Tool_Title(unsigned short Channel, std::vectorstd::string ToolTitle);//讀取刀具總筆數int READ_Tool_Count(unsigned short Channel, unsigned short ToolCount);//讀取刀具資訊int READ_Tool(unsigned short Channel, unsigned short Unit, unsigned short Index, unsigned short Length, unsigned short SeriesType, std::vectorstd::vectordouble ToolData);//写入刀具資訊int WRITE_Tool(unsigned short Channel, unsigned short Unit, unsigned short Index, unsigned short Length, std::vectorstd::vectordouble ToolData);/*15 刀庫資訊*/// 讀取刀庫資訊int READ_Magazine_Info(unsigned short Channel, unsigned short MagaID, unsigned short ToolNum, unsigned short CMDToolID, unsigned short StandbyToolID, unsigned short StandbyPotID, short SPToolID, std::vectorshort ToolID);//WRITE_Magazine_Info: 寫入刀庫資訊int WRITE_Magazine_Info(unsigned short Channel, unsigned short MagaID, unsigned short PotID, short ToolID);//RESET_Magazine_Info: 重置刀庫int RESET_Magazine_Info(unsigned short Channel, unsigned short MagaID);//WRITE_Lock_Magazine:刀庫之刀套封鎖int WRITE_Lock_Magazine(unsigned short Channel, unsigned short MagaID, unsigned short PotID);//WRITE_Unlock_Magazine:刀庫之刀套解鎖int WRITE_Unlock_Magazine(unsigned short Channel, unsigned short MagaID, unsigned short PotID);/*16 加工資訊*///16.1 READ_Process_Time : 讀取加工時間int READ_Process_Time(unsigned short Channel, unsigned int TotalWorkTime, unsigned int SingleWorkTime);//16.2 CLEAR_Process_Time : 清除加工時間int CLEAR_Process_Time(unsigned short Channel);//16.3 READ_Part_Count : 讀取加工數int READ_Part_Count(unsigned short Channel, unsigned int target_part_count, unsigned int finish_part_count);//16.4 WRITE_Part_Count : 寫入加工數int WRITE_Part_Count(unsigned short Channel, unsigned int target_part_count, unsigned int finish_part_count);//16.5 CLEAR_Part_Count : 清除完成加工數int CLEAR_Part_Count(unsigned short Channel);/*17. 巨集變數*///17.1 READ_Macro_Variable : 讀取巨集變數數值int READ_Macro_Variable(unsigned short Channel, unsigned int Type, unsigned int StartIndex, unsigned int Length, std::vectordouble MacroValues);//17.2 READ_Macro_Variable_By_ID : 根據巨集變數 ID 讀取巨集變數數值int READ_Macro_Variable_By_ID(unsigned short Channel, unsigned int MacroID, double MacroValue);//17.3 WRITE_Macro_Variable : 寫入巨集變數數值int WRITE_Macro_Variable(unsigned short Channel, unsigned int Type, unsigned int StartIndex, unsigned int Length, std::vectordouble MacroValues);//17.4 WRITE_Macro_Variable_By_ID : 根據巨集變數 ID 寫入巨集變數數值int WRITE_Macro_Variable_By_ID(unsigned short Channel, unsigned int MacroID, double MacroValue);//17.5 WRITE_Macro_Variable_NoPerm : 寫入巨集變數數值且無權限與加工中限制int WRITE_Macro_Variable_NoPerm(unsigned short Channel, unsigned int Type, unsigned int StartIndex, unsigned int Length, std::vectordouble MacroValues);/*18.MLC 變數*///18.1 READ_MLC_Address_Buffer_Size : 取得 MLC 變數需要的 Buffer Sizeint READ_MLC_Address_Buffer_Size(unsigned int DevType, unsigned int DevStart, unsigned int DevNum);//18.2 READ_MLC_Address : 讀取 MLC 變數數值int READ_MLC_Address(unsigned int DevType, unsigned int DevStart, unsigned int DevNum, std::vectorunsigned char DevValue);//18.3 WRITE_MLC_Address : 寫入 MLC 變數數值int WRITE_MLC_Address(unsigned int DevType, unsigned int DevStart, unsigned int DevNum, std::vectorunsigned char DevValue);//18.4 WRITE_MLC_Address_NoPerm : 寫入 MLC 變數數值且無權限與加工中限制int WRITE_MLC_Address_NoPerm(unsigned int DevType, unsigned int DevStart, unsigned int DevNum, std::vectorunsigned char DevValue);/*19 參數資訊*///19.1 READ_Single_CNC_Parameter : 讀取單筆 CNC 參數int READ_Single_CNC_Parameter(unsigned short Channel, unsigned short NGroup, unsigned int ParaID, short SubItem, short AXNr, short SubGroupID, short DataType, unsigned short DataSize, std::vectorunsigned char Data);//19.2 WRITE_Single_CNC_Parameter : 寫入單筆 CNC 參數 byte[32]int WRITE_Single_CNC_Parameter(unsigned short Channel, unsigned short NGroup, unsigned int ParaID, short SubItem, short AXNr, std::vectorunsigned char Data);/*20 S 設定*///20.1 READ_S_Limit : 讀取主軸轉速極限值int READ_S_Limit(unsigned short Channel, unsigned short SPIndex, int MinOfS, int MaxOfS);//20.2 WRITE_S_Setting : 設定主軸轉速int WRITE_S_Setting(unsigned short Channel, unsigned short SPIndex, unsigned int SPSpeed);/*21 系統資訊*///21.1 READ_System_Time : 讀取系統日期時間int READ_System_Time(std::string SystemTime);//21.2 Reset_System : 系統重置int Reset_System(unsigned short Channel);//21.3 READ_System_Variable : 讀取系統變數int READ_System_Variable(unsigned short Channel, unsigned short SysVarNum, unsigned short AxisVarNum, std::vectorunsigned short SysVarChannel,std::vectorunsigned short SysVarID,std::vectorunsigned short SysVarType, std::vectorstd::vectorunsigned char SysVarValue, std::vectorunsigned short AxisVarChannel,std::vectorunsigned short AxisNum, std::vectorunsigned short AxisVarID, std::vectorunsigned short AxisVarType, std::vectorstd::vectorunsigned short AxisID, std::vectorstd::vectorstd::vectorunsigned char AxisVarValue);//21.4 READ_User_Variable : 讀取用戶變數int READ_User_Variable(unsigned short VarNum, std::vectorunsigned short VarRegAddr, std::vectorunsigned short VarValue);//21.5 WRITE_User_Variable_Register : 寫入用戶變數暫存器數值int WRITE_User_Variable_Register(unsigned short VarID, unsigned short VarRegAddr);//21.6 WRITE_User_Variable_Value : 寫入用戶變數數值int WRITE_User_Variable_Value(unsigned short VarID, unsigned short VarRegValue);//21.7 DELETE_User_Variable: 刪除用戶變數int DELETE_User_Variable(unsigned short VarID);//21.8 READ_Equip_Variable : 讀取設備變數int READ_Equip_Variable(unsigned short VarNum, std::vectorunsigned short VarRegAddr, std::vectorunsigned short VarRegValue);//21.9 WRITE_Equip_Variable_Register : 寫入設備變數暫存器數值int WRITE_Equip_Variable_Register(unsigned short VarID, unsigned short VarRegAddr);//21.10 WRITE_Equip_Variable_Valueint WRITE_Equip_Variable_Value(unsigned short VarID, unsigned short SetRegValue);//21.11 DELETE_Equip_Variable : 刪除設備變數int DELETE_Equip_Variable(unsigned short VarID);//21.12 READ_System_Status : 讀取系統狀態int READ_System_Status(unsigned short ParaCount, std::vectorunsigned short ParaID,std::vectorstd::string ParaName, std::vectorunsigned short DataType,std::vectorunsigned short DataSize, std::vectorstd::vectorunsigned char Data);//21.13 READ_FW_Version : 讀取韌體序號int READ_FW_Version(unsigned short ParaCount, std::vectorunsigned short ParaID,std::vectorstd::string ParaName, std::vectorunsigned short DataType,std::vectorunsigned short DataSize, std::vectorstd::vectorunsigned char Data);/*22 通道設定*///22.1 READ_Channel_Setting : 讀取通道設定int READ_Channel_Setting(unsigned short Channel, unsigned int SeriesType, unsigned short AxisNum,std::vectorunsigned short AxisID, std::vectorbool IsEnable,std::vectorunsigned char AxisTypeID, std::vectorunsigned char SpindleID,std::vectorunsigned short EtherCATPort, std::vectorunsigned short SerialPort,std::vectorstd::string AxisName);//22.2 WRITE_Single_Channel_Setting : 寫入單筆通道設定int WRITE_Single_Channel_Setting(unsigned short Channel,unsigned short AxisID, bool IsEnable,unsigned char AxisTypeID, unsigned char SpindleID,unsigned short EtherCATPort, unsigned short SerialPort,std::string AxisName);//22.3 WRITE_Channel_Setting : 寫入全部通道設定int WRITE_Channel_Setting(unsigned short Channel, unsigned int SeriesType, unsigned short AxisNum,std::vectorunsigned short AxisID, std::vectorbool IsEnable,std::vectorunsigned char AxisTypeID, std::vectorunsigned char SpindleID,std::vectorunsigned short EtherCATPort, std::vectorunsigned short SerialPort,std::vectorstd::string AxisName);/*23 EIO 設定*///23.1 READ_Single_EIO_Setting : 根據 EIO ID 讀取單筆 EIO 設定值int READ_Single_EIO_Setting(unsigned short ID, std::string Type, unsigned short Port, unsigned int StartAddress, unsigned int Polarity, bool IsDisc);//23.2 READ_EIO_Setting : 讀取 EIO 設定int READ_EIO_Setting(unsigned short IONum, std::vectorunsigned short ID,std::vectorstd::string Type, std::vectorunsigned short Port,std::vectorunsigned int StartAddress, std::vectorunsigned int Polarity,std::vectorbool IsDisc);//23.3 WRITE_Single_EIO_Setting : 根據 EIO ID 寫入單筆 EIO 設定int WRITE_Single_EIO_Setting(unsigned short ID, unsigned short Port, unsigned int StartAddress, unsigned int Polarity, bool IsDisc);//23.4 WRITE_EIO_Setting : 寫入 EIO 設定int WRITE_EIO_Setting(unsigned short IONum, std::vectorunsigned short ID,std::vectorunsigned short Port,std::vectorunsigned int StartAddress, std::vectorunsigned int Polarity,std::vectorbool IsDisc);//23.5 READ_EIO_Status : 讀取 EIO 連線狀態int READ_EIO_Status(unsigned short IONum, std::vectorbool IsConnected);/*24 檔案程式資訊*///24.1 READ_Disk_Quota : 讀取磁碟剩餘空間int READ_Disk_Quota(char DiskType, int DiskQuota);//24.2 READ_Directory_List : 讀取磁碟目錄清單int READ_Directory_List(std::string Path, std::vectorstd::vectorstd::string FileList);//24.3 UPLOAD_File : 上傳檔案至 CNCint UPLOAD_File(std::string SrcFilePath, std::string DstFilePath, unsigned int Percent);//24.4 DOWNLOAD_File : 從 CNC 下載檔案int DOWNLOAD_File(std::string SrcFilePath, std::string DstFilePath, unsigned int Percent);//24.5 DELETE_file : 刪除 CNC 上檔案int DELETE_file(std::string DeleteFilePath);//24.6 RENAME_File : 修改 CNC 上檔案名稱int RENAME_File(std::string SrcFilePath, std::string DstFilePath);//24.7 MAKE_Directory : CNC 上建立目錄int MAKE_Directory(std::string PathOfDirectory);//24.8 REMOVE_Directory : CNC 上移除目錄int REMOVE_Directory(std::string PathOfDirectory);//24.9 WRITE_NC_Main : 設定加工程式為主程式int WRITE_NC_Main(unsigned short Channel, std::string MainFilePath);//24.10 READ_NC_Pointer : 讀取 NC 執行行號int READ_NC_Pointer(unsigned short Channel, int LineNo, int MDILineNo);//24.11 READ_Preview_Code : 讀取 NC 預讀程式內容int READ_Preview_Code(unsigned short Channel, unsigned short CodeCount, std::vectorunsigned int LineNo, std::vectorstd::string LineContent);//24.12 READ_Current_Code : 讀取 NC 當前程式內容int READ_Current_Code(unsigned short Channel, unsigned short CodeCount,std::vectorunsigned int LineNo, std::vectorstd::string LineContent);/*25 斷點搜尋*///25.1 READ_CodeSearch_LineNo : 讀取斷點搜尋行號int READ_CodeSearch_LineNo(unsigned short Channel, int LineNo);//25.2 READ_CodeSearch_Position : 讀取斷點搜尋座標int READ_CodeSearch_Position(unsigned short Channel, unsigned short Unit, unsigned short AxisNum,std::vectorunsigned short AxisID, std::vectordouble CoordMech,std::vectordouble CoordAbs, std::vectordouble CoordRel,std::vectordouble CoordRes, std::vectordouble CoordOffset);//25.3 WRITE_CodeSearch_Execution : 執行斷點搜尋int WRITE_CodeSearch_Execution(unsigned short Channel, std::string SearchStr);//25.4 READ_CodeSearch_Status :讀取斷點搜尋狀態int READ_CodeSearch_Status(unsigned short Channel);/*26 手動輸入*///26.1 WRITE_MDI_Load : MDI 載入int WRITE_MDI_Load(unsigned short Channel, unsigned short Cursor, std::vectorstd::stringContent);//26.2 READ_MDI_code : 讀取 MDI 執行程式的當前行號與內容int READ_MDI_code(unsigned short Channel, unsigned int LineNo, std::vectorstd::string Content);//26.3 CLEAR_MDI: MDI 清除int CLEAR_MDI(unsigned short Channel);//26.4 READ_MDI_Current_Code : 讀取當前 MDI 執行程式的行號與內容int READ_MDI_Current_Code(unsigned short Channel, unsigned short CodeCount,std::vectorunsigned int LineNo, std::vectorstd::stringContent);//26.5 READ_MDI_Current_File: 讀取 MDI 當前執行的檔案名稱int READ_MDI_Current_File(unsigned short Channel, std::string FileName);/*27 伺服監控*///27.1 READ_Servo_Monitor: 伺服監控int READ_Servo_Monitor(unsigned short Num, std::vectorunsigned short Channel,std::vectorunsigned short AxisID, std::vectorbool IsConnect,std::vectorbool IsServoOn, std::vectorshort Load,std::vectorshort Peak, std::vectordouble MechCoord,std::vectorbool IsHome, std::vectorbool AbsHomeSet,std::vectorunsigned short EncoderType);//27.2 WRITE_Home_Setting : 絕對歸零設定int WRITE_Home_Setting(unsigned short Channel, unsigned short AxisID);/*28 其他函式*///28.1 READ_SP_InterMem : 讀取軟體面板內部記憶體int READ_SP_InterMem(unsigned short MemType, unsigned short Offset,unsigned short Length, std::vectorunsigned short MemValue);//28.2 WRITE_SP_InterMem: 寫入軟體面板內部記憶體int WRITE_SP_InterMem(unsigned short MemType, unsigned short Offset,unsigned short Length, std::vectorunsigned short MemValue);//28.3 READ_SP_BarCodeData: 讀取面板 BarCode 資料int READ_SP_BarCodeData(unsigned short BarcodeIndex, unsigned short Length, std::vectorunsigned char BarcodeValue);//28.4 WRITE_SP_BarCodeData: 寫入軟體面板 BarCode 資料int WRITE_SP_BarCodeData(unsigned short BarcodeIndex, unsigned short Length, std::vectorunsigned char BarcodeValue);/*29 通用函式*///29.1 TransferUnit : 公英制數值轉換int TransferUnit(float value, unsigned short Unit, unsigned short Mode, float TransferValue);int TransferUnit(double value, unsigned short Unit, unsigned short Mode, double TransferValue);//29.3 TransferToString:數值轉換字串std::string TransferToString(float value, unsigned short DecPoint);std::string TransferToString(double value, unsigned short DecPoint);};}cpp文件 #using .\\CNCNetLib2.dll 该行为加载 C#版dll过程 需将 对应dll放置在程序 目录下 在处理托管类时由于托管类 在C版 中不能直接 调用所以得新建一个非托管类 通过 非托管类 来调用 该托管类 C#中当前类对象 调用 了 其他的类对象并且这个类对象 是单例 的。这时候就需要把这个类对象封装为非托管的静态对象纯C版的静态对象然后在不同的类中调用。 关键点 marshal_asstd::string(s) 将托管字符串转为 非托管字符串 marshal_asString^ 将非托管字符串转托管字符串 String^ vNCVersiongcnew String(); 定义一个托管字符串 C/cli说明请参考微软官方 托管类型 (C/CLI) | Microsoft Learn STL/CLR 库参考 | Microsoft Learn marshal_as | Microsoft Learn 如何使用 gcnew 创建值类型并使用隐式装箱 | Microsoft Learn 如何在 C/CLI 中使用数组 | Microsoft Learn  #include pch.h#include CNCNetLib2C.h#using .\\CNCNetLib2.dll#include msclr\marshal_cppstd.h //托管数据与非托管数据转换using namespace CNCNetLib2; using namespace System; using namespace System::Runtime::InteropServices; using namespace msclr::interop;using namespace CNCNetLib2CPlus;//定义一个托管类再将CNCInfoClass对象定义为静态对象 public ref class CNCInfoManage abstract sealed { public:static CNCInfoClass^ obj;};CNCNetClassCPlus::CNCNetClassCPlus() {} CNCNetClassCPlus::~CNCNetClassCPlus() {}std::vectorstd::string CNCNetClassCPlus::GetCurrentIPAddress() {std::vectorstd::string vectorIP; //非托管数组vectorIP.clear();cli::arrayString^^ Ip; //托管数组CNCNetLib2::CNCNetClass obj;Ip obj.GetCurrentIPAddress();if (Ip){int iCount Ip-Length;for (int i 0; i iCount; i){auto s Ip[i];vectorIP.push_back(marshal_asstd::string(s)); //将托管数组元素保存到非托管数组 中}}return vectorIP; }int CNCNetClassCPlus::GetNetConfig(std::string IPAddress, std::string MACAddress, std::string SubMask, std::string Gateway, bool IsDHCP) {std::vectorstd::string vectorCNC;vectorCNC.clear();CNCNetLib2::CNCNetClass obj;String^ IPAddress2 marshal_asString^(IPAddress); //托管字符串非托管字符转托管字符串String^ MACAddress2gcnew String();String^ SubMask2 gcnew String();String^ Gateway2 gcnew String();bool IsDHCP2;int iRtn obj.GetNetConfig(IPAddress2, MACAddress2, SubMask2, Gateway2, IsDHCP2);if (!IPAddress2|| !SubMask2 ||!SubMask2 || !Gateway2){return iRtn;}MACAddress marshal_asstd::string(MACAddress2);SubMask marshal_asstd::string(SubMask2);Gateway marshal_asstd::string(Gateway2);IsDHCP IsDHCP2;return iRtn; }std::vectorstd::string CNCNetClassCPlus::BroadcastGetCNC(std::string localIP, std::string subMask) {std::vectorstd::string vectorCNC;vectorCNC.clear();CNCNetLib2::CNCNetClass obj;cli::arrayString^^ nameCnc obj.BroadcastGetCNC(marshal_asString^(localIP), marshal_asString^(subMask));if (nameCnc){int iCount nameCnc-Length;for (int i 0; i iCount; i){auto s nameCnc[i];vectorCNC.push_back(marshal_asstd::string(s));}}return vectorCNC; }CNCInfoClassCPlus::CNCInfoClassCPlus() {if (!CNCInfoManage::obj)CNCInfoManage::obj gcnew CNCInfoClass(); }CNCInfoClassCPlus::CNCInfoClassCPlus(std::string LocalIP, std::string CNCIP, int Timeout) {if (!CNCInfoManage::obj){String^ StrLocalIp marshal_asString^(LocalIP);String^ StrCNCIP marshal_asString^(CNCIP);CNCInfoManage::obj gcnew CNCInfoClass(StrLocalIp, StrCNCIP, Timeout);} }CNCInfoClassCPlus::~CNCInfoClassCPlus() {}//设置本地IP void CNCInfoClassCPlus::SetLocalIP(std::string LocalIP) {CNCInfoManage::obj-LocalIPAddress marshal_asString^(LocalIP); } void CNCInfoClassCPlus::GetLocalIP(std::string LocalIP) {if (CNCInfoManage::obj-LocalIPAddress){LocalIP marshal_asstd::string(CNCInfoManage::obj-LocalIPAddress);} } //设置远程CNC-IP void CNCInfoClassCPlus::SetCNCIP(std::string CNCIP) {CNCInfoManage::obj-RemoteIPAddress marshal_asString^(CNCIP); } void CNCInfoClassCPlus::GetCNCIP(std::string CNCIP) {if (CNCInfoManage::obj-RemoteIPAddress){CNCIP marshal_asstd::string(CNCInfoManage::obj-RemoteIPAddress);} } //设置连接超时时长ms void CNCInfoClassCPlus::SetTimeOut(int TimeOut) {CNCInfoManage::obj-Timeout TimeOut; } void CNCInfoClassCPlus::GetTimeOut(int TimeOut) {TimeOut CNCInfoManage::obj-Timeout; }//設定連線用資訊 int CNCInfoClassCPlus::SetConnectInfo(std::string LocalIP, std::string CNCIP, int Timeout) {String^ StrLocalIp marshal_asString^(LocalIP);String^ StrCNCIP marshal_asString^(CNCIP);int ret CNCInfoManage::obj-SetConnectInfo(StrLocalIp, StrCNCIP, Timeout);return ret; }int CNCInfoClassCPlus::Connect() {int ret CNCInfoManage::obj-Connect();return ret;}//取得連線狀態 bool CNCInfoClassCPlus::IsConnect() {bool ret CNCInfoManage::obj-IsConnect();return ret; }//中斷已建立的連線 void CNCInfoClassCPlus::Disconnect() {CNCInfoManage::obj-Disconnect(); }/*權限資訊*/ //讀取目前網路連線最高權限等級 int CNCInfoClassCPlus::READ_Current_Permission(unsigned short PermissionLevel) {unsigned short vPermissionLevel{0};int ret CNCInfoManage::obj-READ_Current_Permission(vPermissionLevel);PermissionLevel vPermissionLevel;return ret; }//檢查目前網路連線是否具備或高於輸入之權限等級 int CNCInfoClassCPlus::Check_Current_Permission(unsigned short PermissionLevel) {return CNCInfoManage::obj-Check_Current_Permission(PermissionLevel); }//鎖定網路連線權限鎖定後權限等級降為一般使用者 int CNCInfoClassCPlus::Lock_Permission() {return CNCInfoManage::obj-Lock_Permission(); }//取得輸入之權限等級 int CNCInfoClassCPlus::UnLock_Permission(unsigned short PermissionLevel, std::string UserName, std::string Password) {String^ StrUserName marshal_asString^(UserName);String^ StrPassword marshal_asString^(Password);return CNCInfoManage::obj-UnLock_Permission(PermissionLevel, StrUserName, StrPassword); }//變更權限帳號與密碼 int CNCInfoClassCPlus::Change_Password(unsigned short PermissionLevel, std::string OriginalUserName, std::string NewUserName, std::string OriginalPassword, std::string NewPassword) {String^ StrOriginalUserName marshal_asString^(OriginalUserName);String^ StrNewUserName marshal_asString^(NewUserName);String^ StrOriginalPassword marshal_asString^(OriginalPassword);String^ StrNewPassword marshal_asString^(NewPassword);return CNCInfoManage::obj-Change_Password(PermissionLevel, StrOriginalUserName, StrNewUserName, StrOriginalPassword, StrNewPassword); }//新增低於當前權限的帳號 int CNCInfoClassCPlus::Permission_Account_Add(unsigned short PermissionCount, std::string UserName, std::string Password) {String^ StrUserName marshal_asString^(UserName);String^ StrPassword marshal_asString^(Password);return CNCInfoManage::obj-Permission_Account_Add(PermissionCount, StrUserName, StrPassword); }//刪除低於當前權限的帳號 int CNCInfoClassCPlus::Permission_Account_Delete(unsigned short PermissionCount, std::string UserName, std::string Password) {String^ StrUserName marshal_asString^(UserName);String^ StrPassword marshal_asString^(Password);return CNCInfoManage::obj-Permission_Account_Delete(PermissionCount, StrUserName, StrPassword); }//取得當前低於權限的所有帳號列表 int CNCInfoClassCPlus::Permission_Account_List(unsigned short PermissionCount, std::vectorunsigned short PermissionLevel, std::vectorstd::string UserName, std::vectorstd::string Password) {PermissionLevel.clear();UserName.clear();Password.clear();cli::arrayunsigned short^ vPermissionLevel;cli::arrayString^^ vUserName;cli::arrayString^^ vPassword;int ret CNCInfoManage::obj-Permission_Account_List(PermissionCount, vPermissionLevel, vUserName, vPassword);//托管数组转非托管数组if (!vPermissionLevel || !vUserName || !vPassword){return ret;}int iCount_vPermissionLevel vPermissionLevel-Length;for (int i 0; i iCount_vPermissionLevel; i){auto s vPermissionLevel[i];PermissionLevel.push_back(s);}int iCount_vUserName vUserName-Length;for (int i 0; i iCount_vUserName; i){auto s vUserName[i];UserName.push_back(marshal_asstd::string(s));}int iCount_vPassword vPassword-Length;for (int i 0; i iCount_vPassword; i){auto s vPassword[i];Password.push_back(marshal_asstd::string(s));}return ret; }//讀取 CNC 加工與報警狀態 int CNCInfoClassCPlus::READ_CNC_Flags(unsigned char IsProcessing, bool IsAlarm) {return CNCInfoManage::obj-READ_CNC_Flags(IsProcessing, IsAlarm); }//讀取 CNC 加工、報警與系統動作狀態 int CNCInfoClassCPlus::READ_CNC_Flags(unsigned char IsProcessing, bool IsAlarm, unsigned char RestartAct) {return CNCInfoManage::obj-READ_CNC_Flags(IsProcessing, IsAlarm, RestartAct); }//讀取 CNC 基本資訊 int CNCInfoClassCPlus::READ_CNC_Information(unsigned short Channel, unsigned int Model, unsigned short MaxChannels,unsigned short Series, std::string NCVersion, unsigned short ScrewUnit,unsigned short DisplayUnit, unsigned int ApiVersion) { unsigned int vModel{0};unsigned short vMaxChannels{0};unsigned short vSeries{0};String^ vNCVersiongcnew String();unsigned short vScrewUnit{0};unsigned short vDisplayUnit{0};unsigned int vApiVersion{0};int retCNCInfoManage::obj-READ_CNC_Information(Channel, vModel, vMaxChannels, vSeries, vNCVersion, vScrewUnit, vDisplayUnit, vApiVersion);if (!vNCVersion){return ret;}Model vModel;MaxChannels vMaxChannels;Series vSeries;NCVersion marshal_asstd::string(vNCVersion);ScrewUnitvScrewUnit;DisplayUnitvDisplayUnit;ApiVersionvApiVersion;return ret; }int CNCInfoClassCPlus::READ_Channel_Information(unsigned int Channels, std::vectorunsigned short AxesOfChannel, std::vectorunsigned short ServoAxesofChannel,std::vectorunsigned short MaxAxisOfChannel, std::vectorstd::vectorstd::string AxisNameOfChannel, std::vectorunsigned short DecPointOfChannel) {AxesOfChannel.clear();ServoAxesofChannel.clear();MaxAxisOfChannel.clear();AxisNameOfChannel.clear();DecPointOfChannel.clear();cli::arrayunsigned short^ vAxesOfChannel;cli::arrayunsigned short^ vServoAxesofChannel;cli::arrayunsigned short^ vMaxAxisOfChannel;cli::arrayString^,2^ vAxisNameOfChannel;cli::arrayunsigned short^ vDecPointOfChannel;int ret CNCInfoManage::obj-READ_Channel_Information(Channels, vAxesOfChannel, vServoAxesofChannel, vMaxAxisOfChannel, vAxisNameOfChannel, vDecPointOfChannel);if (!vAxesOfChannel|| !vServoAxesofChannel || !vMaxAxisOfChannel || !vAxisNameOfChannel || !vDecPointOfChannel ){return ret;}for each(auto i in vAxesOfChannel){AxesOfChannel.push_back(i);}for each (auto i in vServoAxesofChannel){ServoAxesofChannel.push_back(i);}for each (auto i in vMaxAxisOfChannel){MaxAxisOfChannel.push_back(i);}for (int i 0; i vAxisNameOfChannel-GetLength(0); i){std::vectorstd::string AxisName;AxisName.clear();for (int j 0; j vAxisNameOfChannel-GetLength(1); j){auto Param0 vAxisNameOfChannel[i, j];AxisName.push_back(marshal_asstd::string(Param0));}AxisNameOfChannel.push_back(AxisName);}for each (auto i in vDecPointOfChannel){DecPointOfChannel.push_back(i);}return ret;}//讀取 Channel 伺服軸軸數 int CNCInfoClassCPlus::READ_Axis_Count(unsigned short Channels, unsigned short AxisCount) {int ret CNCInfoManage::obj-READ_Axis_Count(Channels, AxisCount);return ret; }//讀取目標通道內已啟用主軸數量 int CNCInfoClassCPlus::READ_Spindle_Count(unsigned short Channels, unsigned short SpindleCount) {int ret CNCInfoManage::obj-READ_Spindle_Count(Channels, SpindleCount);return ret; }//讀取 CNC 狀態 int CNCInfoClassCPlus::READ_Status(unsigned short Channel, std::string MainProgram, std::string CurrentProgram, std::string MainProgramPath,int CurrentLine, int MDICurrentLine, int Mode, int Status, bool IsAlarm, bool IsProcessing, unsigned char RestartAct) {String^ vMainProgram gcnew String();String^ vCurrentProgram gcnew String();String^ vMainProgramPath gcnew String();int ret CNCInfoManage::obj-READ_Status(Channel, vMainProgram, vCurrentProgram, vMainProgramPath,CurrentLine, MDICurrentLine, Mode, Status, IsAlarm, IsProcessing, RestartAct);if (!vMainProgram|| !vCurrentProgram|| !vMainProgramPath){return ret;}MainProgram marshal_asstd::string(vMainProgram);CurrentProgram marshal_asstd::string(vCurrentProgram);MainProgramPath marshal_asstd::string(vMainProgramPath);return ret; }//讀取 CNC Motion 狀態資訊 int CNCInfoClassCPlus::READ_NCMotion(unsigned short Channel, unsigned short Unit, unsigned int SPSpeed, double Feed,short SPLoad, double SPActSpeed, double ActFeed, unsigned int DwellTime, short SPToolNo,unsigned short MagaNo, unsigned short CmdToolNo, unsigned short StandbyToolNo, unsigned short StandbyPot,unsigned short DCode, unsigned short HCode, unsigned short TCode, unsigned short MCode,std::vectorunsigned short GCodeGroup, std::vectorunsigned short GCodeGroupDecimal, unsigned short FeedRate,unsigned short RPDRate, unsigned short SpindleRate, double JOGRate, unsigned short MPGRate) {GCodeGroup.clear();GCodeGroupDecimal.clear();cli::arrayunsigned short^ vGCodeGroup;cli::arrayunsigned short^ vGCodeGroupDecimal;int ret CNCInfoManage::obj-READ_NCMotion(Channel, Unit, SPSpeed, Feed,SPLoad, SPActSpeed, ActFeed, DwellTime, SPToolNo, MagaNo, CmdToolNo, StandbyToolNo, StandbyPot,DCode, HCode, TCode, MCode, vGCodeGroup, vGCodeGroupDecimal, FeedRate,RPDRate, SpindleRate, JOGRate, MPGRate);if (!vGCodeGroup|| !vGCodeGroupDecimal){return ret;}for each (auto i in vGCodeGroup){GCodeGroup.push_back(i);}for each (auto i in vGCodeGroupDecimal){GCodeGroupDecimal.push_back(i);}return ret; }//讀取主軸負載峰值 int CNCInfoClassCPlus::READ_Spindle_Load_Peak(unsigned short Channel, unsigned short AxisCount,std::vectorunsigned short AxisNr, std::vectorbool Result, std::vectorint AxisValue) {AxisNr.clear();Result.clear();AxisValue.clear();cli::arrayunsigned short^ vAxisNr;cli::arraybool^ vResult;cli::arrayint^ vAxisValue;int ret CNCInfoManage::obj-READ_Spindle_Load_Peak(Channel, AxisCount, vAxisNr, vResult, vAxisValue);if (!vAxisNr || !vResult || !vAxisValue){return ret;}for each (auto var in vAxisNr){AxisNr.push_back(var);}for each (auto var in vResult){Result.push_back(var);}for each (auto var in vAxisValue){AxisValue.push_back(var);}return ret; }/*12 座標資訊*/ //讀取 CNC 各軸座標 int CNCInfoClassCPlus::READ_Position(unsigned short Channel, unsigned short Unit, std::vectorstd::string AxisName,std::vectordouble CoordMech, std::vectordouble CoordAbs, std::vectordouble CoordRel,std::vectordouble CoordRes, std::vectordouble CoordOffset) {AxisName.clear();CoordMech.clear();CoordAbs.clear();CoordRel.clear();CoordRes.clear();CoordOffset.clear();cli::arrayString^^ vAxisName;cli::arraydouble^ vCoordMech;cli::arraydouble^ vCoordAbs;cli::arraydouble^ vCoordRel;cli::arraydouble^ vCoordRes;cli::arraydouble^ vCoordOffset;int ret CNCInfoManage::obj-READ_Position(Channel, Unit, vAxisName,vCoordMech, vCoordAbs, vCoordRel,vCoordRes, vCoordOffset);if (!vAxisName || !vCoordMech || !vCoordAbs || !vCoordRel || !vCoordRes || !vCoordOffset){return ret;}for each (String ^ var in vAxisName){auto s marshal_asstd::string(var);AxisName.push_back(s);}for each (auto var in vCoordMech){CoordMech.push_back(var);}for each (auto var in vCoordAbs){CoordAbs.push_back(var);}for each (auto var in vCoordRel){CoordRel.push_back(var);}for each (auto var in vCoordRes){CoordRes.push_back(var);}for each (auto var in vCoordOffset){CoordOffset.push_back(var);}return ret;}//写入工件座標資料二维数组 int CNCInfoClassCPlus::WRITE_GCoordinary(unsigned short Channel, unsigned short Unit, unsigned short Index, unsigned short Length, std::vectorstd::vectordouble GCoordinaryArray) {//读取动态二维数组的大小来定义下面数组大小int iRow GCoordinaryArray.size();int iCol GCoordinaryArray.at(0).size();if (iRow0 || iCol0){//写入数据错误。return -1000;}cli::arraydouble, 2^ vGCoordinaryArraygcnew cli::arraydouble, 2(iRow, iCol);for (unsigned int i 0; i GCoordinaryArray.size(); i){for (unsigned int j 0; j GCoordinaryArray.at(i).size(); j){vGCoordinaryArray[i, j] GCoordinaryArray.at(i).at(j);}}int ret CNCInfoManage::obj-WRITE_GCoordinary(Channel, Unit, Index, Length, vGCoordinaryArray);return ret; }//讀取偏移座標資料 int CNCInfoClassCPlus::READ_Offset_Coordinary(unsigned short Channel, unsigned short Unit, std::vectordouble CoordinaryArray) {CoordinaryArray.clear();cli::arraydouble^ vCoordinaryArray;int ret CNCInfoManage::obj-READ_Offset_Coordinary(Channel, Unit, vCoordinaryArray);if (!vCoordinaryArray){return ret;}for each (auto var in vCoordinaryArray){CoordinaryArray.push_back(var);}return ret; }//写入偏移座標資料 int CNCInfoClassCPlus::WRITE_Offset_Coordinary(unsigned short Channel, unsigned short Unit, std::vectordouble CoordinaryArray) {//读取动态二维数组的大小来定义下面数组大小int iRow CoordinaryArray.size();if (iRow 0){//写入数据错误。return -1000;}cli::arraydouble^ vCoordinaryArray gcnew cli::arraydouble(iRow);for (unsigned int i0; iCoordinaryArray.size();i){vCoordinaryArray[i]CoordinaryArray.at(i);}int ret CNCInfoManage::obj-WRITE_Offset_Coordinary(Channel, Unit, vCoordinaryArray);return ret; }
http://www.zqtcl.cn/news/998208/

相关文章:

  • 做网站价位wordpress tag 列表
  • 网站建设 李奥贝纳百度软文推广公司
  • 网站建设流程平台企业微信开发者文档
  • 唐山建设网站的网站青海网站建设企业
  • 北京企业建站系统模板网站建设公司专业网站科技开发
  • 工商注册在哪个网站手机浏览器网站开发
  • 建设电影网站的目的各个国家的google网站
  • centos 网站搭建中国互联网协会调解中心
  • 手机端视频网站模板下载做单页网站需要做什么的
  • 太原网站建设外包中国做乱的小说网站
  • 青海做网站哪家好旅游网站的功能及建设
  • 百度网站优化工具汉川网页设计
  • 网站标签优化怎么做可以看图片的地图什么软件
  • 品牌网站建设9小蝌蚪9wordpress会务网站模版
  • 免费推广网站入口202网页与网站建设
  • 武夷山市网站建设网站标签制作
  • 广州网站定制开发方案河南省新闻发布会直播
  • 普陀网站建设哪家便宜网站建设辶金手指排名十五
  • 网站怎么做百度百科租房网站开发视频教程
  • 动态做网站做自己的网站不是免费的
  • 小学校园门户网站建设方案宁波seo软件
  • 想自己做网站做推广从哪些方面进行网站建设
  • 北京南站在哪个区哪个街道html表白简单代码
  • 海口网站建设流程郑州三牛网站建设
  • 谁有国外hs网站沈阳关键字优化公司
  • wordpress双站企业品牌类网站
  • 网站架构软件做淘客app要网站吗
  • 云南云桥建设股份有限公司官方网站汽车seo是什么意思
  • 陕西省建设厅执业资格注册中心网站报名系统外贸网站 字体
  • 个人html网站百度一下生活更好