如何使用C语言编程读取从电脑usb接口的信息。
我有一块能发送信息到电脑usb接口的单片机学习版,我也试过使用软件接收usb的信息,但是我想要一个用C语言来编写的可以接收usb信息的源代码那么如何。我想看看对应的程序日...
我有一块能发送信息到电脑usb接口的单片机学习版,我也试过使用软件接收usb的信息,但是我想要一个用C语言来编写的可以接收usb信息的源代码那么如何。我想看看对应的程序日后好让我自己进行编写对应的程序。
展开
4个回答
展开全部
可以打开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
}
一般访问设备使用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驱动资料。
追问
网上哪里有相关的知识看,我现在买了一本介绍usb的书,但是看起来稍微有点困难
追答
第一步 搞清楚什么是端点、路由器什么的观念
第二步 学习USB的自据过程
第三步 学习通过模式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Windriver很容易上手的。
追问
什么来的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
了解驱动通信什么表示1 什么表示0 就能得到信息 看驱动书籍貌似都跟操作系统有关 不好说 反正那东西需要相当水平 代码都是一次次试出来的 加油吧 不懂上网多查一下
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询