跳到千问挖的坑里去了

做过USB HID设备,信赖千问写代码,就想交给它来完成,结果代码如下

//#include "stdafx.h" // VS2010 默认预编译头

#include "CounterCardSDK.h"

#include <setupapi.h>

#include "hidsdi.h"

#include <winsock2.h>

#include <stdio.h> // 必须包含,用于 printf/sprintf

#pragma comment(lib, "setupapi.lib")

#pragma comment(lib, "hidsdi.lib")

#pragma comment(lib, "ws2_32.lib")

// --- 全局变量 ---

static std::vector<DeviceInfo> g_Devices;

static int g_CurrentIndex = -1;

static HANDLE g_hCom = INVALID_HANDLE_VALUE;

static SOCKET g_Socket = INVALID_SOCKET;

// --- 扫描串口 ---

void ScanSerialPorts() {

HKEY hKey;

// 注意:VS2010 推荐使用 RegOpenKeyExA 明确指定 ANSI 版本

if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, "HARDWARE\\DEVICEMAP\\SERIALCOMM", 0, KEY_READ, &hKey) == ERROR_SUCCESS) {

char valueName64;

char valueData64;

DWORD valueNameLen = sizeof(valueName);

DWORD valueDataLen = sizeof(valueData);

DWORD type = REG_SZ;

DWORD index = 0;

while (RegEnumValueA(hKey, index++, valueName, &valueNameLen, NULL, &type, (LPBYTE)valueData, &valueDataLen) == ERROR_SUCCESS) {

DeviceInfo info = {0}; // C 风格初始化

strcpy_s(info.name, valueData); // 使用安全函数

info.type = DEV_TYPE_RS232;

info.isConnected = false;

g_Devices.push_back(info);

// 重置长度

valueNameLen = sizeof(valueName);

valueDataLen = sizeof(valueData);

}

RegCloseKey(hKey);

}

}

// --- 扫描 HID (模拟) ---

void ScanUSBHID() {

// 实际开发需引入 hidsdi.h 并链接 hid.lib

// 这里为了代码在 VS2010 能直接跑通,做简化处理

}

// --- 扫描以太网 (模拟) ---

void ScanEthernet() {

DeviceInfo info = {0};

strcpy_s(info.name, "192.168.1.200");

info.type = DEV_TYPE_ETHERNET;

info.isConnected = false;

// g_Devices.push_back(info);

}

// --- 导出函数实现 ---

extern "C" {

SDK_API int ScanDevices() {

g_Devices.clear();

g_CurrentIndex = -1;

ScanSerialPorts();

ScanUSBHID();

ScanEthernet();

return (int)g_Devices.size();

}

SDK_API bool GetDeviceInfo(int index, DeviceInfo* info) {

if (index >= 0 && index < (int)g_Devices.size() && info) {

*info = g_Devicesindex;

return true;

}

return false;

}

SDK_API bool ConnectDevice(int index) {

if (index < 0 || index >= (int)g_Devices.size()) return false;

DisconnectDevice(); // 先断开旧的

DeviceInfo& dev = g_Devicesindex;

if (dev.type == DEV_TYPE_RS232) {

char portPath128;

sprintf_s(portPath, "\\\\.\\%s", dev.name);

// 打开串口

g_hCom = CreateFileA(portPath, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

if (g_hCom != INVALID_HANDLE_VALUE) {

dev.isConnected = true;

g_CurrentIndex = index;

return true;

}

}

else if (dev.type == DEV_TYPE_ETHERNET) {

WSADATA wsaData;

if (WSAStartup(MAKEWORD(2, 2), &wsaData) == 0) {

g_Socket = socket(AF_INET, SOCK_STREAM, 0);

if (g_Socket != INVALID_SOCKET) {

dev.isConnected = true;

g_CurrentIndex = index;

return true;

}

}

}

return false;

}

SDK_API void DisconnectDevice() {

if (g_CurrentIndex != -1) {

g_Devicesg_CurrentIndex.isConnected = false;

}

if (g_hCom != INVALID_HANDLE_VALUE) {

CloseHandle(g_hCom);

g_hCom = INVALID_HANDLE_VALUE;

}

if (g_Socket != INVALID_SOCKET) {

closesocket(g_Socket);

g_Socket = INVALID_SOCKET;

WSACleanup();

}

g_CurrentIndex = -1;

}

SDK_API double ReadPosition() {

if (g_CurrentIndex == -1) return 0.0;

// 模拟数据

return 123.45;

}

SDK_API bool WriteParameter(int paramId, int value) {

if (g_CurrentIndex == -1) return false;

printf("配置发送: ID=%d, Val=%d\n", paramId, value);

return true;

}

}

#pragma comment(lib, "hidsdi.lib")

这个坑挖的你不知不觉,结果是费了一天的时间找这个库,问千问,告诉你又是少这个"SDK",又是少那个SDK,左找右找,都没办法解决,最后重装Visual Studio,还是没办法解决,才想起之前我也做过HID设备,怎么被它带进坑里了呢,在Windows系统中开发HID设备根本不需要这个库,有"hid.lib"和"setupapi.lib"2个库就够了,不管是32位的还是64位的

相关推荐
Mid_search1 小时前
随机排列与Fisher-Yates算法
人工智能·深度学习·强化学习·随机排列·fisher-yates
Chester_19995 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
ZGIAI5 小时前
ZGI Workflow:条件分支走错时先查哪一层
人工智能·架构
X54先生(人文科技)6 小时前
《元创力》纪实录 · 桥段 《窑变纪元:一份来自星历2227年的深空考古笔记》
人工智能·开源·ai写作·零知识证明
ZGIAI6 小时前
ZGI 文件产物:生成报告后怎样交付
人工智能·架构
东方-教育技术博主6 小时前
自动编码在教育场景中的重要性:一项基于多源证据的深度综述
大数据·人工智能
骥龙6 小时前
模块二:Ollama本地模型部署与OpenCode代理配置
人工智能
阡之尘埃6 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
Regentsoft丽晶软件6 小时前
品牌方新品上市促销政策无法实时同步经销商,有没有支持总部-经销商-终端一站式的分销解决方案?
人工智能·经验分享·数据库架构
liuqs3326 小时前
机器人产业加速发展,制造业正在迎来新的自动化探索
大数据·人工智能