windows电脑串口号被占用,如何清除和重置串口号。

事发原因,是在vscode2017中,当端口号大于10的时候,好像是不能打开并操作串口的。解决方法,要不就是通过修改关于vs的设置,让他可以操作,方法二,就是把多余无用的端口号,进行删除。
现在说的是用第二种方法:
1.首先,win+r,输入regedit打开注册表。在这里插入图片描述
2.进入路径:HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control -> COM Name Arbiter
在这里插入图片描述
在这里插入图片描述
3.把ComDB文件删除即可,无需重启,重新插入设备,端口号重新计算。

不过如果修改注册表并重启后,仍然有COM口状态是使用中的话,那说明你这个COM端口真正的连接着一个硬件设备的,这种情况下你只能选其他的端口号或者你检查并去掉这个设备。

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows 中,我们可以通过创建钩子(hook)来监视并截获串口通信数据。以下是一个简单的 C++ 代码示例,可以用来创建一个串口钩子,不占用串口,实现对指定的串口进行读取和修改: ```cpp #include <windows.h> #include <stdio.h> // 定义串口句柄 HANDLE hCom; // 串口钩子回调函数 LRESULT CALLBACK SerialPortHook(int nCode, WPARAM wParam, LPARAM lParam) { // 判断是否为串口数据 if (nCode == HC_ACTION && wParam == 0x01) { // 强制转换为串口数据结构体 PCOMSTAT pComStat = (PCOMSTAT)lParam; // 修改波特率为9600 DCB dcb; dcb.DCBlength = sizeof(DCB); GetCommState(hCom, &dcb); dcb.BaudRate = CBR_9600; SetCommState(hCom, &dcb); // 输出串口数据 char buffer[1024]; DWORD bytesRead; ReadFile(hCom, buffer, sizeof(buffer), &bytesRead, NULL); printf("串口数据: %s\n", buffer); // 重置串口状态 ClearCommError(hCom, NULL, pComStat); } // 继续下一个钩子 return CallNextHookEx(NULL, nCode, wParam, lParam); } int main() { // 打开串口 hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hCom == INVALID_HANDLE_VALUE) { printf("无法打开串口\n"); return 1; } // 设置串口钩子 HHOOK hHook = SetWindowsHookEx(WH_GETMESSAGE, SerialPortHook, NULL, GetCurrentThreadId()); // 等待消息 MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } // 卸载串口钩子 UnhookWindowsHookEx(hHook); // 关闭串口 CloseHandle(hCom); return 0; } ``` 在上面的代码中,我们通过调用`CreateFile`函数打开了一个名为`COM1`的串口,并且使用`SetWindowsHookEx`函数创建了一个串口钩子,将钩子函数设置为`SerialPortHook`。在`SerialPortHook`函数中,我们判断是否为串口数据,如果是,我们就将波特率修改为9600,并且通过`ReadFile`函数读取了一定量的串口数据,最后通过`ClearCommError`函数重置串口状态。 在主函数中,我们通过调用`GetMessage`函数等待消息,同时在消息循环中调用`DispatchMessage`函数处理消息。最后,我们通过调用`CloseHandle`函数关闭了串口句柄。 需要注意的是,该代码仅供参考,实际使用时需要根据具体情况进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值