发布时间:2025-12-10 20:00:02 浏览次数:5
用createfile 打开串口失败的解决方法用createfile打开串口时,当串口号小于10时,打开正常。当串口号大于9时则打开失败,GetLastError返回值为2,错误提示为系统找不到指定的文件。原因是设备名不对。当串口小10时设备名为COMx,当串口时大于9时为\\\\.\\COMx,代码如下:/**进入临界段*/ EnterCriticalSection(&m_csCommunicationSync); /**把串口的编号转换为设备名*/charszPort[15]={0};i
用createfile 打开串口时,当串口号小于10时,打开正常。
当串口号大于9时则打开失败,GetLastError 返回值为2,错误提示为 系统找不到指定的文件。
原因是设备名不对。当串口小10时设备名为COMx, 当串口时大于9时为\\\\.\\COMx,代码如下:
/** 进入临界段 */EnterCriticalSection(&m_csCommunicationSync);/** 把串口的编号转换为设备名 */ char szPort[15] = {0}; if (portNo < 10) sprintf_s(szPort, "COM%d", portNo); else sprintf_s(szPort, "\\\\.\\COM%d", portNo);/** 打开指定的串口 */m_hComm = CreateFileA(szPort, /** 设备名,COM1,COM2等 */GENERIC_READ | GENERIC_WRITE, /** 访问模式,可同时读写 */0, /** 共享模式,0表示不共享 */NULL, /** 安全性设置,一般使用NULL */OPEN_EXISTING, /** 该参数表示设备必须存在,否则创建失败 */0,0);/** 如果打开失败,释放资源并返回 */if (m_hComm == INVALID_HANDLE_VALUE){ DWORD err = GetLastError(); printf("err:%d\n", err);LeaveCriticalSection(&m_csCommunicationSync);return false;} 是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!
【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…