| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- // exports.cpp - 7 个 __stdcall 导出函数实现
- // 这些函数与原 CommModifyKit.dll 接口完全一致
- // 被 CommModifyService/DllWrapper.cpp 通过 GetProcAddress 获取并调用
- // 使用 .def 文件确保导出名无修饰(__stdcall 默认会带 _Func@N 修饰)
- #include "pch.h"
- #include "MonitorManager.h"
- #include "Logger.h"
- // ============================================================================
- // 回调函数指针类型定义(与 DllWrapper.h 中一致)
- // DLL 不需要导出这些类型,仅供内部使用
- // ============================================================================
- typedef LONG(CALLBACK* TOnData)(int Sequence, double dTime,
- DWORD ComNumber, DWORD Irp,
- DWORD dwSize, char* lpData);
- // ============================================================================
- // 1. InitMonitor - 初始化监控
- // 参数:
- // cKey - 授权密钥(宽字符,原默认值 "C09976511B62F0ADB759D87E6906D865")
- // aOnData - 事件回调函数指针(DLL 内部事件循环线程会调用)
- // 返回:TRUE 表示成功;FALSE 表示失败(错误码通过 get_LastErrror 获取)
- // ============================================================================
- extern "C"
- BOOL __stdcall InitMonitor(wchar_t* cKey, TOnData aOnData) {
- std::wstring key = cKey ? std::wstring(cKey) : std::wstring();
- bool ok = commkit::GetMonitorManager().InitMonitor(key, aOnData);
- return ok ? TRUE : FALSE;
- }
- // ============================================================================
- // 2. Monitor - 开始监控指定串口
- // 参数:dwNumber - 串口编号(1 = COM1, 2 = COM2 ...)
- // 返回:TRUE 成功;FALSE 失败
- // ============================================================================
- extern "C"
- BOOL __stdcall Monitor(DWORD dwNumber) {
- bool ok = commkit::GetMonitorManager().MonitorPort(dwNumber);
- return ok ? TRUE : FALSE;
- }
- // ============================================================================
- // 3. Stop - 停止监控指定串口
- // 参数:dwNumber - 串口编号
- // 返回:TRUE 成功;FALSE 失败
- // ============================================================================
- extern "C"
- BOOL __stdcall Stop(DWORD dwNumber) {
- bool ok = commkit::GetMonitorManager().StopPort(dwNumber);
- return ok ? TRUE : FALSE;
- }
- // ============================================================================
- // 4. SetWrite_Data - 向指定串口写数据
- // 参数:
- // dwNumber - 串口编号
- // lpBuffer - 数据缓冲区
- // Len - 数据长度(字节)
- // 返回:TRUE 成功;FALSE 失败
- // ============================================================================
- extern "C"
- BOOL __stdcall SetWrite_Data(DWORD dwNumber, char* lpBuffer, int Len) {
- bool ok = commkit::GetMonitorManager().WriteData(dwNumber, lpBuffer, Len);
- return ok ? TRUE : FALSE;
- }
- // ============================================================================
- // 5. SetRead_Data - 从指定串口发起异步读请求
- // 参数:
- // dwNumber - 串口编号
- // lpBuffer - 数据缓冲区(部分语义下传入预期数据,由驱动透传给设备)
- // Len - 数据长度(字节)
- // 返回:TRUE 表示请求已提交;FALSE 表示请求失败
- // 注意:实际读到的数据通过 TOnData 回调以 OP_READ 事件上抛
- // ============================================================================
- extern "C"
- BOOL __stdcall SetRead_Data(DWORD dwNumber, char* lpBuffer, int Len) {
- bool ok = commkit::GetMonitorManager().ReadData(dwNumber, lpBuffer, Len);
- return ok ? TRUE : FALSE;
- }
- // ============================================================================
- // 6. FreeMonitor - 释放监控资源
- // 解绑所有端口、停止事件循环、关闭驱动设备
- // 不卸载驱动服务(服务在系统生命周期内常驻)
- // ============================================================================
- extern "C"
- void __stdcall FreeMonitor(void) {
- commkit::GetMonitorManager().FreeAll();
- }
- // ============================================================================
- // 7. get_LastErrror - 获取最近一次操作的错误码
- // 注意:函数名拼写与原 DLL 一致(3 个 r)
- // 返回:错误码(见 CommWrapperBase.h 错误码表)
- // ============================================================================
- extern "C"
- int __stdcall get_LastErrror(void) {
- return commkit::GetMonitorManager().GetLastError();
- }
|