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学习板就知道了。
单片机一般是STM32或者是silicon公司的C8051F34系列这些自带USB的单片机或者51单片机加上一块USB控制器。
使用silicon公司的丹皮纳吉,你可以很快做出一个成品,因为silicon公司提供了windows驱动和下位机的驱动。你只需要去调用他提供的API函数就够了。
使用前者或者是51结合USB控制器,你可以学到很多更详细的USB知识(很直接的说,USB是个非常复杂的东西)
需要掌握的知识有:
上位机,需要掌握VC或者VB之类的能生成图形界面的软件,来调用siliocn的库实现通过USB向单片机传递数据或者是自己去定义USB的那些结构体实现设备的枚举握手等过程(初学者不建议,有点难,但网上的源码非常多,肯钻研,这条路更好。)。
下位机,就需要掌握单片机的使用。
当然所有的这些,需要熟练使用C语言,以及了解C++面向对象的思想。
这东西比较复杂,不是一蹴而就的,慢慢来,相信你会有个好的前景的!