C语言如何让调用笔记本的USB接口啊,求实例
3个回答
展开全部
1.打开usb接口上的设备,或者打开usb控制器,涉及到windows的驱动访问。一般访问设备使用CreateFile打开设备,然后使用ReadFile/WriteFile读写设备。
2.例程:
handle hFile = CreateFile(..., FILE_FLAG_overlapped, ...); //指定以异步方式打开
byte bBuffer[100];
overlapped o = { 0 };
o.Offset = 345;
bool bReadDone = ReadFile(hFile, bBuffer, 100, null, &o); // bReadDone 指定I/O请求是不是以同步方式打开
dword dwError = GetLastError();
if (!bReadDone && (dwError == ERROR_IO_PENDING)) { //异步方式打开
// The I/O is being performed asynchronously; wait for it to complete
WaitForSingleObject(hFile, infinite);
bReadDone = TRUE;
}
if (bReadDone) {
// o.Internal contains the I/O error
// o.InternalHigh contains the number of bytes transferred
// bBuffer contains the read data
} else {
// An error occurred; see dwError
}
展开全部
没有调用USB接口这种说法吧
可以打开USB接口上的设备,或者打开USB控制器,那涉及到windows的驱动访问。
一般访问设备使用CreateFile打开设备,然后使用ReadFile/WriteFile读写设备。
比如:
HANDLE hFile = CreateFile(..., FILE_FLAG_OVERLAPPED, ...); //指定以异步方式打开
BYTE bBuffer[100];
OVERLAPPED o = { 0 };
o.Offset = 345;
BOOL bReadDone = ReadFile(hFile, bBuffer, 100, NULL, &o); // bReadDone 指定I/O请求是不是以同步方式打开
DWORD dwError = GetLastError();
if (!bReadDone && (dwError == ERROR_IO_PENDING)) { //异步方式打开
// The I/O is being performed asynchronously; wait for it to complete
WaitForSingleObject(hFile, INFINITE);
bReadDone = TRUE;
}
if (bReadDone) {
// o.Internal contains the I/O error
// o.InternalHigh contains the number of bytes transferred
// bBuffer contains the read data
} else {
// An error occurred; see dwError
}
可以打开USB接口上的设备,或者打开USB控制器,那涉及到windows的驱动访问。
一般访问设备使用CreateFile打开设备,然后使用ReadFile/WriteFile读写设备。
比如:
HANDLE hFile = CreateFile(..., FILE_FLAG_OVERLAPPED, ...); //指定以异步方式打开
BYTE bBuffer[100];
OVERLAPPED o = { 0 };
o.Offset = 345;
BOOL bReadDone = ReadFile(hFile, bBuffer, 100, NULL, &o); // bReadDone 指定I/O请求是不是以同步方式打开
DWORD dwError = GetLastError();
if (!bReadDone && (dwError == ERROR_IO_PENDING)) { //异步方式打开
// The I/O is being performed asynchronously; wait for it to complete
WaitForSingleObject(hFile, INFINITE);
bReadDone = TRUE;
}
if (bReadDone) {
// o.Internal contains the I/O error
// o.InternalHigh contains the number of bytes transferred
// bBuffer contains the read data
} else {
// An error occurred; see dwError
}
追问
如果我用C编程,能否实现从键盘输入十进制数,从计算机的USB接口输出其对应的二进制码呢?
追答
可以的
获取键盘输入最简单的就是使用键盘钩子,获取用户输入
向USB接口输出的话,你应该是向连接到USB接口的某个设备输出吧:打开这个设备,向他写数据。
但USB的设备各种各样,驱动也各异;你得清楚他是如何工作的,应该如何操作他。
如果是你自己做的USB设备,则需要做usb驱动或者使用通用的USB驱动
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在Windows平台下,一个USB接口,被称为串口,被视为一个设备,用OpenFile函数打开.
如果串口被成功打开,接下来就是利用一个DBC结构体对串口的相关参数进行设置.
接下来就可以使用ReadFile和WriteFile进行读写操作了.
具体做法与函数参数描述起来比较复杂,在此引入相关资料:
http://wenzhang.baidu.com/page/view?key=8a466838e3848226-1428159195
如果串口被成功打开,接下来就是利用一个DBC结构体对串口的相关参数进行设置.
接下来就可以使用ReadFile和WriteFile进行读写操作了.
具体做法与函数参数描述起来比较复杂,在此引入相关资料:
http://wenzhang.baidu.com/page/view?key=8a466838e3848226-1428159195
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询