# 错误诊断

错误诊断

如果出现不理想的操作行为，可能需要进行扩展诊断。可以通过查看ACP服务的错误代号查看，详情可见下：

#ifndef LIBACP_LIBACPERR_H_

#define LIBACP_LIBACPERR_H_

enum AcpErrors {

ACP_ERR_SUCCESS = 0x0000,

// 通讯状态的变化

ACP_ERR_CONN_SUCCESS = 0x0001, // 连接成功

ACP_ERR_CONN_PENDING = 0x0002, // 正在连接

ACP_ERR_NO_CONN = 0x0003, // 未连接

ACP_ERR_CONN_REFUSED = 0x0004, // 拒绝连接

ACP_ERR_CONN_LOST = 0x0005, // 断开连接

ACP_ERR_CONN_TIMEOUT = 0x0006, // 连接超时

ACP_ERR_HOSTUNREACHABLE = 0x0007, // Host unreachable

ACP_ERR_AUTH_CONTINUE = 0x0008, // 需要权限认证

// 基础通讯协议类的错误

ACP_ERR_INVALID_ACPDEVICEID = 0x1001, // 无效的AcpDeviceId

ACP_ERR_INVAILD_IDGROUP, // 无效的id group

ACP_ERR_INVAILD_IDOFFSET, // 无效的id offset

ACP_ERR_INVAILD_DATAPACKAGE_LEN, // 无效的数据包长度

ACP_ERR_INVAILD_PORT, // 无效的port port号1-65535

ACP_ERR_PORT_UNREGISTER, // 路由port未注册

ACP_ERR_PORT_ALREADY_REGISTER, // 路由port号已经被注册了

ACP_ERR_MESSAGE_TIMEOUT, // 消息超时

ACP_ERR_UNKNOWN_CMDID, // 未知的CmdId

ACP_ERR_UNKNOWN_TOPIC, // 未知的topic

ACP_ERR_NOSUPPORT_CONNPROTOCOL, // 不支持的通讯协议

ACP_ERR_DATAPACKAGE_TOO_SMALL, // 数据包长度太小了

ACP_ERR_DATAPACKAGE_TOO_LONG, // 数据包长度太大了

ACP_ERR_SERIALIZED, // 序列化错误

ACP_ERR_DESERIALIZED, // 反序列化错误

ACP_ERR_HEADER_LEN_NOT_MATCH, // acp header长度不匹配

// 内部API使用的相关错误码

ACP_ERR_INVAILD_HANDLER = 0x2001, // 无效的句柄

ACP_ERR_INVAILD_NETADAPTER, // 无效的网络适配器

ACP_ERR_INIT_RESOURCE_ERROR, // 初始化资源错误

ACP_ERR_INVAILD_INPUT_PARAM, // 无效的输入参数

ACP_ERR_SERVER_NOT_RUNING, // ACP服务未运行

ACP_ERR_INVAILD_REQ_CMD, // 无效的请求命令

ACP_ERR_INVAILD_BUFF_LENGTH, // 无效的buff的长度

ACP_ERR_NOMEMORY, // 没有足够内存

ACP_ERR_NO_DISK_SPACE, // 没有足够的磁盘空间

// 文件传输错误码

ACP_ERR_FILESYSTEM_CREATEFILE_FAIL = 0x3000, // 创建文件失败

ACP_ERR_FILESYSTEM_FILEOPEN_FAIL, // 文件打开失败

ACP_ERR_FILESYSTEM_FILE_NO_EXIST, // 文件不存在

ACP_ERR_FILESYSTEM_FILEREAD_FAIL, // 读文件错误

ACP_ERR_FILESYSTEM_FILEWRITE_FAIL, // 写文件错误

ACP_ERR_FILESYSTEM_INVAILD_HANDLER, // 无效的文件句柄

ACP_ERR_FILESYSTEM_TRANSFER_FAULT, // 传输错误

// 组件相关的错误码

ACP_ERR_CMP_UNREGISTER = 0X4001, // 组件位注册

ACP_ERR_CMP_CONN_ACPSERVER_TIMEOUT, // 连接服务超时

ACP_ERR_CMP_ALREADY_REGISTER, // 组件已经注册

};

#endif // LIBACP_LIBACPERR_H_

## 二、功能介绍

#### 枚举、结构体及部分类型数据说明

ATTRIB

枚举变量，定义了文件的特征，用于给GetAttribute功能块提供返回值

ERROR

枚举变量，整个库中可能出现的故障定义

MODE

枚举变量，定义了Open功能块中，文件打开的方式

FILE_DIR_ENTRY

结构体变量，保存了目录下每个条目的信息，通过顺序调用DirList来填写

T_FILENAME

TYPE T_FILENAME: STRING(255)

T_HANDLE

TYPE T_HANDLE: ULINT

T_SIZE

TYPE T_SIZE : UDINT

T_PVOID

TYPE T_PVOID: ULINT

#### 目录类(Directory)

DirOpen

打开一个目录，返回的句柄后续使用的时候都需要用到，如果需要获得目录内的条目，需要调用DirList，一个一个获得

DirClose

关闭一个目录

DirList

读取目录条目，每次读取一条，读取的内容存储在结构体中

DirCreate

创建一个子目录

DirCopy

拷贝目录，可以通过参数指定是否拷贝子目录或者是否覆盖

DirRename

重命名一个目录（不建议用此功能移动文件，可以使用Rename）

DirRemove

删除一个目录（可能有文件已经被Open打开）

#### 文件类(File)

FileOpen

打开一个文件，生成一个句柄，可以用于Read、Write、Close（xExclusive参数codesys不支持）

FileClose

关闭文件句柄

FileRead

读取数据到buffer中

FileWrite

将buffer写入文件中

FileCopy

拷贝文件，如果不存在则创建，存在根据参数可以选择覆盖

FileDelete

删除文件，如果Open也会被删除

FileRename

重命名文件，也可以用于移动文件，不能用于移动目录

FileSetPos

移动当前打开文件的读写位置

FileGetPos

读取当前打开文件的读写位置

FileEOF

用于判断当前读写位置是否已经到文件末尾

FileFlush

强制将缓冲区内的数据写入到磁盘中

FileGetAttribute

获得当前打开文件的文件属性，文件属性的定义位于枚举变量ATTRIB

FileGetSize

获取文件名指向文件的文件大小

FileGetTime

获取文件名指向文件的最新修改日期

#### 函数类

GetLibVersion

功能描述：返回当前版本信息

Return：（VERSION）返回当前版本信息

## 三、支持与服务

中科时代为公司产品及解决方案提供全方位支持与服务，确保针对相关问题给予快速且专业的响应。

资料下载

我们的资料下载专区涵盖了丰富的文件资源，包括应用案例、技术文档、产品介绍等，满足您的多样化需求。

资料下载地址：https://help.sinsegye.com.cn/

获取支持

如需中科时代产品的本地支持与服务，请随时联系我们。您可以通过访问我们的官方网站www.sinsegye.com.cn，查找中科时代的分公司地址，并获取更多关于中科时代的信息。

此外，您还可以通过以下方式联系我们：

- 热线电话：400-013-2158

- 邮箱地址：support@sinsegye.com.cn