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); } }