createfile()打开串口失败,求解答 [问题点数:40分,结帖人diana112]

Bbs1
本版专家分:0
结帖率 100%
Bbs3
本版专家分:606
Bbs10
本版专家分:171733
Blank
红花 2018年7月 VC/MFC大版内专家分月排行榜第一
2017年10月 VC/MFC大版内专家分月排行榜第一
2016年3月 VC/MFC大版内专家分月排行榜第一
2014年10月 VC/MFC大版内专家分月排行榜第一
2014年9月 VC/MFC大版内专家分月排行榜第一
2014年7月 VC/MFC大版内专家分月排行榜第一
2014年6月 VC/MFC大版内专家分月排行榜第一
2014年5月 VC/MFC大版内专家分月排行榜第一
2014年4月 VC/MFC大版内专家分月排行榜第一
2014年2月 VC/MFC大版内专家分月排行榜第一
2013年7月 VC/MFC大版内专家分月排行榜第一
Blank
黄花 2019年7月 VC/MFC大版内专家分月排行榜第二
2019年6月 VC/MFC大版内专家分月排行榜第二
2019年5月 VC/MFC大版内专家分月排行榜第二
2019年4月 VC/MFC大版内专家分月排行榜第二
2019年3月 VC/MFC大版内专家分月排行榜第二
2018年10月 VC/MFC大版内专家分月排行榜第二
2018年9月 VC/MFC大版内专家分月排行榜第二
2018年8月 VC/MFC大版内专家分月排行榜第二
2018年5月 VC/MFC大版内专家分月排行榜第二
2017年12月 VC/MFC大版内专家分月排行榜第二
2017年6月 VC/MFC大版内专家分月排行榜第二
2017年5月 VC/MFC大版内专家分月排行榜第二
2017年1月 VC/MFC大版内专家分月排行榜第二
2016年11月 VC/MFC大版内专家分月排行榜第二
2016年4月 VC/MFC大版内专家分月排行榜第二
2014年11月 VC/MFC大版内专家分月排行榜第二
2014年1月 VC/MFC大版内专家分月排行榜第二
2013年10月 VC/MFC大版内专家分月排行榜第二
2013年9月 VC/MFC大版内专家分月排行榜第二
2013年6月 VC/MFC大版内专家分月排行榜第二
2013年4月 VC/MFC大版内专家分月排行榜第二
2012年6月 VC/MFC大版内专家分月排行榜第二
Blank
蓝花 2018年11月 VC/MFC大版内专家分月排行榜第三
2018年6月 VC/MFC大版内专家分月排行榜第三
2018年4月 VC/MFC大版内专家分月排行榜第三
2018年3月 VC/MFC大版内专家分月排行榜第三
2018年2月 VC/MFC大版内专家分月排行榜第三
2018年1月 VC/MFC大版内专家分月排行榜第三
2017年11月 VC/MFC大版内专家分月排行榜第三
2017年9月 VC/MFC大版内专家分月排行榜第三
2017年8月 VC/MFC大版内专家分月排行榜第三
2017年4月 VC/MFC大版内专家分月排行榜第三
2016年12月 VC/MFC大版内专家分月排行榜第三
2016年10月 VC/MFC大版内专家分月排行榜第三
2016年2月 VC/MFC大版内专家分月排行榜第三
2015年10月 VC/MFC大版内专家分月排行榜第三
2015年7月 VC/MFC大版内专家分月排行榜第三
2012年10月 VC/MFC大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs1
本版专家分:0
CreateFile打开串口很慢
我用这个方法<em>打开</em><em>串口</em>好慢,每次都好像卡在那一样,要3-5秒才能开好,程序如下,有办法加快么,谢谢各位了rn[code=C/C++]rn BOOL OpenPort(int BaudRate,int DataBits,int StopBits,int Parity,HAND *temphand)rn rn COMMTIMEOUTS CommTimeOuts;rn //<em>打开</em><em>串口</em>rn (*temphand).hComm=CreateFile((*temphand).Port,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);rn if((*temphand).hComm==INVALID_HANDLE_VALUE)rn rn //AfxMessageBox(_T("无法<em>打开</em>端口或端口已经<em>打开</em>!请检查USB是否连接! "));rn return FALSE;rn rn GetCommState((*temphand).hComm,&dcb);rn dcb.BaudRate=BaudRate;rn dcb.ByteSize=DataBits;rn dcb.Parity=Parity;rn dcb.StopBits=StopBits;rn dcb.fParity=FALSE;rn dcb.fBinary=TRUE;rn dcb.fDtrControl=0;rn dcb.fRtsControl=0;rn dcb.fOutX=0;rn dcb.fInX=0;rn dcb.fTXContinueOnXoff=0;rn dcb.fAbortOnError = true;rn rn //设置状态参数rn SetCommMask((*temphand).hComm,EV_RXCHAR); //<em>串口</em>事件:接收到一个字符rn SetupComm((*temphand).hComm,1024,1024); //设置接收与发送的缓冲区大小rn if(!SetCommState((*temphand).hComm,&dcb)) //设置<em>串口</em>的DCBrn rn AfxMessageBox(_T("无法按当前参数配置端口,请检查参数!"));rn ClosePort(temphand);rn return FALSE;rn rn rn //设置超时参数rn GetCommTimeouts((*temphand).hComm,&CommTimeOuts);rn CommTimeOuts.ReadIntervalTimeout=1; //接收字符间最大时间间隔;原值100rn CommTimeOuts.ReadTotalTimeoutMultiplier=1;rn CommTimeOuts.ReadTotalTimeoutConstant=1; //读数据总超时常量;原值100rn CommTimeOuts.WriteTotalTimeoutMultiplier=0;rn CommTimeOuts.WriteTotalTimeoutConstant=0;rn if(!SetCommTimeouts((*temphand).hComm,&CommTimeOuts))rn rn AfxMessageBox(_T("无法设置超时参数!"));rn ClosePort(temphand);rn return FALSE;rn rn rn //AfxMessageBox(_T("<em>打开</em>成功"));rn // PurgeComm((*temphand).hComm,PURGE_TXCLEAR|PURGE_RXCLEAR); //清除收/发缓冲区rn rn return TRUE;rn rn[/code]
createfile打开失败的问题??
#include rnrn#define _WIN32_WINNT 0x0500rn#include rnrnrnint main(int argc, char *argv[])rnrnrn HANDLE hDirectory = CreateFile("D:\\", GENERIC_ALL, FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE, NULLrn , OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);rn rn if (INVALID_HANDLE_VALUE == hDirectory) [color=#FF0000] //现在是在这里出了鬼,老是无效句柄[/color]rn rn cout << "create file failed!" << endl;rn DWORD dwErr = GetLastError();rn return -1;rn rn rn while (TRUE)rn rn Sleep(1000);rnrn FILE_NOTIFY_INFORMATION stFileNotifyInfo = 0;rn DWORD dwBytesRet = 0;rnrn BOOL bRet = ReadDirectoryChangesW(rn hDirectory,rn &stFileNotifyInfo,rn sizeof (FILE_NOTIFY_INFORMATION),rn TRUE,rn FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_DIR_NAME|FILE_NOTIFY_CHANGE_ATTRIBUTES|FILE_NOTIFY_CHANGE_SIZE|FILE_NOTIFY_CHANGE_LAST_WRITE|FILE_NOTIFY_CHANGE_LAST_ACCESS|FILE_NOTIFY_CHANGE_CREATION|FILE_NOTIFY_CHANGE_SECURITY, rn &dwBytesRet,rn NULL,rn NULLrn );rn rn if (bRet)rn rn cout << "change occour!" << endl;rn rn rnrn CloseHandle(hDirectory);rnrn return 0;rnrnrn我想写个文件监控程序,我首先要用<em>createfile</em><em>打开</em>一个文件,得到handle,然后再ReadDirectoryChangesW,传递这个handle进去,但是我现在<em>createfile</em><em>打开</em>directory死活成功不了,错误号老是3,无法识别路径,出了鬼了,请各位帮忙看看,谢谢了.
CreateFile打开USB设备失败
CString uDisk = "\\\\.\\PhysicalDrive";rnCString csNum = "1";//或"2","3",,,,rnHANDLE hDev = CreateFile(uDisk+csNum, GENERIC_WRITE|GENERIC_READ, rn FILE_SHARE_READ|FILE_SHARE_WRITE,rn NULL, OPEN_EXISTING,0,NULL);rnDWORD dwError = GetLastError();rnrn问题是:我在XR系统里以这样的方式<em>打开</em>U盘没有问题,但在Windows7里<em>打开</em>就出错,错误信息是dwError=ERROR_ACCESS_DENIED。我查过,可能是Windows账号权限不够的原因,请问各位大虾,有没有办法可以解决这个问题?谢谢!rnrn补充说明:我这里的U盘是自己做的,因为只有14Kbyte,所以做成FAT12格式的。
请问createfile打开失败
我的操作如下:rnwchar_t fileName[256] = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.txt";rnHANDLE hMedia = CreateFile(fileName, GENERIC_READ, rn FILE_SHARE_READ, NULL, OPEN_EXISTING, rn FILE_ATTRIBUTE_NORMAL, NULL);rnrnDWORD error = GetLastError();rnif (INVALID_HANDLE_VALUE == hMedia)rnrn printf("Open media file failed!\n");rnrnrn这样操作,怎么老是<em>失败</em>,请问怎么回事。谢谢。
打开串口(createfile)
为什么用<em>createfile</em><em>打开</em><em>串口</em>com1-9没有问题,而<em>打开</em>com10或以上的<em>串口</em>却打不开呢
如何用createfile打开串口
谁能正确用VB写出<em>createfile</em><em>打开</em>com2的声明、及语句;rn我这样做为什么<em>打开</em>不了:rnPublic Const GENERIC_READ = &H80000000 rnPublic Const GENERIC_WRITE = &H40000000 rnPublic Const OPEN_EXISTING = 3 rnPublic Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
CreateFile打开USB串口败.
我用代码<em>打开</em>一个系统自带的<em>串口</em>没问题,但是我要是<em>打开</em>一个USB的<em>串口</em>就要问题了,CreateFile提示<em>失败</em>.rn[code=C/C++]rn#include "stdafx.h"rn#include rn#include rn#include rn#include rn#include rnusing namespace std;rnrn#define COM_FILE_NUM "COM10" //USB<em>串口</em>名rnrnint _tmain(int argc, _TCHAR* argv[])rnrn HANDLE hCom = CreateFile(COM_FILE_NUM,//<em>串口</em>口名rn GENERIC_READ|GENERIC_WRITE, //允许读和写rn 0, //独占方式rn NULL,rn OPEN_EXISTING, //<em>打开</em>而不是创建rn FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, //重叠方式rn NULL);rnrn if(hCom == INVALID_HANDLE_VALUE)rn printf("open %s failed ..\n",COM_FILE_NUM); //<em>打开</em><em>串口</em>成功rn getchar();rn return 0;rn elsern printf("open %s success ..\n",COM_FILE_NUM); //<em>打开</em><em>串口</em>成功rn rn rnrn if(hCom !=NULL)rn CloseHandle(hCom);rn rn getchar();rn return 0;rnrn[/code]rnrn错误提示:找不到COM10这个设备文件.rnrn但是没道理啊我用其他<em>串口</em>工具可以<em>打开</em>COM10的,所以保证COM10是存在并可以用的。 rnrn
关于打开串口的CreateFile方法
小弟正在研究<em>串口</em>编程,有个问题想问一下大家。rnCreateFile(PortName,//<em>串口</em>号rn GENERIC_READ | GENERIC_WRITE,//允许读和写rn 0,//独占方式rn NULL,//<em>串口</em>此值设置为 NULLrn OPEN_EXISTING,//<em>打开</em>而不是创建rn FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, //文件属性rn NULLrn );rn我查资料这个文件属性都是写为FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,但是我们的程序里rnCreateFile(PortName,//<em>串口</em>号rn GENERIC_READ | GENERIC_WRITE,//允许读和写rn 0,//独占方式rn NULL,//<em>串口</em>此值设置为 NULLrn OPEN_EXISTING,//<em>打开</em>而不是创建rn 0, //文件属性rn NULLrn );rnrnrn文件属性的值为0,而且可以正常运行,但查资料没有查到这个设置为0有什么用啊,他和设置成FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,有什么区别吗
关于CreateFile打开串口出错!
最近使用CreateFile进行<em>串口</em>操作,环境为vc2013 unicode 下,使用句柄函数<em>打开</em>rnrnif (!m_Com.NewConnection(DATA_BY_CALLBACK, 0, nPort, this, OnCallbackComMsg))rn rn MessageBox(_T("<em>串口</em><em>打开</em>错误!"), _T("错误"), MB_ICONINFORMATION);rn return;rn rnrnHANDLE CComLink::OpenConnection(AFX_THREADPROC pfnThreadProc, BYTE nPort)rnrn HANDLE h_Com;rn wchar_t szPort[15];rn COMMTIMEOUTS CommTimeOuts; rnrn wsprintf(szPort,_T("\\\\.\\COM%d"),nPort);rnrn h_Com = CreateFile(szPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);rn if(h_Com == INVALID_HANDLE_VALUE) rn return NULL;rn ……rnrnrn<em>打开</em>后关闭rnm_Com.CloseCom();rnrnBOOL CComLink::CloseCom(/*HANDLE h_Com*/)rnrn m_bConnected = false;rn return FindClose(m_hCom);rnrnrn发现运行后,第一次<em>打开</em><em>串口</em>(笔记本插入usb转rs232线,<em>串口</em>号5),正常,也能发送数据rn然后点关闭后再次<em>打开</em>,即出错!跟踪显示句柄为0fxxxxxxxx。rn不知何原因?如何解决?rn
关于CreateFile()打开串口的问题
我用CreateFile函数<em>打开</em><em>串口</em>时只能<em>打开</em>(Com1-Com9)Com10以上的<em>串口</em>就打不开了rnrn请问如何解决?
使用 CreateFile 打开串口问题?
我的电脑自带一个<em>串口</em>,安装一块多<em>串口</em>卡(32口)rn使用API:rnhandle =CreateFile(com_name,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED, 0)rnrn只能<em>打开</em>COM1~COM9,COM10以上无法<em>打开</em>,rnrn使用PDQComm控件能<em>打开</em>所有端口rnrn为什么?rnrn如何突破限制?rnrnrn
CreateFile打开USB端口失败
CreateFile函数<em>打开</em>USB端口<em>失败</em>,GetLastError 返回错误为 32,表示端口被其它进程<em>打开</em>,但任务管理器没发现多余的软件rn同个软件在其它几台电脑上用是没问题的,CreateFile都是可以<em>打开</em>端口并收发数据,但有一台手提电脑上切总提示以上错误rn如果把CreateFile改为共享的方式<em>打开</em>端口是可以的,但是读写数据是不行的,rn请问这是什么原因呢,是系统的什么设置吗?rn谢谢
为什么我用CreateFile打开串口失败呢?
为什么用CreateFile<em>打开</em><em>失败</em>,返回值是~0rnCreateFile("com2", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, NULL, NULL);rn<em>串口</em>时虚拟的<em>串口</em>,rn但是open能<em>打开</em>也能传输数据rnopen("com2",O_RDWR)rn
CreateFile()打开串口失败,返回句柄值为0xffffffff
出错情况:设备1和设备2分别使用COM1和COM2外界通信,在不关闭软件的情况下,调换<em>串口</em>(即设备1/2,分别使用COM2/1),此时出错?以下是查找原因的步骤: _hCommHandle = ::CreateFile( _szCommStr, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLA
CreateFile()、GetCommState()、SetCommState()打开串口失败的原因或许是这个
博主初次在CSDN发帖,如果有什么写的不好的地方请多多见谅! 对于一般新手而言,直接使用CreateFile函数时,通常会出现以下错误: 函数 "char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容 例如: bool openport(char *portname)//<em>打开</em><em>串口</em> { hComm = CreateFile(portname, //<em>串口</em>号  //GENERI
【求助】为什么我用CreateFile打开串口总是失败
在 WIN2K + VB6 下用 CreateFile <em>打开</em><em>串口</em>总是, 总是返回 -1rnrn Dim lret As Longrn lret = CreateFile("COM3", GENERIC_READ Or GENERIC_WRITE, _rn 0&, 0&, OPEN_EXISTING, 0&, 0&)rnrnrn If lr = INVALID_HANDLE_VALUE Thenrn MsgBox GetAPIError, vbExclamation, "<em>打开</em><em>串口</em>出现错误:"rn Init_COMM = 0rn Exit Functionrn End Ifrnrn然后 用 FormatMessage 返回 错误描述是: 操作已完成 ,可是返回的 lret = -1 啊, 同时在 超级终端上读取<em>打开</em>,关闭,通讯一切正常。rnrnCOM3 是我用 USB 虚拟出的<em>串口</em>设备。
CreateFile 串口打不开,如下代码.....提示 打开COM失败
CreateFile <em>串口</em>打不开,如下代码.....rn hCom=CreateFile("COM15", // 文件名rn GENERIC_READ | GENERIC_WRITE, // 允许读和写 rn 0, // 独占方式rn NULL, rn OPEN_EXISTING, //<em>打开</em>而不是创建rn FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, // 重叠方式rn NULLrn );rn rn rn if(hCom==INVALID_HANDLE_VALUE)rn rn AfxMessageBox("<em>打开</em>COM<em>失败</em>!");rn int err=GetLastError(); rn CString st;rn st.Format( "Error in open COM port: %d\n", err ); rn MessageBox(st); rn return;rn
CreateFile打开串口失败 GetLastError()返回值为2
编译环境为C++ builder 2009rn代码如下:rnBOOL CSerial::Open( int nPort, int nBaud )rnrn if( m_bOpened ) return( TRUE );rnrn char szPort[15];rn char szComParams[50];rn DCB dcb;rnrn if(nPort > 9)rn wsprintf( (wchar_t *)szPort, (wchar_t *)"\\\\.\\COM%d", nPort );rn elsern wsprintf( (wchar_t *)szPort,(wchar_t *) "COM%d", nPort );rn [color=#FF6600]m_hIDComDev = CreateFile( (wchar_t *)szPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL );[/color]rn if( m_hIDComDev == NULL ) return( FALSE );rnrn memset( &m_OverlappedRead, 0, sizeof( OVERLAPPED ) );rn memset( &m_OverlappedWrite, 0, sizeof( OVERLAPPED ) );rnrn COMMTIMEOUTS CommTimeOuts;rn CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;rn CommTimeOuts.ReadTotalTimeoutMultiplier = 0;rn CommTimeOuts.ReadTotalTimeoutConstant = 0;rn CommTimeOuts.WriteTotalTimeoutMultiplier = 0;rn CommTimeOuts.WriteTotalTimeoutConstant = 5000;rn SetCommTimeouts( m_hIDComDev, &CommTimeOuts );rnrn sprintf( szComParams, "COM%d:%d,n,8,1", nPort, nBaud );rnrn m_OverlappedRead.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );rn m_OverlappedWrite.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );rnrn dcb.DCBlength = sizeof( DCB );rn GetCommState( m_hIDComDev, &dcb );rn dcb.BaudRate = nBaud;rn dcb.ByteSize = 8;rn dcb.fRtsControl = RTS_CONTROL_DISABLE; //RTS_CONTROL_ENABLE; // set RTS bit high!rn unsigned char ucSet;rn ucSet = (unsigned char) ( ( FC_RTSCTS & FC_DTRDSR ) != 0 );rn ucSet = (unsigned char) ( ( FC_RTSCTS & FC_RTSCTS ) != 0 );rn ucSet = (unsigned char) ( ( FC_RTSCTS & FC_XONXOFF ) != 0 );rn if( !SetCommState( m_hIDComDev, &dcb ) ||rn !SetupComm( m_hIDComDev, 10000, 10000 ) ||rn m_OverlappedRead.hEvent == NULL ||rn m_OverlappedWrite.hEvent == NULL )rn DWORD dwError = GetLastError();rn if( m_OverlappedRead.hEvent != NULL ) CloseHandle( m_OverlappedRead.hEvent );rn if( m_OverlappedWrite.hEvent != NULL ) CloseHandle( m_OverlappedWrite.hEvent );rn CloseHandle( m_hIDComDev );rn return( FALSE );rn rnrn m_bOpened = TRUE;rnrn return( m_bOpened );rnrnrnrnrn想<em>打开</em><em>串口</em> 使用命令AtCom.open(1,115200) 逐步调试的时候发现CreateFile<em>失败</em> 用GetLastError 显示错误代码为2rn请教如何修改? 谢谢好心人
用CreateFile 函数打开串口 总是显示串口无法打开
[img=https://img-bbs.csdn.net/upload/201603/04/1457079001_442022.png][/img][img=https://img-bbs.csdn.net/upload/201603/04/1457079167_227873.png][/img]rnrnrnrnrn hCom是全局变量 定义是句柄 myCom也是全局变量,类型是LPCTSTR,返回值总是INVALID_HANDLE_VALUE,什么原因啊!苦恼好久了。用<em>串口</em>调试助手COM4 是打得开的。用GetLastError()检错 ,说是操作成功完成
【急】vs2005 串口 createFile 函数创建失败???
hCom=CreateFile(_T("COM1"),rn GENERIC_READ|GENERIC_WRITE,rn 0,rn NULL,rn OPEN_EXISTING,rn FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,rn NULL);rnrnrn怎么改???rn用的是UNICODE
串口打开失败 VS2010
在网上下载了一个CSerialPort类,然后用VS2010创建了一个基于MFC的工程,发现<em>打开</em><em>串口</em>就是不灵,用GetLastError()返回是2,但是用<em>串口</em>调试工具试是好的......工程属性选择了Unicode,麻烦诸位大神帮忙看看怎么回事rn这个是调用部分rn[code=c]void CSerialPortDemoDlg::OnBnClickedButton1()rnrn // TODO: Add your control notification handler code herern bool bStauts;rn TCHAR str[256] = ;rn int i = m_cmbCom.GetCurSel() + 1;rnrn bStauts = CSPort.InitPort(this,i,19200,'N',8,1,9,512,1000,1000,1000,1000,1000);rn if (bStauts)rn rn MessageBoxW(str,_T("端口正确"));rn rn elsern rn MessageBoxW(str,_T("端口错误"));rn [/code]rn这个是InitPort的部分rn[code=c]sprintf(szBaud, "baud=%d parity=%c data=%d stop=%d", baud, parity, databits, mystop);rnrn // get a handle to the portrn m_hComm = CreateFile((LPCWSTR)szPort, // communication port string (COMX)rn GENERIC_READ | GENERIC_WRITE, // read/write typesrn 0, // comm devices must be opened with exclusive accessrn NULL, // no security attributesrn OPEN_EXISTING, // comm devices must use OPEN_EXISTINGrn FILE_FLAG_OVERLAPPED, // Async I/Orn 0); // template must be 0 for comm devicesrnrn if (m_hComm == INVALID_HANDLE_VALUE)rn rn INT err = GetLastError();rn // port not foundrn delete [] szPort;rn delete [] szBaud;rnrn return FALSE;rn [/code]
串口打开失败
我的程序中使用了一个打印机,这个打印机是USB口的,我将打印机的USB口转为了<em>串口</em>(计算机中显示为COM5),然后在对打印机进行操作,但是当程序运行到serialport.Open()的时候就会报“给定的端口名称未以COM/com 开头或未解析为有效的串行端口”的错误,我查看了注册表和设备管理器,显示都是COM5,serialport的设置如下,应该没什么问题的,找了半天不知道什么原因,求解啊!!!!!!!!!rn打印机驱动和USB转<em>串口</em>的驱动我都重新装过了,也还是不行,而且,我直接打印的话却是可以打印的,实在是搞不明白为什么,请高手指点下啊!!!!!!rn//设置<em>串口</em>的端口号rnserialPort.PortName = "COM5";rn//设置波特率rnserialPort.BaudRate = 921600;rn//设置停止位rnserialPort.StopBits = StopBits.One;rn//设置校验位rnserialPort.Parity = Parity.None;rn//设置数据位rnserialPort.DataBits = 8;
打开串口失败!!!!
我用STC单片机的ISP下载时发现下面的问题,真不知道怎么回事!!!前几天用的时候还可以 rn今天我却突然发现不能用了rnrnChinese:正在尝试与 MCU/单片机 握手连接 ... rn<em>打开</em><em>串口</em><em>失败</em>!rnChinese:<em>串口</em>已被其它程序<em>打开</em>或该<em>串口</em>不存在。rn
打开串口失败
m_hComm = CreateFile(szPort, // communication port string (COMX)rn GENERIC_READ | GENERIC_WRITE, // read/write typesrn 0, // comm devices must be opened with exclusive accessrn NULL, // no security attributesrn OPEN_EXISTING, // comm devices must use OPEN_EXISTINFILE_FLAG_OVERLAPPED // Async I/Orn 0); // template must be 0 for comm devicesrnrnrn我第一次<em>打开</em>时没问题,第二次<em>打开</em>时出现无效句柄。是否需要关闭句柄rn
打开串口失败
<em>打开</em><em>串口</em><em>失败</em>(分情况)。rn//wsprintf( szPort, "COM%d", nPort ); // OLDrnwsprintf( szPort, "\\\\.\\COM%d", nPort ); // 2009.2.24rn// m_hIDComDev = CreateFile( szPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL );rn m_hIDComDev = CreateFile( szPort,rn GENERIC_READ | GENERIC_WRITE, rn 0, rn NULL, rn OPEN_EXISTING,0, NULL);rnrn if( m_hIDComDev == INVALID_HANDLE_VALUE) rn rn DWORD dwErr = GetLastError();rn return( FALSE );rn rnrnrn在用普通的<em>串口</em>时,<em>打开</em>时正常的。rn但在使用 USB转<em>串口</em> 时,<em>打开</em>时总是<em>失败</em>,返回错误码rn5, Access is denied. ERROR_ACCESS_DENIED rnrn大伙知道是什么问题么.rn着急啊rnrn
用Createfile 打开串口发生了阻塞!
如题:rnarm9嵌入式开发板,wince4.2;在上面运行自己写的<em>串口</em>调试程序,正常情况下与PC端能够正常通信,但若是没有将开发板与PC端相连而直接运行自己的程序就会发生阻塞卡死的情况,经调试发现程序阻塞在了Createfile处,同样的情况,即使开发板与PC端相连了,若PC端没有<em>打开</em>相应的<em>串口</em>,开发板上的程序还是一样会出现卡死阻塞的情况,我也是由于项目需要,现学的wince,很多地方不懂,希望各位牛人指教rn下列的代码中红色的就是我所说的,在PC端<em>串口</em>没<em>打开</em>始,运行时发生阻塞的地方。rnrn m_hComm = [color=#FF0000]CreateFile[/color](_T("COM1:"), GENERIC_READ | GENERIC_WRITE, rn 0,rn 0, rn OPEN_EXISTING,rn FILE_FLAG_OVERLAPPED,rn 0); rn if(m_hComm == INVALID_HANDLE_VALUE)rn rn AfxMessageBox(_T("无法<em>打开</em>端口或端口已<em>打开</em>!请检查是否已被占用."));rn return FALSE;rn rn rn GetCommState(m_hComm, &dcb); /* 读取<em>串口</em>的DCB */rn dcb.BaudRate = 4800; rn dcb.ByteSize = 8;rn dcb.Parity = NOPARITY;rn dcb.StopBits = ONESTOPBIT; rn dcb.fParity = FALSE; rn dcb.fBinary = TRUE;rn dcb.fOutxCtsFlow = FALSE;rn dcb.fOutxDsrFlow = FALSE;rn dcb.fDtrControl = DTR_CONTROL_DISABLE; rn dcb.fRtsControl = RTS_CONTROL_DISABLE;rn dcb.fOutX = 0;rn dcb.fInX = 0;rn dcb.fTXContinueOnXoff = 0;rn AfxMessageBox(_T("debug 1"));rn if(![color=#FF0000]SetCommState[/color](m_hComm, &dcb)) /* 设置<em>串口</em>的DCB 会产生阻塞!!!*/rn rn AfxMessageBox(_T("无法按当前参数配置端口,请检查参数!"));rn PurgeComm(m_hComm, PURGE_TXCLEAR | PURGE_RXCLEAR); /* 清除收/发缓冲 */rn CloseHandle(m_hComm); m_hComm = INVALID_HANDLE_VALUE;rn return FALSE;rn rnrn GetCommTimeouts(m_hComm, &CommTimeOuts); rn CommTimeOuts.ReadIntervalTimeout = 100; /* 接收字符间最大时间间隔 */rn CommTimeOuts.ReadTotalTimeoutMultiplier = 1; rn CommTimeOuts.ReadTotalTimeoutConstant = 100; /* 读数据总超时常量 */rn CommTimeOuts.WriteTotalTimeoutMultiplier = 50;rn CommTimeOuts.WriteTotalTimeoutConstant = 2000; rn if(!SetCommTimeouts(m_hComm, &CommTimeOuts))rn rn AfxMessageBox(_T("无法设置超时参数!"));rn PurgeComm(m_hComm, PURGE_TXCLEAR | PURGE_RXCLEAR); /* 清除收/发缓冲 */rn CloseHandle(m_hComm); rn m_hComm = INVALID_HANDLE_VALUE;rn return FALSE;rn rnrn SetupComm(m_hComm, 16384, 16384); /* 设置接收与发送的缓冲区大小 */rn rn PurgeComm(m_hComm, PURGE_TXCLEAR | PURGE_RXCLEAR); /* 清除收/发缓冲区 */ rn rn SetCommMask(m_hComm, EV_RXCHAR|EV_TXEMPTY);//设置事件驱动的类型 rnrn CenterWindow(GetDesktopWindow()); // center to the hpc screenrn
用CreateFile打开串口设备,出现问题?
HANDLE hComm = CreateFile( "com10", GENERIC_READ | GENERIC_WRITE, 0, rn NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL /*| FILE_FLAG_OVERLAPPED*/, NULL );rn if ( INVALID_HANDLE_VALUE==hComm )rn rn int err=GetLastError();rn TRACE( "Error in open COM port: %s. %d\n", deviceName,err );rn return FALSE;rn rnrn/////////////rn我的机器上一共有20个<em>串口</em>,通过扩展来.rn用程序<em>打开</em> com1 到 com9 都没有问题,但是 com10 开始就出现错误rnerr=2 ,表示 The system cannot find the file specified. ERROR_FILE_NOT_FOUND rnrn////////////rn奇怪的是我通过 CMsComm 空间就可以访问大于10的<em>串口</em>,rn代码如下:rnvoid CComTestDlg::OnBUTTONOpen() rnrn // TODO: Add your control notification handler code herern tryrn m_comm1.SetCommPort(10);rn m_comm1.SetPortOpen(TRUE);rn MessageBox("Open ok!");rn catch(...)rn MessageBox("ERROR Open Comm");rn rnrnrn///////////////////rn请问,用文件方式如何解决这个问题?rn路过的都帮助顶一下。。。。。。rnrn
请教调用CreateFile打开分区失败的原因。
我在vs2008中编译一个测试代码,<em>打开</em>一个分区,没有问题!rnrn测试通过后,我在vs2008里建立了一个QT工程,然后把测试代码嵌入里面,希望可以在图形界面中选择需要<em>打开</em>的分区,编译通过,但死活都是<em>打开</em>分区<em>失败</em>!rnrn<em>打开</em>分区的代码如下:rn_TCHAR volumePath[7];rn_sntprintf(volumePath, 6, _T("\\\\.\\%c:"), volume);rnvolumePath[6] = _T('\0');rnhVolume = CreateFile((LPCTSTR )volumePath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,rn NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);rnrnrn查找返回的错误代码显示的错误是:rn刚开始的错误码是2:意思是找不到<em>打开</em>的文件rn换了好几个分区来<em>打开</em>时变成了这个错误:@err,hr 0x0000007b 文件名、目录名或卷标语法不正确。 unsigned longrnvolumePath的值显示是:\\.\\C:rn_TCHAR的大小是1rn不知道qt对这种反斜杠的文件名:\\.\\C: 有没有敏感,以致打不开分区。rnrn望知道错误的大侠指点
新手求教CreateFile()打开失败,返回5
以前没有接触过windows的API,因为程序有用到,所以从网上复制了一个函数rnrn系统是win7,用工具激活为正版,VS2013社区版,程序启动方式为“右键-》已管理员身份运行”rnrn函数功能是判断某个盘符是否为U盘还是移动硬盘(需要把这两个和本地硬盘区别),其中有段代码用到了CreateFile(),问题也是出现在这里,出错,返回5rnrn[code=c]rn WCHAR newDrive[256]; //改函数传递进来的参数是CHAR* drive,这里转换为WCHARrn memset(newDrive, 0, sizeof(newDrive));rn MultiByteToWideChar(CP_ACP, 0, drive, strlen(drive)+1, newDrive, sizeof(newDrive)/sizeof(newDrive[0]));rn _wsetlocale(LC_ALL, newDrive);rn wprintf(L"%s", newDrive); //测试下转换是否正确,这里控制台显示结果"C:"而不是"C:/"rn //----rn hDevice = CreateFile(rn newDrive, // drive to openrn GENERIC_READ | GENERIC_WRITE, // access to the drivern FILE_SHARE_READ | FILE_SHARE_WRITE, //share modern NULL, // default security attributesrn OPEN_EXISTING, // dispositionrn 0, // file attributesrn NULL // do not copy file attributern );rn if (hDevice == INVALID_HANDLE_VALUE) // cannot open the drivern rn fprintf(stderr, "CreateFile() Error: %ld\n", GetLastError()); //显示无法<em>打开</em>,错误5rn return DWORD(-1);rn [/code]rnrn我想问下为什么不能<em>打开</em>本地的C盘或者D盘或者E盘?
vb6 用CreateFile打开串口出错!!!!!!!!!!!!
声明rnPrivate Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Longrnrn使用rn Dim sa As SECURITY_ATTRIBUTESrn Dim hCF As Longrn hCF = CreateFile("COM4", GENERIC_READ Or GENERIC_WRITE, 0, sa, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, 0)rn[color=#FF0000]怎么老是返回-1啊?????????[/color]rn Dim errNum As Longrn errNum = GetLastError()rn[color=#FF0000]errNum返回的是0[/color]rnrn到底是什么原因啊!!!!!!!!!!!!!!!哪位大哥知道啊rnrn[color=#339966]Private Declare Function CreateFile Lib "kernel32 " Alias "CreateFileA " (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long rnrnComNum = CreateFile( "COM1 ", &HC0000000, 0, 0&, &H3, 0, 0)rn这个也不行[/color]
如何用CreateFile打开串口COM10---COM255
用CreateFile<em>打开</em><em>串口</em>COM1-COM9没有问题,却无法<em>打开</em>COM10及以后的<em>串口</em>,请问如何解决?我实在不想用MsComm
关于CreateFile打开调制解调器串口的问题。
win2000下安装一软猫,系统分配port是COM13,用CreateFile无法成功<em>打开</em>。rnrn//-------代码如下,<em>打开</em>COM1, COM2都是可以成功的,不知和软猫有没有关系rn//-------或者CreateFile<em>打开</em><em>串口</em>只能是COM1到COM9???可有人能告诉我??rnrn hCom = CreateFile( buf,rn GENERIC_READ | GENERIC_WRITE,rn 0, // comm devices must be opened w/exclusive-accessrn NULL, // no security attributesrn OPEN_EXISTING, // comm devices must use OPEN_EXISTINGrn 0, // not overlapped I/Orn NULL // hTemplate must be NULL for comm devicesrn );rn if(INVALID_HANDLE_VALUE == hCom) rn WriteDebug(ERROR_LEVEL,"OpenComPort","Failed to open %s!\n",buf);rn return NULL;
解答串口编程问题!
小弟最近在做<em>串口</em>与PC通信的实验,参考周立功的《ARM&WinCE实验与实践》写的代码,可是编译不能通过,有一个错误。请问高手是什么原因?(红色字体出位错误地方。)rn// SerialPortDlg.cpp : implementation filern//rnrn#include "stdafx.h"rn#include "SerialPort.h"rn#include "SerialPortDlg.h"rnrn#ifdef _DEBUGrn#define new DEBUG_NEWrn#undef THIS_FILErnstatic char THIS_FILE[] = __FILE__;rn#endifrnrnDCB dcb;//<em>串口</em>参数结构体rnHANDLE m_hComm;//<em>串口</em>操作句柄rnHANDLE m_ExitThreadEvent;//<em>串口</em>接收线程退出事件rnCString m_strRecDisp;//接收区显示字符rnBOOL ClosePort(void);//关闭<em>串口</em>rnrn//<em>打开</em><em>串口</em>rnBOOL OpenPort(LPCTSTR Port,int BaudRate,int DataBits,int StopBits,int Parity);rn//<em>串口</em>接收线程rnstatic DWORD __cdecl CommRecvTread(LPVOID lparam);rn//<em>串口</em>接收数据成功回调函数rntypedef void(CALLBACK *ONCOMMRECV)(CWnd *pWnd,char *buf,int bufle);rnstatic void CALLBACK OnCommRecv(CWnd *pWnd,char *buf,int buflen);rnrn/////////////////////////////////////////////////////////////////////////////rn// CSerialPortDlg dialogrnrnCSerialPortDlg::CSerialPortDlg(CWnd* pParent /*=NULL*/)rn : CDialog(CSerialPortDlg::IDD, pParent)rnrn //AFX_DATA_INIT(CSerialPortDlg)rn m_strRecDisp = _T("");rn m_strSendEdit = _T("");rn //AFX_DATA_INITrn // Note that LoadIcon does not require a subsequent DestroyIcon in Win32rn m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);rnrnrnvoid CSerialPortDlg::DoDataExchange(CDataExchange* pDX)rnrn CDialog::DoDataExchange(pDX);rn //AFX_DATA_MAP(CSerialPortDlg)rn DDX_Control(pDX, IDC_OPEN_COM, m_ButOpen);rn DDX_Control(pDX, IDC_BAUD, m_ComboBaud);rn DDX_Control(pDX, IDC_CLOSE_COM, m_ButClose);rn DDX_Control(pDX, IDC_PARITY, m_ComboParity);rn DDX_Control(pDX, IDC_STOP, m_ComboStop);rn DDX_Control(pDX, IDC_DATA, m_ComboData);rn DDX_Control(pDX, IDC_PORT, m_ComboPort);rn DDX_Text(pDX, IDC_REC_DISP, m_strRecDisp);rn DDX_Text(pDX, IDC_SEND_EDIT, m_strSendEdit);rn //AFX_DATA_MAPrnrnrnBEGIN_MESSAGE_MAP(CSerialPortDlg, CDialog)rn //AFX_MSG_MAP(CSerialPortDlg)rn ON_WM_DESTROY()rn ON_BN_CLICKED(IDC_CLOSE_COM, OnCloseCom)rn ON_BN_CLICKED(IDC_OPEN_COM, OnOpenCom)rn ON_BN_CLICKED(IDC_SEND, OnSend)rn ON_BN_CLICKED(IDC_CLEAR_SEND, OnClearSend)rn ON_BN_CLICKED(IDC_CLEAR_REC, OnClearRec)rn //AFX_MSG_MAPrnEND_MESSAGE_MAP()rnrn/////////////////////////////////////////////////////////////////////////////rn// CSerialPortDlg message handlersrnrnBOOL CSerialPortDlg::OnInitDialog()rnrn CDialog::OnInitDialog();rnrn // Set the icon for this dialog. The framework does this automaticallyrn // when the application's main window is not a dialogrn SetIcon(m_hIcon, TRUE); // Set big iconrn SetIcon(m_hIcon, FALSE); // Set small iconrn rn CenterWindow(GetDesktopWindow()); // center to the hpc screenrnrn // TODO: Add extra initialization herern m_ComboBaud.SetCurSel(5);rn m_ComboData.SetCurSel(1);rn m_ComboParity.SetCurSel(0);rn m_ComboPort.SetCurSel(0);rn m_ComboStop.SetCurSel(0);rn rn m_ButClose.EnableWindow(FALSE);rn m_hComm=INVALID_HANDLE_VALUE;rn m_ExitThreadEvent=NULL;rn m_strRecDisp=_T("");rn UpdateData(FALSE);rn rn return TRUE; // return TRUE unless you set the focus to a controlrnrnrnrnrnvoid CSerialPortDlg::OnDestroy() rnrn CDialog::OnDestroy();rn rn // TODO: Add your message handler code herern CDialog::OnDestroy();rn if(m_ExitThreadEvent!=NULL)rn rn SetEvent(m_ExitThreadEvent);rn Sleep(1000);rn CloseHandle(m_ExitThreadEvent);rn m_ExitThreadEvent=NULL;rn rn ClosePort();rnrnrnBOOL CSerialPortDlg::OpenPort(LPCTSTR Port, int BaudRate, int DataBits, int StopBits, int Parity)rnrn COMMTIMEOUTS CommTimeOuts;rn //<em>打开</em><em>串口</em>rn m_hComm=CreateFile(_T("COM1:"),GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);rn if(m_hComm==INVALID_HANDLE_VALUE)rn rn MessageBox(_T("无法<em>打开</em>端口或端口已<em>打开</em>,请检查是否被占用!"));rn return FALSE;rn rn GetCommState(m_hComm,&dcb);//读<em>串口</em>的DCBrn dcb.BaudRate=BaudRate;rn dcb.ByteSize=DataBits;rn dcb.Parity=Parity;rn dcb.StopBits=StopBits;rn dcb.fParity=FALSE; //禁止奇偶校验rn dcb.fBinary=TRUE;rn dcb.fDtrControl=0; //禁止流量控制rn dcb.fRtsControl=0;rn dcb.fOutX=0;rn dcb.fInX=0;rn dcb.fTXContinueOnXoff=0;rn //设置状态参数rn SetCommMask(m_hComm,EV_RXCHAR);//<em>串口</em>事件:接收到一个字符rn SetupComm(m_hComm,16384,16384);//设置接收与发送的缓冲区大小rn if(!SetCommState(m_hComm,&dcb))//设置<em>串口</em>的DCBrn rn MessageBox(_T("无法按当前参数配置端口!"));rn ClosePort();rn return FALSE;rn rn //设置超时参数rn GetCommTimeouts(m_hComm,&CommTimeOuts);rn CommTimeOuts.ReadIntervalTimeout=100; //接收字符间最大时间间隔rn CommTimeOuts.ReadTotalTimeoutMultiplier=1;rn CommTimeOuts.ReadTotalTimeoutConstant=100;//读取数据总超时常量rn CommTimeOuts.WriteTotalTimeoutMultiplier=0;rn CommTimeOuts.WriteTotalTimeoutConstant=0;rn if(!SetCommTimeouts(m_hComm,&CommTimeOuts))rn rn MessageBox(_T("无法设置超时参数!"));rn ClosePort();rn return FALSE;rn rn PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);//清除接收、发送缓冲区rn return TRUE;rnrnrnvoid CSerialPortDlg::OnCloseCom() rnrn // TODO: Add your control notification handler code herern if(m_ExitThreadEvent!=NULL)rn rn SetEvent(m_ExitThreadEvent);rn Sleep(1000);rn CloseHandle(m_ExitThreadEvent);rn m_ExitThreadEvent=NULL;rn rn ClosePort();//关闭<em>串口</em>rnrnrnconst CString PortTbl[6]=_T("COM1:"),_T("COM2:"),_T("COM3:"),_T("COM4:"),_T("COM5:"),_T("COM6:");rnconst DWORD BaudTbl[6]=4800,9600,19200,38400,57600,115200;rnconst DWORD DataBitTbl[2]=7,8;rnconst BYTE StopBitTbl[3]=ONESTOPBIT,ONESTOPBIT,TWOSTOPBITS;rnconst ParityTbl[4]=NOPARITY,ODDPARITY,EVENPARITY,MARKPARITY;rnvoid CSerialPortDlg::OnOpenCom() rnrn // TODO: Add your control notification handler code herern DWORD IDThread;rn HANDLE hRecvThread; //接收线程句柄。rn UpdateData(TRUE);rnrn CString strPort=PortTbl[m_ComboBaud.GetCurSel()];//查表获取参数值rnrn DWORD baud=BaudTbl[m_ComboBaud.GetCurSel()];rn DWORD databit=DataBitTbl[m_ComboData.GetCurSel()];rn BYTE stopbit=StopBitTbl[m_ComboStop.GetCurSel()];rn BYTE parity=ParityTbl[m_ComboParity.GetCurSel()];rnrn BOOL ret=OpenPort(strPort,baud,databit,stopbit,parity);//<em>打开</em><em>串口</em>rn if(ret==FALSE)rn return;rnrn m_ExitThreadEvent=CreateEvent(NULL,TRUE,FALSE,NULL);//创建<em>串口</em>接收线程退出事件rn //创建<em>串口</em>接收线程rn[color=#FF0000] hRecvThread=CreateThread(0,0,CommRecvTread,this,0,&IDThread);[/color]rn if(hRecvThread==NULL)rn rn MessageBox(_T("创建接收线程<em>失败</em>"));rn return;rn rn CloseHandle(hRecvThread);rn m_ButOpen.EnableWindow(FALSE);rn m_ButClose.EnableWindow(TRUE);rn MessageBox(_T("<em>打开</em>")+strPort+_T("成功"));rnrnrnDWORD CSerialPortDlg::CommRecvTread(LPVOID lparam)rnrn DWORD dwLength;rn char *recvBuf=new char[1024];rn CSerialPortDlg *pDlg=(CSerialPortDlg *)lparam;rnrn while(TRUE)rn //等待线程退出事件rn if(WaitForSingleObject(pDlg->m_ExitThreadEvent,0)==WAIT_OBJECT_0)rn break;rn if(pDlg->m_hComm!=INVALID_HANDLE_VALUE)rn //从<em>串口</em>读取数据rn BOOL fReadState=ReadFile(pDlg->m_hComm,recvBuf,1024,&dwLength,NULL);rn if(!fReadState)rn rn MessageBox(_T("无法从<em>串口</em>读取数据"));rn rn else rn rn if(dwLength!=0)rn OnCommRecv(pDlg,recvBuf,dwLength); //接收成功调用回调函数rn rn rn rn delete[] recvBuf;rn return 0;rnrnrnvoid CALLBACK CSerialPortDlg::OnCommRecv(CWnd *pWnd, char *buf, int buflen)rnrn CString tmp;rn CSerialPortDlg* pDlg=(CSerialPortDlg *)pWnd;rn CEdit *pRecvStrEdit=(CEdit *)pDlg->GetDlgItem(IDC_REC_DISP); //取得接收区控件指针rn for(int i=0;im_strRecDisp+=tmp;rn rn pRecvStrEdit->SetWindowText(pDlg->m_strRecDisp); //显示在窗口上rnrnrnvoid CSerialPortDlg::OnSend() rnrn // TODO: Add your control notification handler code herern DWORD dwactlen;rn if(m_hComm==INVALID_HANDLE_VALUE)rn rn MessageBox(_T("<em>串口</em>未<em>打开</em>"));rn return;rn rn UpdateData(TRUE);rn int len=m_strSendEdit.GetLength(); //取得输入字节串的长度rn char *psendbuf=new char[len];rn rn for(int i=0;i
WinCE下打开串口(Createfile)出错,返回串口无效。
WinCE下<em>打开</em><em>串口</em>(Createfile)出错,返回<em>串口</em>无法找到。rnm_hPort = Createfile(_T("COM1:"), GENERIC_READ | GENERIC_WRITE,0,NULL, OPEN_EXISTING, 0, NULL);rnm_hPort 返回 INVALID_HANDLE_VALUE
CreateFile打开物理磁盘失败,失败返回代码87,为什么呢?
[code=C/C++]rn#include "stdafx.h"rn#include rn#include rnint main() rn HANDLE hFile=CreateFile("\\\\.\\PhysicalDrive0",GENERIC_READ,rn FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);rn if(INVALID_HANDLE_VALUE==hFile)rn printf("open error %d\n",GetLastError());rn rn return 0;rnrnrn[/code]rn运行输出:rnopen error 87rnPress any key to continue
在CreateFile打开串口之前,需要不需要对串口初始化
就是还没确定是COM几的时候,需要不需要对<em>串口</em>初始化
CreateFile串口1能打开但是串口2打不开
系统是win7,vs2008+WINCE6.0SDKrn我用的是台式机,机器上本身有一个com1rn我现在用Virtual Serial Port Driver 6.0 by Eltima Sofware建了com2和com3rn用[<em>串口</em>调试助手V2.2]试了一下可以在com2和com3之间通信rnrn但是rnInitCommunication(TEXT("COM2:"));rnrnHANDLE InitCommunication ( LPTSTR pszDevName) rn DCB dcb;rn TCHAR szDbg[128];rn COMMTIMEOUTS cto;rn HANDLE hLocal;rnrn hLocal = hComPort;rn hComPort = INVALID_HANDLE_VALUE;rnrn if (hLocal != INVALID_HANDLE_VALUE)rn CloseHandle (hLocal); rnrn hLocal = CreateFile ((LPTSTR)(LPCTSTR)pszDevName, GENERIC_READ | GENERIC_WRITE,rn 0, NULL, OPEN_EXISTING, 0, NULL);rnrn if (hLocal != INVALID_HANDLE_VALUE) rn // 配置<em>串口</em>rn dcb.DCBlength = sizeof (dcb);rn GetCommState (hLocal, &dcb);rn dcb.BaudRate = nSpeed;rn dcb.fParity = FALSE;rn dcb.fNull = FALSE;rn dcb.StopBits = ONESTOPBIT;rn dcb.Parity = NOPARITY;rn dcb.ByteSize = 8;rn SetCommState (hLocal, &dcb);rnrn // 设定超时rn cto.ReadIntervalTimeout = 0;rn cto.ReadTotalTimeoutMultiplier = 0;rn cto.ReadTotalTimeoutConstant = 0;rn cto.WriteTotalTimeoutMultiplier = 0;rn cto.WriteTotalTimeoutConstant = 0;rn SetCommTimeouts (hLocal, &cto);rnrn // 启动读取线程rn hComPort = hLocal;rnrn else rn wsprintf (szDbg, TEXT ("Couldn\'t open port %s. rc=%d\r\n"),rn pszDevName, GetLastError());rn MessageBox(NULL,szDbg,TEXT("message"),MB_OK | MB_ICONERROR);rn rn return hComPort;rnrnrnrn如果用com1就可以成功<em>打开</em>,而用com2的话,CreateFile<em>失败</em>,错误是55rnrn虚拟的com2还需要做什么其他操作吗,注册表什么的rnrn谢谢了
急求 关于CreateFile函数的疑问的解答
在Win98或者WinMe中,不能用这个函数<em>打开</em>设备,比如"\\\\.\\C:"rn请问在这两种系统之中,有什么方法可以得到设备句柄呢?rn请提供详细的资料,谢谢啊!急求
打开串口失败 为什么呢?
VS08下编的win32程序 <em>打开</em><em>串口</em> <em>失败</em>为什么呢?rn 建的是STANDARDSDK MIPSII平台设备的 程序放入设备中,设备<em>串口</em>和电脑PC机相连 rn 运行后,发现程序 <em>打开</em><em>串口</em><em>失败</em>?rn 有哪几种原因呢?驱动方面有问题?是不是驱动方面对<em>串口</em>的配置不对呢?还是怎么呢? 我不懂驱动rnvoid SendData(HDC hdc,LPCSTR buffer)rnrn HANDLE hcom;rn COMMCONFIG cc;rn DCB dcb;rn DWORD pt;rn RECT rect=20,20,60,60;rn hcom=CreateFile(L"COM1:",GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,NULL,NULL);rn if(hcom==INVALID_HANDLE_VALUE)rn rn DrawText(hdc,L"fail",5,&rect,DT_CENTER);rn return;rn rn GetCommState(hcom,&dcb);rn dcb.BaudRate=CBR_9600;rn dcb.fBinary=TRUE;rn dcb.fParity=FALSE;rn dcb.ByteSize=8;rn dcb.Parity=NOPARITY;rn dcb.StopBits=ONESTOPBIT;rn dcb.fRtsControl=RTS_CONTROL_ENABLE;rn dcb.fDtrControl=DTR_CONTROL_ENABLE;rn SetCommState(hcom,&cc.dcb);rn WriteFile(hcom,buffer,2,&pt,&ov);rnrnrn是不是也要在驱动中,把<em>串口</em>配置名为 COM1呢 (设备中共有两个<em>串口</em>)
wince6.0 RIL 打开串口失败
请教各位:rnrn 我在wince6.0下面 在<em>打开</em>com口的时候(CreateFile())提示<em>失败</em>.我用的是ENFORA的例子.在BIB和REG文件里面都已经添加了模拟器对应文件下面的一些命令.但是在烧完OS后正常加载RIL的过程中,从TRACE信息显示如下:rn[color=#FF0000]RILDrv : E : CComHandle::OpenDownstreamPort : Couldn't open downstream portrnRILDrv : E : RIL_Init : RIL failed to initialize[/color]rn因为我使用的是ENFORA,在RILMDD部分的Comhandle中查找的是注册表的ComPort和ComPortNotifications两个.我查看IMGENFORA的时候发现只有ComPort 而且对应的分别如下:rnrn [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\RIL]rn "Dll"="rilgsm.dll"rn ;DEVFLAGS_LOADLIBRARY 0x00000002 // Use LoadLibrary instead of LoadDriverrn "Flags"=dword:2rn "Index"=dword:1rn "Order"=dword:3rn "Prefix"="RIL" rn "ComPort"="COM7:"rn "RebootOKEvName"="Mux0710_RebootOK" ; name of the event used to signal reboot OKrn "RebootKOEvName"="Mux0710_RebootKO" ; name of the event used to signal reboot failurernrn和rnrn ; COM1 for underlying GSM 07.10rn [HKEY_LOCAL_MACHINE\Software\Microsoft\GSM07_10]rn "ComPort"="COM1:"rn "BaudRate"=dword:1C200 ; 115200rn "FrameOption"=dword:1 ; Advancedrnrn而ComPortNotifications 根本在IMGENFORA里面没有,如果找不到ComHandle会默认拿Com2来CreateFile。rnrn[color=#FF0000]我现在是拿target的<em>串口</em>来作为连接modem的口。[/color]rn请问各位我到底需要怎么样来调整我的Com口。使得数据可以正确的传输。谢谢!
vc 串口编程打开串口失败
我的程序不知道为什么总是<em>打开</em><em>串口</em><em>失败</em>,现在已经确定不是因为硬件的问题,因为用别的程序是没问题,就自己的不行,由于代码比较多,又发不上来,现在请教大家问题可能出现在哪里?有没有哪位大侠可以帮我看看程序的,谢谢了~
串口打开失败 已注册
写的一个<em>串口</em>程序(vs2008+win7),移到其他的电脑上的时候就会出现<em>串口</em><em>打开</em><em>失败</em>(装了vs2008的除外) <em>串口</em>已注册,我用vc6.0 写的就可以 确定物理<em>串口</em>是好的可以<em>打开</em>的 <em>串口</em>相关的代码如下:rn[code=C/C++]rn m_Comm.Create(NULL,0,CRect(0,0,0,0),this,IDC_MSCOMM1);rnrn m_Comm.put_CommPort(m_port); //设置<em>串口</em>号rn m_Comm.put_InputMode(1); //文本输入 输出rn m_Comm.put_InBufferSize(1024); //设置输入缓冲区大小rn m_Comm.put_OutBufferSize(1024); //设置输出缓冲区大小rn m_Comm.put_Settings("115200,n,8,1"); //设置波特率,数据格式rn if(!m_Comm.get_PortOpen()) //<em>打开</em><em>串口</em>rn rn m_Comm.put_PortOpen(TRUE);rn strTmp.Format("%d",m_port);rn AfxMessageBox(_T("<em>打开</em><em>串口</em>:")+strTmp);rnrn rn elsern AfxMessageBox(_T("<em>串口</em><em>打开</em>Error"));rnrn[/code]rn希望高手指点一下~~
Windows Mobile 打开串口失败
菜鸟提问:windows mobile6.1 <em>打开</em><em>串口</em>的时候<em>失败</em>,用GetLastError看了一下返回值是6,百度到6对应的错误是:无效句柄。rn有没有高手知道怎么回事。rn代码如下:rnrn调用:rn CommPort cp = new CommPort();rn cp.Open();rnrnrn /// rn /// 这是一个关于调用<em>串口</em>的类 rn /// rn public class CommPortrn rnrn public int PortNum = 1;rn public int BaudRate = 9600;rn public byte ByteSize = 8;rn public byte Parity = 0; // 0-4=no,odd,even,mark,space rn public byte StopBits = 0; // 0,1,2 = 1, 1.5, 2 rn public int ReadTimeout = 0;rnrn //comm port win32 file handle rn private int hComm = -1;rnrn public bool Opened = false;rnrn //win32 api constants rn private const uint GENERIC_READ = 0x80000000;rn private const uint GENERIC_WRITE = 0x40000000;rn private const int OPEN_EXISTING = 3;rn private const int INVALID_HANDLE_VALUE = -1;rnrn [StructLayout(LayoutKind.Sequential)]rn public struct DCBrn rn //taken from c struct in platform sdk rn public int DCBlength; // sizeof(DCB) rn public int BaudRate; // current baud rate rn /* these are the c struct bit fields, bit twiddle flag to set rn public int fBinary; // binary mode, no EOF check rn public int fParity; // enable parity checking rn public int fOutxCtsFlow; // CTS output flow control rn public int fOutxDsrFlow; // DSR output flow control rn public int fDtrControl; // DTR flow control type rn public int fDsrSensitivity; // DSR sensitivity rn public int fTXContinueOnXoff; // XOFF continues Tx rn public int fOutX; // XON/XOFF out flow control rn public int fInX; // XON/XOFF in flow control rn public int fErrorChar; // enable error replacement rn public int fNull; // enable null stripping rn public int fRtsControl; // RTS flow control rn public int fAbortOnError; // abort on error rn public int fDummy2; // reserved rn */rn public uint flags;rn public ushort wReserved; // not currently used rn public ushort XonLim; // transmit XON threshold rn public ushort XoffLim; // transmit XOFF threshold rn public byte ByteSize; // number of bits/byte, 4-8 rn public byte Parity; // 0-4=no,odd,even,mark,space rn public byte StopBits; // 0,1,2 = 1, 1.5, 2 rn public char XonChar; // Tx and Rx XON character rn public char XoffChar; // Tx and Rx XOFF character rn public char ErrorChar; // error replacement character rn public char EofChar; // end of input character rn public char EvtChar; // received event character rn public ushort wReserved1; // reserved; do not use rn rnrn [StructLayout(LayoutKind.Sequential)]rn private struct COMMTIMEOUTSrn rn public int ReadIntervalTimeout;rn public int ReadTotalTimeoutMultiplier;rn public int ReadTotalTimeoutConstant;rn public int WriteTotalTimeoutMultiplier;rn public int WriteTotalTimeoutConstant;rn rnrn [StructLayout(LayoutKind.Sequential)]rn private struct OVERLAPPEDrn rn public int Internal;rn public int InternalHigh;rn public int Offset;rn public int OffsetHigh;rn public int hEvent;rn rnrn [DllImport("kernel32.dll ")]rn private static extern int CreateFile(rn string lpFileName, // file name rn uint dwDesiredAccess, // access mode rn int dwShareMode, // share mode rn int lpSecurityAttributes, // SD rn int dwCreationDisposition, // how to create rn int dwFlagsAndAttributes, // file attributes rn int hTemplateFile // handle to template filern );rnrn [DllImport("kernel32.dll ")]rn private static extern bool GetCommState(rn int hFile, // handle to communications device rn ref DCB lpDCB // device-control block rn );rnrn [DllImport("kernel32.dll ")]rn private static extern bool BuildCommDCB(rn string lpDef, // device-control string rn ref DCB lpDCB // device-control block rn );rnrn [DllImport("kernel32.dll ")]rn private static extern bool SetCommState(rn int hFile, // handle to communications device rn ref DCB lpDCB // device-control block rn );rnrn [DllImport("kernel32.dll ")]rn private static extern bool GetCommTimeouts(rn int hFile, // handle to comm device rn ref COMMTIMEOUTS lpCommTimeouts // time-out values rn );rnrn [DllImport("kernel32.dll ")]rn private static extern bool SetCommTimeouts(rn int hFile, // handle to comm device rn ref COMMTIMEOUTS lpCommTimeouts // time-out values rn );rnrn [DllImport("kernel32.dll ")]rn private static extern bool ReadFile(rn int hFile, // handle to file rn byte[] lpBuffer, // data buffer rn int nNumberOfBytesToRead, // number of bytes to read rn ref int lpNumberOfBytesRead, // number of bytes read rn ref OVERLAPPED lpOverlapped // overlapped buffer rn );rnrn [DllImport("kernel32.dll ")]rn private static extern bool WriteFile(rn int hFile, // handle to file rn byte[] lpBuffer, // data buffer rn int nNumberOfBytesToWrite, // number of bytes to write rn ref int lpNumberOfBytesWritten, // number of bytes written rn ref OVERLAPPED lpOverlapped // overlapped buffer rn );rnrn [DllImport("kernel32.dll ")]rn private static extern bool CloseHandle(rn int hObject // handle to object rn );rnrn [DllImport("kernel32.dll ")]rn private static extern uint GetLastError();rnrn
CreateFile失败 GetLastError=2
[code=Delphi(Pascal)]rn#include rn#include rnrnvoid main()rnrn HANDLE handle=CreateFile("D:\\E.EXE", rn GENERIC_READ, rn FILE_SHARE_READ, rn NULL, rn OPEN_EXISTING, rn FILE_ATTRIBUTE_NORMAL, rn 0);rn if ( handle==INVALID_HANDLE_VALUE )rn rn printf( "%d",GetLastError() );rn return;rn rnrn[/code]
CreateFile创建文件失败??????????-〉help
新建一个Dialog程序rn在OnInitDialog()中添加rnrn HANDLE hFile;rn hFile = CreateFile("C:\tradex.txt",rn GENERIC_WRITE,rn FILE_SHARE_READ,rn NULL,rn CREATE_ALWAYS, rn FILE_ATTRIBUTE_NORMAL,rn NULL); rn if (hFile == INVALID_HANDLE_VALUE)rn rn MessageBox("Create file error!",NULL,MB_OK);rn return 0;rn rnrn编译没错,就是运行的时候出一框:Create file error!
调用CreateFile失败了为什么
我在远程登入了2003系统,并运行一个服务控制管理器的程序"Server.exe"。rn"Server.exe"中创建了一个主线程,主线程创建了一个邮槽服务:rnCreateMailslot("\\\\.\\mailslot\\my_mailslot", 0, MAILSLOT_WAIT_FOREVER, (LPSECURITY_ATTRIBUTES) NULL);rnrn然后主线程中又创建了1个应用程序进程"A.exe"rn在"A.exe"中调用CreateFile<em>打开</em>这个邮槽:rnCreateFile("\\\\*\\mailslot\\my_mailslot", GENERIC_WRITE, FILE_SHARE_READ, (LPSECURITY_ATTRIBUTES) NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL); rn(1)这样调用的时候局域网和本地貌似都没错,但是如果我是在外网远程登入的时候,请问下这个第一个参数该填什么,底下那个servername该怎么填写,怎么得到。有没有什么API函数可以得到的。rn(2)my_mailslot这个填写绝对路径不行吗?我填写"D:\\Text\\my_mailslot"这样有错?rn(3)还有就是我在主线程结束前,调用PostThreadMessage(pProcInfo.dwThreadId, WM_QUIT, 0, 0)关闭"A.exe"的窗口时候会出现1444的错误报告,这个该怎么解决?rn(备注:pProcInfo.dwThreadId是前面创建"A.exe"进程的时候调用CreateProcessAsUser的最后一个参数)rnrn参考:rn 邮槽名字类型rn--------------------------------------------------------------------------------------------------------------------------rn名字格式 说 明rn--------------------------------------------------------------------------------------------------------------------------rn\\.\mailslot\name 标定同一台机器上的一个本地邮槽rn\\servername\mailslot\name 标定名为servername的一个远程邮槽服务器rn\\domainname\mailslot\name 标定在指定的domain(域)内,使用特定name(名字)的所有邮槽rn\\*\mailslot\name 标定系统主域内,标定特定name(名字)的所有邮槽rn--------------------------------------------------------------------------------------------------------------------------
Windows 7下CreateFile()失败
我在Windows XP下调用如下代码没有问题,可在Windows 7下<em>失败</em>,GetLastError()返回2.rnrn清高手们帮忙解释一下啊.rnrn我用超级管理员的身份登陆Windows运行也是<em>失败</em>rnrnhDevice = CreateFile("\\\\.\\Ezusb-0",rn GENERIC_WRITE,rn FILE_SHARE_WRITE,rn NULL,rn OPEN_EXISTING,rn 0,rn 0);rnrn int error = GetLastError();rnrn if (hDevice == INVALID_HANDLE_VALUE) rn hDevice = CreateFile("\\\\.\\Ezusb-1",rn GENERIC_WRITE,rn FILE_SHARE_WRITE,rn NULL,rn OPEN_EXISTING,rn 0,rn 0);rnrn error = GetLastError();rnrn if (hDevice == INVALID_HANDLE_VALUE)rn return false;rn elsern return true;rn rn elsern return true;
用CreateFile打开串口超过com10就不能打开
一台机子用moxa的两块8口的<em>串口</em>扩展卡,扩展了16个<em>串口</em>,在硬件管理器里也能看到这16个<em>串口</em>,但是用CreateFile<em>打开</em><em>串口</em>时,com10及以上的<em>串口</em><em>打开</em><em>失败</em>,GetLastError()为 2,说明没有找到<em>串口</em>,不知道这是什么原因?rn
关于CreateFile失败
Windows mobile 6 (vs2005)用CreateFile连续新建很多个文件,用模拟器来测试,共享pc机上的目录来模拟一个Storage Card目录rn hFile = CreateFile(lpFolder,rn GENERIC_READ|GENERIC_WRITE,rn FILE_SHARE_READ|FILE_SHARE_WRITE,rn NULL,rn CREATE_ALWAYS,rn FILE_ATTRIBUTE_NORMAL,rn NULLrn );rn如果我的lpFolder不是建在//Storage Card,就没问题。但如果是,CreateFile会在循环建立文件到某一次时<em>失败</em>,请问这是怎么回事?
createfile()创建文件失败的问题
我想以系统时间为名创建文件,下面是我的代码,有个问题一直过不去,运行环境是wince5.0,用VS2005开发;请明白人指教一下:[color=#FF0000]问题见批注[/color]rn 一,类Client中用到的相关代码 rn public:rn int StartSave();rn private:rn static wchar_t save_date[60];rn static int save_callback( void *inst , void* sample);rn 二,StartSave()rn rn ...rn SYSTEMTIME saveNowtime;rn GetLocalTime(&saveNowtime); rn rn swprintf(save_date,(wchar_t*)(_T("\\\\硬盘\\\\%4d-%2d-%2d %2d:%2d:%2d.rec"))rn rn ,saveNowtime.wYear rn rn ,saveNowtime.wMonth rn rn ,saveNowtime.wDay rn rn ,saveNowtime.wHour rn rn ,saveNowtime.wMinute rn rn ,saveNowtime.wSecond); rn .....rnrn这一段的作用是将系统时间转化为一个字符串!rn 我用messagebox打印出save_date的值为\\硬盘\\2003-1-1 12:12:3.recrnrn三,在回调函数中创建文件rnrn hFile=CreateFile(save_date, rn GENERIC_READ|GENERIC_WRITE,rn 0,rn NULL,rn OPEN_ALWAYS,rn FILE_ATTRIBUTE_NORMAL,rn 0);rn if(hFile==INVALID_HANDLE_VALUE)rn rn MessageBox(NULL,_T("文件<em>打开</em><em>失败</em>"),0,0); rn return 0;rn rnrn 程序编译后无错误,在执行过程中总是打出”文件<em>打开</em><em>失败</em>“,我查看了错误代码是6号,也就是ERROR_INVALID_HANDLE,这是什么原因导致的啊?rnrn [color=#FF0000]注意:如果我在”hFile=CreateFile(save_date, “ rn 这一行前加wchar_t path[]=_T("\\硬盘\\book.txt");rn 并且把CreateFile的第一个参数换成path,则程序正常运行!所以感觉是save_date出问题了,但是打印出来路径对啊?不知跟宽字符有关吗?save_date和path都是宽字符啊?[/color]
CreateFile操作命名管道失败
服务器代码:rn[code=c]rn#include rn#include rnrnint main()rnrn HANDLE hpip;rn OVERLAPPED ovi = 0;rn char buff[200];rn DWORD readbuf;rn hpip = CreateNamedPipe( TEXT("\\\\.\\pipe\\pipename"), PIPE_ACCESS_DUPLEX,rn PIPE_TYPE_BYTE, PIPE_UNLIMITED_INSTANCES, 1024, 1024, 0, NULL );rn printf( "success to create named pipe, waiting for client to connect. \r\n" );rn if( ::ConnectNamedPipe( hpip, &ovi ) )rn rn printf( "client success to connect!\r\n");rn printf( "reading data! \r\n" );rn if( ReadFile( hpip, buff, 200, &readbuf, NULL )) rn rn printf( "success to read data\r\n" );rn printf( "the data read is: %s\r\n", buff );rn rn elsern rn printf( "fail to read data!\r\n" );rn printf( "error message: %ld", GetLastError() );rn rn rn return 0;rnrnrn[/code]rnrn客户端代码:rnrn[code=c]rn#include rn#include rnrnint main()rnrn HANDLE hpip;rn OVERLAPPED ovi = 0;rn char buff[200] = "命名管道测试程序";rn DWORD readbuf;rn printf( "reading named pipe.\r\n" );rn rn if( WaitNamedPipe( TEXT("\\\\.\\pipe\\pipename"), NMPWAIT_WAIT_FOREVER))rn rn hpip = CreateFile( TEXT("\\\\.\\pipe\\pipename"), GENERIC_READ | GENERIC_WRITE , 0, rn NULL, OPEN_EXISTING, 0, NULL );rn if( hpip = INVALID_HANDLE_VALUE )rn rn printf( "fail to open named pipe\r\n" ); rn printf( "error message: %ld", GetLastError() );rn rn elsern rn if( WriteFile( hpip, buff, sizeof( buff ), &readbuf, NULL ) )rn rn printf( "success to write data.\r\n" ); rn rn elsern rn printf( "fail to write data.\r\n" ); rn rn rn rn elsern rn printf( "fail to connect named pipe. \r\n" );rn rn return 0;rnrnrn[/code]rnrn服务器端运行结果:rn-------------------------------------------rnsuccess to create named pipe, waiting for client to connect.rnclient success to connect!rnreading data!rnfail to read data!rnerror message: 109rn------------------------------------------rnrn客户端运行结果:rn----------------------------------------rnreading named pipe.rnfail to open named pipernerror message: 0rn----------------------------------------rnrnrn出错的位置是客户端程序的这一句:rn[code=c]rnrn hpip = CreateFile( TEXT("\\\\.\\pipe\\pipename"), GENERIC_READ | GENERIC_WRITE , 0, rn NULL, OPEN_EXISTING, 0, NULL );rn[/code]rnrn调试了很久也不行,请指教,谢谢。
CreateFile 串口 拒绝访问 问题
问题如下:rn场景:<em>串口</em>COM2,,该<em>串口</em>是蓝牙使用的虚拟<em>串口</em>,且已经<em>打开</em>。rn调用CreateFile,再次<em>打开</em>COM2,返回INVALID_HANDLE_VALUE,<em>失败</em>后调用GetLastError,返回值为5,标识拒绝访问.rn问题:没调用CreateFile之前,COM2<em>串口</em>可以正常使用蓝牙设备,但是调用CreateFile,虽然返回<em>失败</em>,拒绝访问,但是COM2<em>串口</em>相应的蓝牙设备不能正常使用了。请问下面的CreateFile的调用有没有什么问题呢?其调用之后对已经<em>打开</em>的COM2<em>串口</em>会不会产生什么样的副作用呢?rn [color=#FF0000]m_hCom = CreateFile(“COM2” GENERIC_READ | GENERIC_WRITE,rn 0, NULL, rn OPEN_EXISTING,rn FILE_ATTRIBUTE_NORMAL, NULL);[/color]rn if (m_hCom == INVALID_HANDLE_VALUE)rn rn // 如果<em>打开</em>端口<em>失败</em>,则关闭句柄返回错误码。rn int erro = GetLastError();rn CloseHandle(m_hCom);rn m_hCom = NULL;rnrn return COM_CANNOT_OPEN_PORT;rn
CreateFile创建内存映射文件失败
system32\config\system,该文件无法拷贝,无法移动。rn现在我CreateFile文件<em>失败</em>,但我还想把这个文件映射到内存中去,该怎么操作?rn
CreateFile返回创建文件失败
m_hFile = ::CreateFile((LPCTSTR)m_strFilePath, GENERIC_READ | GENERIC_WRITE ,rn FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);rn if(m_hFile == INVALID_HANDLE_VALUE)rn rn AfxMessageBox("创建文件<em>失败</em>");rn return -1;rn rn我单步走到这里的时候,老是近入if语句,不知道是怎么回事?rn我在m_strFilePath值为c:\\csl.txt,如果我把m_strFilePath值改为d:\\csl.txtrn单步调试就能够顺利跳过去,但是我在CreateFile设置了CREATE_ALWAYS,不管他存在不存在我都创建,怎么会返回INVALID_HANDLE_VALUE.~我想把已经存在c:\csl.txt覆盖一次为什么不行啊!~有什么办法吗>
为什么createfile失败??
HANDLE hFileHandle = ::CreateFile(tcTempFileName,rn GENERIC_WRITE, FILE_SHARE_READ,rn NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);rnrn if (hFileHandle == INVALID_HANDLE_VALUE)rn rn CString str;rn int err = GetLastError(); rn str.Format("创建临时文件<em>失败</em>,%d",err);rn AfxMessageBox(str);rn rn给出的err是3:系统找不到指定的路径。 rnTCHAR tcTempFileName[MAX_PATH]=0;操作之后为 c:\a.datrn我路径都已经设置好了呀,为啥还会创建不成功呢?
hVXD=CreateFile失败
hVXD=CreateFile("\\\\.\\Inte.vxd",0,0,0,OPEN_EXISTING,FILE_FLAG_DELETE_ON_CLOSE,0);rn老是出现下面情况rnhVXD==INVALID_HANDLE_VALUErn前提有把Inte.vxd和Inte.inf拷贝到system32里面。rn请指教!rn
CreateFile打开PCI设备的问题
我自己写了一个PCI设备的驱动,已经安装好了。设备也安装好了。rn我想访问这个设备,使用<em>createfile</em><em>打开</em>设备!rn*phde= CreateFile(srcname,rn GENERIC_WRITE|GENERIC_READ,rn FILE_SHARE_WRITE|FILE_SHARE_READ,rn NULL,rn OPEN_EXISTING,//rn FILE_FLAG_OVERLAPPED, /////xiaojie xiugai rn NULL);rnrn但提示我设备名称无效。rnrn这也是我疑惑的地方,在哪里可以看到PCI设备的名称呢?rn需要在我的驱动里指定吗?
安装Ubuntu失败,求解答
通过CD启动盘安装Ubuntu的过程中弹出提示“将修改内容写入存储设备时出现一个错误,改变分区大小的操作已被中止”请问有什么办法解决这个问题。我之前没出现过,重装系统后发生的。rn谢谢!!!
关于createfile打开USB设备
HDEVINFO hDevInfo = SetupDiGetClassDevs((LPGUID)&ClassGuid, NULL, 0, DIGCF_PRESENT);rn if (hDevInfo == INVALID_HANDLE_VALUE)rn rn SetupDiDestroyDeviceInfoList(hDevInfo);rn rnrn TCHAR szBuf[MAX_PATH];rn SP_DEVINFO_DATA spDevInfoData = sizeof(SP_DEVINFO_DATA);rn CString sTmp, sTotal;rnrn //开始列举设备rn for (DWORD i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &spDevInfoData); i++)rn rn //得到设备类描述rn if (SetupDiGetClassDescription(&spDevInfoData.ClassGuid, szBuf, MAX_PATH, NULL))rn rn sTmp.Format(_T("\n%03d : ClassDescription = %s\n"), i, szBuf);rn sTotal += sTmp;rn rnrn //得到设备实例的唯一标识ID(由注册表路径组成)rn if (SetupDiGetDeviceInstanceId(hDevInfo, &spDevInfoData, szBuf, MAX_PATH, NULL))rn rn sTmp.Format(_T("%03d : InstanceId = %s\n"), i, szBuf);rn sTotal += sTmp;rn rnrn //得到设备名称rn if (SetupDiGetDeviceRegistryProperty(rn hDevInfo, &spDevInfoData, SPDRP_DEVICEDESC, NULL, (PBYTE)szBuf, MAX_PATH, NULL))rn rn sTmp.Format(_T("%03d : DeviceDesc = %s\n"), i, szBuf);rn sTotal += sTmp;rnrn rnrn //得到设备型号rn if (SetupDiGetDeviceRegistryProperty(rn hDevInfo, &spDevInfoData, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szBuf, MAX_PATH, NULL))rn rn sTmp.Format(_T("%03d : FriendName = %s\n"), i, szBuf);rn sTotal += sTmp;rn rnrn //得到设备在注册表中的子路径rn if (SetupDiGetDeviceRegistryProperty(rn hDevInfo, &spDevInfoData, SPDRP_DRIVER, NULL, (PBYTE)szBuf, MAX_PATH, NULL))rn rn sTmp.Format(_T("%03d : Regedit Path = %s\n"), i, szBuf);rn sTotal += sTmp;rn rn AfxMessageBox(sTotal);rn hDevice=CreateFile(szBuf,GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);rn rn if(hDevice==INVALID_HANDLE_VALUE)rn rn AfxMessageBox("erro");rn rnrn请高手指点下,为什么我<em>打开</em>设备老实<em>失败</em>啊~~~rn前提是,我能获得设备的信息,设备在注册表的子路径都可以获得··就是<em>打开</em><em>失败</em>
CreateFile 怎么打开并口?
嘿嘿...很愚昧的一个问题,我知道<em>打开</em><em>串口</em>是CreateFile( COM1 ... ),但是记不得<em>打开</em>并口使用那个标志表示并口了,好像是LPTR,不知道对不对!嘿嘿...
tomcat 热部署失败,求解答
小鸟在配置tomcat热部署时出错,网上的解决办法很多,但是小鸟的问题依然无法解决。rn现将小鸟的配置方法贴出:rntomcat6.0环境。rn1:tomcat server.xml配置rnrn rn rn rnrnrn[b]注[/b]F:\workspace\myapps\target\mywar.war为每次打包后war包的存放位置。rnrn[b]问[/b]rn1:针对每次打包生成的war,如何正确的配置tomcat,通过热部署减少发布war的时间呢?rnrn再次感谢,希望不吝赐教!
CreateFile(...)如何打开VxD!!!!
各位仁兄,如何动态<em>打开</em>VxD,下面是我的做法,但老是返回<em>失败</em>:(rnrn调用程序:rnHANDLE h=CreateFile("\\\\.\\Test_vxd.vxd",rn GENERIC_READ,rn 0,rn NULL,rn OPEN_EXISTING,rn FILE_FLAG_DELETE_ON_CLOSE,rn NULL);rnif(h == INVALID_HANDLE_VALUE)rn return;rnrnVxD程序(最简单的!):rnrn// TEST_VXD.cpp - main module for VxD TEST_VXDrnrn#define DEVICE_MAINrn#include "test_vxd.h"rnDeclare_Virtual_Device(TEST_VXD)rn#undef DEVICE_MAINrnrnTest_vxdVM::Test_vxdVM(VMHANDLE hVM) : VVirtualMachine(hVM) rnrnTest_vxdThread::Test_vxdThread(THREADHANDLE hThread) : VThread(hThread) rnrnBOOL Test_vxdDevice::OnSysDynamicDeviceInit()rnrn return TRUE;rnrnrnBOOL Test_vxdDevice::OnSysDynamicDeviceExit()rnrn return TRUE;rnrnrnDWORD Test_vxdDevice::OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams)rnrn return 0;rnrn我已经把Test_Vxd.VxD拷贝到Debug目录下了,还是不行:(rn哎,气死我啦!!!!rn
CreateFile打开usb设备问题?
completeDeviceName 为 “\\?\usb#vid_5345&pid_1234#5&33cee4ba&0&2#a5dcbf10-6530-11d2-901f-00c04fb951ed\PIPE01”rndnw中的<em>打开</em>usb设备的代码:rn[code=c] h = CreateFile(completeDeviceName,rn GENERIC_WRITE | GENERIC_READ,rn FILE_SHARE_WRITE | FILE_SHARE_READ,rn NULL,rn OPEN_EXISTING,rn 0,rn NULL);[/code]rn问题描述:在本人常用的电脑1(Xp系统)上不管怎么运行都没有问题,然后换一台电脑2(Xp系统)装上驱动(和电脑1驱动一致)后运行,偶尔成功偶尔报错,错误就发生在CreateFile处,GetLastError查看错误码为1450;请问这是什么原因造成的,如何解决???(补充:程序是在电脑1上编译并运行release出来的dnw.exe,在电脑2上只是运行dnw.exe。)
----用CreateFile来操作串口?----
请问怎么样用CreateFile来操作<em>串口</em>,顺便说说GetCommState, SetCommState, TransmitCommChar, WaitCommEvent,等等 的用法,有例程给100分
CreateFile调用总是失败,怎么回事?
CreateFile这个函数<em>打开</em>文件的时候总是<em>失败</em>,大家帮忙分析一个,这是什么原因呢?rn[code=C/C++]#includern#includern#includern#includernrnHANDLE hFile;rnHANDLE hFileMapping=NULL;rnvoid *pFileBase=NULL;rnrnint main(int argc,char **argv)rn rn if(argc!=2)rn rn printf("Usage:\n\t %s PE File\n",argv[0]);rn exit(1);rn rn rn /*********************** Map the file to memory *************************/rn hFile=CreateFile(argv[1],GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,rn FILE_ATTRIBUTE_ARCHIVE,OPEN_EXISTING,NULL);rn if(hFile==INVALID_HANDLE_VALUE)rn rn /*printf("Open File Error.\n");*/rn printf("Open File Error\n");rn exit(2);rn rn rn hFileMapping=CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);rn if(!hFileMapping)rn rn CloseHandle(hFile);rn perror("Create File Mapping Error\n");rn exit(3);rn rn pFileBase=MapViewOfFile(hFileMapping,FILE_MAP_READ,0,0,0);rn if(!pFileBase)rn rn CloseHandle(hFileMapping);rn CloseHandle(hFile);rn perror("Map View of File Error.\n");rn exit(4);rn rn /*********************** Map end *****************************************/rn rn rn return EXIT_SUCCESS;rnrn[/code]
USB CreateFile 失败 GetLastError() = 2
for循环到第4次时CreateFile就<em>失败</em>了,GetLastError值为2,这是什么原因啊,怎么解决。rnrnBOOL HY_Get_USBDevice(void)rnrn CHAR HCName[32];rn int HCNum;rn HANDLE hHCDev;rnrn for (HCNum = 0; HCNum < 10; HCNum++)rn rn sprintf(HCName, "\\\\.\\HCD%d", HCNum);rn hHCDev = CreateFile(HCName,rn GENERIC_WRITE,rn FILE_SHARE_WRITE,rn NULL,rn OPEN_EXISTING,rn 0,rn NULL);rn if (hHCDev == INVALID_HANDLE_VALUE)rn {rn int rst = GetLastError();rn break;rn }rn rn ......rn
使用CreateFile API 枚举串口
使用CreateFile API 枚举<em>串口</em>
串口监视(CreateFile,CreateFileA,CreateFileW)
各位高手:rn 我用HOOK拦截CreateFile,CreateFileA,CreateFileW,希望得到<em>串口</em>的控制权,我是用<em>串口</em>助手调试程序的,发现并非每次开启<em>串口</em>的操作都被我拦截了,程序启动时那次自动开启<em>串口</em>操作总是拦截不到,必需关闭<em>串口</em>再开启才能成功拦截,是否<em>串口</em>还有其他开启方式?rn(程序是DELPHI写的,操作系统是XP)
有关CreateFile开启串口的疑问
我虚拟了20个<em>串口</em>,然后使用CreateFile()开启<em>串口</em>,设了<em>串口</em>设备名称lpFileName为COM1,COM2……,COM1至COM9可以正常开启,COM10至COM20无法开启,求教各位大侠是不是CreateFile()函数只能开启1—9?那么10以后的如何开启?
使用createfile总是失败,请教
使用CreateFil("C:\tt.txt",GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);总是<em>失败</em>,向各位请教
jni编程打开串口失败,附上代码,,求指教
[img=https://img-bbs.csdn.net/upload/201412/18/1418881395_430879.gif][/img]
CreateFile失败的问题。请帮忙。
serverHandle = CreateFile( pipeName, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING | E_FLAG_WRITE_THROUGH, NULL);rnrnif(serverHandle != INVALID_HANDLE_VALUE)rn break;rnrn程序有时正常运行。但是,又是在if语句之前就出错了。不知道是何原因。
win32串口编程中CreateFile失败
我想在win32下实现<em>串口</em>编程,下了一个例子照着打进去后怎么都创建<em>失败</em>。。。。各位兄弟姐妹们帮帮忙吧,谢谢各位了先rnHANDLE hCom=CreateFile((LPWSTR)("COM1:"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,rnFILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);rnif(hCom==(HANDLE)-1)rnrnreturn false;rnrn怎么每次都<em>失败</em>呢。。。。我就纳了个闷了。。。rn我已经用虚拟<em>串口</em>工具虚拟了COM1和COM2端口的连接rn也用<em>串口</em>调试工具测试了下,显示这两个端口都空闲,可就是连不上啊。。。。rn[img=http://hi.csdn.net/space-3555420-do-album-picid-653506.html][/img]rn[img=http://hi.csdn.net/space-3555420-do-album-picid-653505.html][/img]
VC的CreateFile 出现不能打开超过9的串口
VC的CreateFile 出现不能<em>打开</em>超过9的<em>串口</em>
用CreateFile打开过滤驱动失败,这是怎么回事?
做了一个U盘过滤驱动,需要用DeviceIoControl和过滤驱动通信,在MFC exe程序中可以使用CreateFile<em>打开</em>并使用DeviceIoControl与过滤驱动通信。rnrn 但是在一个dll中却无法使用CreateFile<em>打开</em>驱动,我用GetLastError和FormatMessage跟踪,没有报错,说是操作成功完成,估计是权限不够吧。rnrnrn 但是过滤驱动的DriverEntry函数中,已经加了降低权限的代码,不知道为什么还是打不开?向大家请教rnrn#define USBFILTER_SYSDEVICE_NAME L"\\Device\\HTUsbFilter"rn#define USBFILTER_DOSDEVICE_NAME L"\\DosDevices\\HTUsbFilter"rnrn#pragma INITCODE rnextern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,rn IN PUNICODE_STRING RegistryPath)rnrn 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 rn MyDriverObject = DriverObject;rn // create control device objectrn RtlInitUnicodeString(&DeviceName, USBFILTER_SYSDEVICE_NAME);rn NtStatus = IoCreateDevice(DriverObject, rn 0, rn &DeviceName,rn FILE_DEVICE_DISK, rn 0,rn FALSE,rn &MyControlDeviceObject);rn if (!NT_SUCCESS(NtStatus))rn rn KdPrint((DRIVERNAME " - IoCreateDevice failed - %X\n", NtStatus));rn return NtStatus;rn rn rn NtStatus = ObOpenObjectByPointer(MyControlDeviceObject,rn 0,rn NULL,rn FILE_ALL_ACCESS,rn NULL,KernelMode,rn &CtlDevHandle);rn if(!NT_SUCCESS(NtStatus)) rn rn rn return NtStatus;rn rn ObDereferenceObject(MyControlDeviceObject);rn SecurityDescriptor = (PSECURITY_DESCRIPTOR)ExAllocatePool(NonPagedPool,sizeof(SECURITY_DESCRIPTOR));rn NtStatus = RtlCreateSecurityDescriptor(SecurityDescriptor,SECURITY_DESCRIPTOR_REVISION);rn if(!NT_SUCCESS(NtStatus)) rn rn KdPrint((DRIVERNAME " - Entering DriverEntry: DriverObject %8.8lX\n", DriverObject));rn return NtStatus;rn rn NtStatus = NtSetSecurityObject(CtlDevHandle,DACL_SECURITY_INFORMATION,SecurityDescriptor);rn if(!NT_SUCCESS(NtStatus)) rn rn return NtStatus;rn rn ZwClose(CtlDevHandle);rnrn // create symbol Linkrn RtlInitUnicodeString(&SymLinkName, USBFILTER_DOSDEVICE_NAME);rn NtStatus = IoCreateSymbolicLink(&SymLinkName, &DeviceName);rn if (!NT_SUCCESS(NtStatus)) rn rn KdPrint((DRIVERNAME " - IoCreateSymbolicLink failed - %X\n", NtStatus));rn IoDeleteDevice(MyControlDeviceObject);rn return NtStatus;rn rn 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 rn return STATUS_SUCCESS;rn // DriverEntryrnrnrndll中的相关代码:rn rnBOOL SendKeyUsernameToUsbfilter(char* Username,int len)rnrn BOOL bStatus;rn DWORD dwRet;rn int buflen = len;rn char keyUsername[64] = 0;rn HANDLE hHTUSBFILTERDevice = INVALID_HANDLE_VALUE;//scottrn rn memcpy(keyUsername,Username,len);rnrn //add notification to USBFILTERrn hHTUSBFILTERDevice = CreateFile(HTUSBFILTER_NAME,rn GENERIC_READ | GENERIC_WRITE,rn FILE_SHARE_READ | FILE_SHARE_WRITE,rn NULL,rn OPEN_EXISTING,rn 0,rn NULL);rn rn if(hHTIPSECDevice != INVALID_HANDLE_VALUE) rn rn bStatus = DeviceIoControl(hHTUSBFILTERDevice,rn IOCTL_USBFILTER_GET_USERNAME,rn keyUsername, rn buflen, rn NULL, rn 0,rn &dwRet, rn NULL);rn CloseHandle( hHTUSBFILTERDevice );rn if (!bStatus)rn rn MessageBox(NULL,"通知U盘过滤驱动<em>失败</em>-DeviceIoControl!","SendKeyUsernameToUsbfilter",0);rn rn MessageBox(NULL,"通知U盘过滤驱动成功!","SendKeyUsernameToUsbfilter",0);rn rn elsern rn// DWORD nErrorNo = GetLastError ( ); // 得到错误代码rn// LPSTR lpBuffer; rn// FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER | rn// FORMAT_MESSAGE_IGNORE_INSERTS | rn// FORMAT_MESSAGE_FROM_SYSTEM,rn// NULL,rn// nErrorNo, // 此乃错误代码,通常在程序中可由 GetLastError()得之rn// LANG_NEUTRAL,rn// (LPTSTR) & lpBuffer,rn// 0 ,rn// NULL );rn// MessageBox(NULL,lpBuffer,0,0);rn// LocalFree (lpBuffer); rn MessageBox(NULL,"<em>打开</em>U盘过滤驱动<em>失败</em>-CreateFile!","SendKeyUsernameToUsbfilter",0);rn return FALSE;rn rn rn return TRUE;rnrnrnrn
VC CreateFile打开 带点文件夹d:\abc..\server.asp失败
VC CreateFile<em>打开</em> 带点文件夹d:\abc..\server.asp<em>失败</em>.rn说是系统 找不到路径.rn试过用Dos命令的copy也复制不出文件.rn我是想问下对类似d:\abc..\server.asprnVC代码应该怎么操作呢?
连续两次调用CreateFile打开USB设备,第二次失败
连续两次用CreateFile<em>打开</em>USB设备,第一次以读的方式,第二次以写的方式。读方式<em>打开</em>成功,写方式<em>打开</em><em>失败</em>,调用GetLastError返回拒绝访问,但是我直接以写的方式<em>打开</em>,是成功的,这是为什么呢?
为什么我用CREATEFILE不能打开一个串口
rn[b]comx=CreateFile(s,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);rn if(comx==INVALID_HANDLE_VALUE)rn rn ShowMessage("每次<em>打开</em>都是<em>打开</em><em>失败</em>");rnrn还有函数GetCommState和SetCommState是只有当<em>串口</em>已经<em>打开</em>后才能够用他们设置<em>串口</em>参数的吗???
请问函数createfile打开串口)的返回值是什么类型的?
在DELPHI中用什么类型啊
打开串口文件API函数CreateFile,高手请进,急!!!
Dim lHandle As LongrnlHandle = CreateFile("COM1", GENERIC_READ Or GENERIC_WRITE, 0&, 0&, OPEN_EXISTING, 0&, 0&)请问这样调用有什么问题吗,为什么每次lHandle都返回-1rn 急,先谢谢了!!!
为什么CreateFile打开驱动第一次成功第二次失败
在ring3,利用CreateFile<em>打开</em>驱动rnm_hDevice = CreateFile (_T("\\\\.\\UHFControl"), 0, 0, NULL, OPEN_ALWAYS, FILE_FLAG_OVERLAPPED, NULL);rn在ring0,创建设备rnrn status = IoCreateDevice (DriverObject,rn sizeof (CControlDeviceExtension*),rn &m_NameString, // No Namern m_DriverType,rn FILE_DEVICE_SECURE_OPEN,rn FALSE,rn &m_Self);rn这是一个usb hub过滤驱动,进行USB设备的重定向,结果对第一个设备进行重定向可以成功,第二个就偶尔会<em>失败</em>。通过getlasterror获得的错误代码是2,系统找不到指定的文件rn求指点,为什么啊?
vs2008中用QT调用createfile打开分区失败的原因
vs2008中用QT调用<em>createfile</em><em>打开</em>分区<em>失败</em>的原因rn我在vs2008中编译一个测试代码,<em>打开</em>一个分区,没有问题!rnrn测试通过后,我在vs2008里建立了一个QT工程,然后把测试代码嵌入里面,希望可以在图形界面中选择需要<em>打开</em>的分区,编译通过,但死活都是<em>打开</em>分区<em>失败</em>!rnrn<em>打开</em>分区的代码如下:rn_TCHAR volumePath[7];rn_sntprintf(volumePath, 6, _T("\\\\.\\%c:"), volume);rnvolumePath[6] = _T('\0');rnhVolume = CreateFile((LPCTSTR )volumePath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,rnNULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);rnrnrn查找返回的错误代码显示的错误是:rn刚开始的错误码是2:意思是找不到<em>打开</em>的文件rn换了好几个分区来<em>打开</em>时变成了这个错误:@err,hr 0x0000007b 文件名、目录名或卷标语法不正确。 unsigned longrnvolumePath的值显示是:\\.\\C:rn_TCHAR的大小是1rn不知道qt对这种反斜杠的文件名:\\.\\C: 有没有敏感,以致打不开分区。rnrn望知道错误的大侠指点rnrnqt4.6.2 vs2008版
linux USB转串口打开失败
我用的虚拟机USB转<em>串口</em>,插上<em>串口</em>后有个/dev/ttyUSB0,但是open()打不开它,有时<em>打开</em>了也发不了数据,我试过echo "" >/dev/ttyUSB0 报错为:bash:输入输出错误 ,这是什么原因呢,搞的郁闷了
用CreateFile函数打开一个串口时遇到的问题
我用CreateFile函数<em>打开</em>一个<em>串口</em>rnrnlHandle = CreateFile("Comm1", GENERIC_READ Or GENERIC_WRITE, 0&, 0&, OPEN_EXISTING, 0&, 0&)rnMsgBox lHandlernrn为什么MsgBox总是返回“-1”,请问哪位能帮解决这个问题,先谢谢了!
用API函数打开串口失败的问题
因为用MSCOMM控件处理效率过低,改用API函数来处理<em>串口</em>通信,rnrn下面是<em>打开</em><em>串口</em>的前部分代码?rnrnDim lResult As LongrnDim lHandle As LongrnDim DCB_COMM As DCBrnDim cDCBConfig As StringrnDim lpSecurityAttributes As SECURITY_ATTRIBUTESrnrnWith lpSecurityAttributesrn .nLength = 1rn .bInheritHandle = Falsern .lpSecurityDescriptor = 0rnEnd WithrnrnlHandle = CreateFile(cPort, GENERIC_READ Or GENERIC_WRITE, 0&, lpSecurityAttributes, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0&)rnrnDebug.Print lHandlernrnIf lHandle = -1 Then '<em>打开</em><em>串口</em><em>失败</em>rn OpenThePort = Falsern MsgBox "<em>串口</em>可能正被其他应用程序占用!"rn lResult = CloseHandle(lHandle) '先关闭<em>串口</em>后再<em>打开</em>rn If lResult = 0 Thenrn OpenThePort = Falsern Exit Functionrn End Ifrn Exit FunctionrnEnd Ifrnrn为什么<em>打开</em><em>串口</em>总是<em>失败</em>? rnrn谢谢,rn可以给一个VB<em>打开</em><em>串口</em>通信的例子么?
打开串口失败,请检查硬件设备
公司的一个充电费设备,是外接COM<em>串口</em>的,在一个台机子上可以使用,但机子性能不行了,装了一台新机子,现在就提示<em>打开</em><em>串口</em><em>失败</em>,换其它的机子也是一个样的,请问这是怎么回事呢,有能帮我的吗,谢谢 。。。。。。在线急等,关系很工作啊。谢谢 了。
wince420串口打开成功,获取参数失败
代码如下rn[code=C/C++]if (m_hComm != INVALID_HANDLE_VALUE) //已经<em>打开</em>,直接返回rn rn return TRUE;rn rn rn m_hComm = CreateFile(_T("COM1:"), //以同步读取方式<em>打开</em><em>串口</em>COM1rn GENERIC_READ || GENERIC_WRITE, //允许读rn 0, //独占方式rn NULL,rn OPEN_EXISTING, //<em>打开</em>而不是创建rn 0, rn NULL);rnrn if (m_hComm == INVALID_HANDLE_VALUE) // 无效句柄,返回。rn rn return FALSE;rn rn rn //配置<em>串口</em>,得到<em>打开</em><em>串口</em>的当前属性参数,修改后再重新设置<em>串口</em>。rn DCB portDCB;rn portDCB.DCBlength=sizeof(DCB); //DCB结构大小rn rn Sleep(1000);rn if(FALSE == GetCommState(m_hComm,&portDCB))//默认<em>串口</em>参数rn rn DWORD mmmm= GetLastError();rn return FALSE;rn [/code]rnrnCreateFile的时候成功,rnGetCommState的时候就<em>失败</em>,rn返回为0,GetLastError为1;rn我使用的是2410的板子,添加了三<em>串口</em>驱动,禁用了调试<em>串口</em>,三个<em>串口</em>都是一样的情况!rn
【Windows API】打开串口号大于9的串口,CreateFile返回失败
近日,从网络上移植如下代码用于枚举计算机有效<em>串口</em>号。 void EnumCom() { CString strCOM; BOOL bResult; HANDLE hCom; int i; DWORD dwError; m_uiCom.RemoveAll(); for (i = 1; i &lt;...
wygkcn_ShowArticle下载
wygkcn_ShowArticlewygkcn_ShowArticle 相关下载链接:[url=//download.csdn.net/download/yuwenxuan14/2681836?utm_source=bbsseo]//download.csdn.net/download/yuwenxuan14/2681836?utm_source=bbsseo[/url]
实现自定义的站点导航提供程序下载
实现自定义的站点导航提供程序 ,SiteMapPath控件实现网站导航,但必须使用站点地图,并且名称必须为“Web.sitemap”。通过配置文件可以修改这些默认设置,例如将站点地图的名称改为“my.sitemap”。站点地图默认由“System.Web.XmlSiteMapProvider”类提供访问程序 相关下载链接:[url=//download.csdn.net/download/gkgklln/3561197?utm_source=bbsseo]//download.csdn.net/download/gkgklln/3561197?utm_source=bbsseo[/url]
DynamipsGUI 2.83下载
DynamipsGUI 很好用的cisco路由交换模拟软件 相关下载链接:[url=//download.csdn.net/download/lansetianji8888/3725666?utm_source=bbsseo]//download.csdn.net/download/lansetianji8888/3725666?utm_source=bbsseo[/url]
我们是很有底线的