巨难请教:怎样望USB口子写数据啊! 买了根USB-并口的线,想通过USB口把数据写到别的设备里面(那个设备当然是用并口接受数据啦)。把线插到USB口后,能识别出这个设备来,用/NTDDK/SRC/WDM/USB/USBVERFY/USBVERIFY.EXE程序也能识别出这个设备。可是我不知道该怎样往这个USB口写数据? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用ceratefile(),writefile()等API函数实现数据通讯!可是在createfile()里面需要一个设备名称的东西!我怎样得到USB的名称就象“串口的COM1”? 记得还有几个API可以得到,具体的名字忘了 USB-并口并口线那其实是虚拟出一个并口出来。装上他自带的驱动,就按照并口操作就可以了用API和串口一样,用CREATEFILE.READFILE,WRITEFILE等给你个例子extern "C" bool PASCAL Link() //连接到打印机{ m_hCardInterFace = CreateFile("LPT1", GENERIC_WRITE, NULL,NULL, OPEN_EXISTING, NULL, NULL); if(m_hCardInterFace!=INVALID_HANDLE_VALUE) { m_CommTimeouts.ReadIntervalTimeout = 1000;//读操作两个字节之间的时间(单位:毫秒) m_CommTimeouts.ReadTotalTimeoutMultiplier = 1000;//读操作的时间(单位:毫秒) m_CommTimeouts.ReadTotalTimeoutConstant = 1000; m_CommTimeouts.WriteTotalTimeoutMultiplier = 1000; m_CommTimeouts.WriteTotalTimeoutConstant = 1000; SetCommTimeouts(m_hCardInterFace, &m_CommTimeouts); return true; } return false;}extern "C" void PASCAL Unlink() //断开打印机{ CloseHandle(m_hCardInterFace);}bool SendCommand(CString CommandWord) //向打印机发出命令,并且返回命令状态{ DWORD t1,dwRead; COMSTAT t2; CString Command=0x1b; Command+=CommandWord; Command+=0x0d; WriteFile( m_hCardInterFace, Command.GetBuffer (Command.GetLength ()), Command.GetLength (), &dwRead, NULL); if(!ClearCommError(m_hCardInterFace,&t1,&t2)) { switch(t1) { case CE_OOP: TRACE("G CE_OOP\n"); return false; break; case CE_PTO://超时错误 TRACE("G CE_PTO\n"); return false; break; case CE_IOE: TRACE("G CE_IOE\n"); return false; break; } } return true;}从并口读用readfile(),网上也可以找到例子,用法都差不多 参考http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=195278 这个更好啊!http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=61527 [高手请进]怎样启动ie浏览一个网页,并且打开新的ie窗口,使用当前ie窗口? 急急急,挺普遍的问题我就闹不明白了! 将用CSplitterWnd分割的窗口固定的思路,请高手指点错在那里?? 要写一个接收UDP广播包的东西,请问还需要bind端口么? b/s and c/s UDP实现广播通信的办法 ListCtrl如何客户区对齐 为什么总是报这样的错误?!! 如何在状态栏的窗格上显示tips提示 求助: 文本框的信息是滚动的,但怎么实现自动滚动显示最新信息啊? 非常实际的问题:CTabCtrl::InsertItem()的问题 怎样得到硬件的属性!
用API和串口一样,用CREATEFILE.READFILE,WRITEFILE等
给你个例子
extern "C" bool PASCAL Link() //连接到打印机
{
m_hCardInterFace =
CreateFile("LPT1",
GENERIC_WRITE,
NULL,NULL,
OPEN_EXISTING,
NULL,
NULL);
if(m_hCardInterFace!=INVALID_HANDLE_VALUE)
{
m_CommTimeouts.ReadIntervalTimeout = 1000;//读操作两个字节之间的时间(单位:毫秒)
m_CommTimeouts.ReadTotalTimeoutMultiplier = 1000;//读操作的时间(单位:毫秒)
m_CommTimeouts.ReadTotalTimeoutConstant = 1000;
m_CommTimeouts.WriteTotalTimeoutMultiplier = 1000;
m_CommTimeouts.WriteTotalTimeoutConstant = 1000;
SetCommTimeouts(m_hCardInterFace, &m_CommTimeouts);
return true;
}
return false;
}
extern "C" void PASCAL Unlink() //断开打印机
{
CloseHandle(m_hCardInterFace);
}
bool SendCommand(CString CommandWord) //向打印机发出命令,并且返回命令状态
{
DWORD t1,dwRead;
COMSTAT t2; CString Command=0x1b;
Command+=CommandWord;
Command+=0x0d;
WriteFile(
m_hCardInterFace,
Command.GetBuffer (Command.GetLength ()),
Command.GetLength (),
&dwRead,
NULL);
if(!ClearCommError(m_hCardInterFace,&t1,&t2))
{
switch(t1)
{
case CE_OOP:
TRACE("G CE_OOP\n");
return false;
break;
case CE_PTO://超时错误
TRACE("G CE_PTO\n");
return false;
break;
case CE_IOE:
TRACE("G CE_IOE\n");
return false;
break;
}
}
return true;
}从并口读用readfile(),网上也可以找到例子,用法都差不多