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