You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

241 lines
12 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Text;
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace ocean
{
//错误代码
public enum EM_ERR_CODE
{
ERR_INPUT_PARAM = -1000, //入参为空或者不合法
ERR_PARAM_FORMAT, //参数格式错误
ERR_VERSION, //版本错误
ERR_TIMEOUT, //等待超时
ERR_NO_INIT, //未初始化
ERR_NOINIT_POOL, //未初始化线程池
ERR_REPEAT_INIT, //重复初始化
ERR_NO_CONNECT, //未连接
ERR_NO_REG, //未注册
ERR_REPEAT_REG, //重复注册
ERR_DATA_OVERLIMIT, //数据溢出
ERR_ID_EXIST, //ID已经存在
ERR_INVALID_ID, //此ID无效
ERR_INVALID_HANDLE, //无效句柄
ERR_INVALID_NAME, //无效名称
ERR_NAME_EXIST, //该名称已经存在
ERR_NOREADY, //不在就绪状态,不能接受该指令
ERR_NOINIT_CONTROL, //未初始化运动控制引擎
ERR_NOINIT_OPS, //未初始化流程控制引擎
//File error
ERR_CREATE_FILE, //创建文件失败
ERR_OPEN_FILE, //打开文件失败
ERR_WRITE_FILE, //写入文件失败
ERR_READ_FILE, //读取文件失败
ERR_DEL_FILE, //删除文件失败
ERR_GET_ATTRIBUTES, //获取文件属性失败
ERR_FILE_FORMAT, //文件格式错误
//commport error
ERR_OPEN_COM, //打开串口失败
ERR_COM_WRITE, //写入串口错误
ERR_COM_READ, //读取串口错误
ERR_GET_COMSTATE, //获取串口参数错误
ERR_SET_COMSTATE, //设置串口参数错误
ERR_CLEAR_COMSTACK, //清除缓冲区失败
//sysapi
ERR_NOINIT_NET, //未初始化网络协议栈
ERR_INIT_NET, //加载网络协议栈失败
ERR_NET_VERSION, //网络协议栈版本错误
ERR_CLIENT_NORESPONSE, //客户端无响应
ERR_CREATE_SOCKET, //创建socket失败
ERR_LISTEN_SOCKET, //监听socket失败
ERR_BIND_SOCKET, //绑定端口错误
ERR_ACCEPT_SOCKET, //接受连接失败
ERR_CONNECT_SOCKET, //连接服务端失败
ERR_GET_SOCKET, //获取socket信息失败(ip,port)
ERR_OPERATOR_EVENT, //操作事件失败
ERR_ABANDONED_EVENT, //事件被锁定, 无法操作
ERR_LOAD_DLL, //加载dll失败
ERR_LOAD_DLLFUN, //加载dll某个接口失败
ERR_INVALID_IP, //无效IP
ERR_INVALID_PORT, //无效端口
ERR_RECV_MSG, //接收消息出错
ERR_SEND_MSG, //发送消息出错
ERR_NETCALL, //网络调用出错
ERR_FORMAT_MSG, //消息格式错误
ERR_NO_LOGIN, //未登录
ERR_NO_LIMIT, //无权限
ERR_USER_EXIST, //用户已存在
ERR_USER_TOO_LONG, //用户名过长
ERR_PWD_TOO_LONG, //密码过长
ERR_INVALID_USER, //用户名无效
ERR_INVALID_PWD, //密码无效
ERR_INVALID_LIMIT, //无效的权限项
ERR_REPEAT_LIMIT, //重复的权限项
ERR_LIMIT_OVER, //权限设置超限
//motor err
ERR_NOINIT_CARD, //未初始化卡
ERR_MOTOR_API, //卡接口命令返回错误
ERR_NO_CARD, //卡不存在,或者无卡
ERR_LOAD_CFG, //加载卡配置文件失败
ERR_INIT_CARD, //初始化控制卡失败
ERR_INVALID_AXIS, //无效轴
ERR_OCCUPY_AXIS, //轴被占用
ERR_IO_TYPE, //IO类型错误
ERR_READ_IO, //读取IO失败
ERR_WRITE_IO, //写入IO失败
ERR_OCCUPY_IO, //IO被占用
ERR_READ_AD, //读取ad失败
ERR_WRITE_AD, //写入ad失败
ERR_AXIS_HOME, //轴回原失败
ERR_AXIS_MOVING, //轴正在运动中
ERR_GET_CURPOS, //获取当前位置失败
ERR_SET_SPEED, //设置速度失败
ERR_NO_SERVO, //轴未使能
ERR_AXIS_TRAP, //点位运动失败
ERR_SET_MOVETYPE, //设置运动模式失败
ERR_SET_CRD, //建立坐标系失败
ERR_GET_CRD, //获取坐标系失败
ERR_MOVE_LINE, //直线插补运动失败
ERR_MOVE_ARC, //圆弧插补失败
ERR_MOVE_CRD, //启动连续插补失败
ERR_START_SAFEMONITOR, //启动安全检测失败
ERR_SAFE_CHK, //安全空间限制
ERR_NO_HOMEP, //无原点信号
ERR_NO_LIMITN, //无负限位信号
ERR_NO_LIMITP, //无正限位信号
ERR_VISION_RES, //视觉处理错误
ERR_EM_MAX, //最大值,不是错误码
RETURN_OK = 0, //正常返回
};
//若需要获取拷贝进度,请实现本接口
//progress 当前进度 -- 百分比
//pszname 当前正在拷贝的文件路径
//其中一个参数发生变化时就会回调
//返回FALSE会中断拷贝返回TRUE继续拷贝
//*PS: 拷贝单个文件回调时pszname会传NULL
public delegate int COPYPROC(int progress, string pszname);
public class dir
{//目录接口
/****************************************************
*Function: 设置当前工作目录 -- 配置文件目录
*Intput: path 要设置的工作目录
key 若要设置额外的目录可以加一个key来标识
*Output: NULL
*Return: 成功返回0, 失败返回错误码
*PS: 此接口需要管理员权限,否则会返回失败
******************************************************/
[DllImport(@"sysapi.dll", EntryPoint = "set_work_path", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int set_work_path(string path, string key = null);
/****************************************************
*Function: 获取当前工作目录 -- 配置文件目录
*Intput: key 若要获取额外的目录可以加一个key来标识
*Output: NULL
*Return: 成功返回工作目录,失败返回空
******************************************************/
[DllImport(@"sysapi.dll", EntryPoint = "get_work_path", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
private static extern int get_path(StringBuilder strpath, string key = null);
public static string get_work_path()
{
StringBuilder strpath = new StringBuilder(256);
get_path(strpath);
return strpath.ToString();
}
/****************************************************
*Function: 获取当前exe/dll所在绝对路径
*Intput: NULL
dwAccess lpPath 路径缓冲区
*Output: 无
*Return: 成功返回0失败返回错误吗
******************************************************/
[DllImport(@"sysapi.dll", EntryPoint = "sys_GetCurrentPath", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
private static extern int sys_GetCurrentPath(StringBuilder strpath);
public static string get_now()
{
StringBuilder strpath = new StringBuilder(256);
sys_GetCurrentPath(strpath);
return strpath.ToString();
}
/****************************************************
*Function: 创建一个文件夹,若存在,则不创建
*Intput: path 文件夹全路径
*Output: NULL
*Return: 成功返回0, 失败返回错误码
******************************************************/
[DllImport(@"sysapi.dll", EntryPoint = "create_path", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int create(string path);
/*****************************************************
*Function: 删除一个文件夹
*Intput: filepath 需要检测的文件全路径
*Output: NULL
*Return: 成功返回true
******************************************************/
[DllImport(@"sysapi.dll", EntryPoint = "delete_path", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int del(string path);
/****************************************************
*Function: 判断一个文件/文件夹是否存在
*Intput: filepath 需要检测的文件全路径
*Output: NULL
*Return: 存在返回1, 否则返回0
******************************************************/
[DllImport(@"sysapi.dll", EntryPoint = "is_file_exist", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int exist(string path);
/****************************************************
*Function: 判断一个文件是否只读
*Intput: filepath 需要检测的文件全路径
*Output: NULL
*Return: 只读返回1, 否则返回0
******************************************************/
[DllImport(@"sysapi.dll", EntryPoint = "is_file_read_only", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int read_only(string path);
/****************************************************
*Function: 获取一个文件的大小
*Intput: filepath 需要检测的文件全路径
*Output: NULL
*Return: 返回文件大小>=0
******************************************************/
[DllImport(@"sysapi.dll", EntryPoint = "get_file_size", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int get_size(string path);
/****************************************************
*Function: 复制一个文件
*Intput: file 原文件夹路径
newfile 新文件夹路径
pcall 进度回调函数,若传入参数,则会自动回调
*Output: NULL
*Return: 成功返回0, 失败返回错误码
******************************************************/
[DllImport(@"sysapi.dll", EntryPoint = "copy_file", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int copyf(string file, string newfile, COPYPROC pcall = null);
/****************************************************
*Function: 复制一个文件夹所有内容到另外一个文件夹
*Intput: src 源目标文件夹路径
des 拷贝到哪?目的地路径
pext 扩展名 "txt or dat" -- 为空则全部拷贝
pcall 进度回调函数,若传入参数,则会自动回调
*Output: NULL
*Return: 成功返回0, 失败返回错误码
*PS:阻塞操作,可能执行会比较久
******************************************************/
[DllImport(@"sysapi.dll", EntryPoint = "copy_path", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int copy(string src, string des, string pext, COPYPROC pcall = null);
}
}