跳到千问挖的坑里去了

做过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位的

相关推荐
羑悻的小杀马特23 分钟前
把随身WiFi改成网盘聚合器:中兴F50挂载本地存储+夸克网盘实战
运维·服务器·人工智能·网盘·openlist
meilindehuzi_a30 分钟前
从跑分到生产力:重新理解大模型基准测试与分层协作
人工智能
蜜桃味女焊匠人2 小时前
焊接生产线优化思路:解决手工焊、机器人焊气体浪费问题
人工智能·经验分享·其他·机器人
Georgeviewer6 小时前
商业落地评测|实体门店GEO优化性价比与服务体系深度复盘
大数据·人工智能
GuWenyue7 小时前
分不清AI Workflow与Agent?3个实战案例彻底讲透,做AI应用不再踩选型坑
人工智能
彩讯股份3006348 小时前
彩讯股份与心洲科技签署战略合作协议,共建企业级模型后训练能力
人工智能·科技
迅易科技8 小时前
从场景验证到Agent上线:迅易 × WorkBuddy如何帮助企业建设AI能力?
人工智能·ai·腾讯云
PNP Robotics8 小时前
多伦多大学机器人峰会|物理AI与具身智能落地新趋势
人工智能·深度学习·机器学习·机器人
GIR1238 小时前
官方出品 | 多通道土壤呼吸测量系统市场现状与十五五规划深度报告:行业分析+趋势预测全收录
大数据·人工智能·机器学习
绿算技术8 小时前
绿算技术亮相第十八届HPC AI中国年会,擘画AI基础设施全栈协同新图景
人工智能