itas109 / CSerialPort

CSerialPort - lightweight cross-platform serial port library for C++/C/C#/Java/Python/Node.js/Electron
https://blog.csdn.net/itas109/article/details/84282860
Other
730 stars 339 forks source link

总是提示 “串口被占用” #56

Closed taotaoyuhust closed 2 years ago

taotaoyuhust commented 2 years ago

试了好几天电脑了,都是报这个问题 可以搜索到可用的串口,但是调用init和open函数的时候就是打不开。 请教下是什么问题?谢谢

windows 10系统,mfc vs2015

itas109 commented 2 years ago
  1. 建议使用最新吧4.1.1的例子进行测试,路径在CSerialPort/ examples
    |-- examples # example 示例目录
    |   |-- CommMFC # CSerialPort MFC Demo use source code win32直接调用源码MFC程序示例
    |   |-- CommDLL # CSerialPort MFC Demo use Win32 Dll 
    |   |-- CommNoGui # CSerialPort No Gui Demo 无界面程序示例
    |   |-- CommQT # CSerialPort QT Demo QT程序示例
    |   |-- CommTui # CSerialPort tui Demo 文本界面程序示例
  2. 如果还有问题,可以加 QQ技术交流群:129518033
itas109 commented 2 years ago

通过sp.getLastError()可以获取打开失败的错误码(include\CSerialPort\SerialPort_global.h中SerialPortError可查看错误码)

一般初始化错误可能由于停止位设置错误,如设置为数字1等问题

CSerialPort sp;
sp.init(portName, // windows:COM1 Linux:/dev/ttyS0
                itas109::BaudRate9600, 
                itas109::ParityNone, 
                itas109::DataBits8, 
                itas109::StopOne
                );

sp.open();

if (sp.isOpened())
{
        std::cout << "open " << portName << " success" << std::endl;
}
else
 {
       std::cout << "open " << portName << " failed" << std::endl;
}

 std::cout << sp.getLastError() << std::endl;