在createfile中打开串行端口时,如果序列号小于10,则会正常打开。
如果序列号大于9,则打开失败。 GetLastError的返回值为2,显示找不到指定文件的错误消息。
原因是设备名称错了。 如果串行端口小于10,则设备名称为COMx,如果串行端口大于9,则为\\.\COMx,代码为:
/**临界段* /企业(m _ cscommunicationsync ); /**将串行端口编号设置为设备名称*/char szPort[15]={0}; if(portNo10 ) sprintf_s ) SZport,' COM%d ',portno ); elsesprintf_s(SZport,'\\.\COM%d ',portNo ); /**指定的串行端口*/m_hcomm=createfilea(SZport,/**设备名称、COM1、COM2等) (*/GENERIC_READ | GENERIC_WRITE /**此参数表示设备必须存在。 如果不存在,创建将失败。 */0,0; /**如果打开失败,请释放资源并释放*/if (m _ hcomm==invalid _ handle _ value ) { DWORD err=GetLastError; 打印(err : % d (n ),err ); leavecriticalsection (m _ cscommunicationsync; 返回假; }