关于BCB实现单片机和PC进行USB通讯的问题(里面详细,请进)

maomao19850915 2007-08-12 01:41:06
大家好,本人刚学BCB一个星期,刚学习软件编程也是一个星期,是超级菜鸟一个。由于工作需要,现在要用BCB做一个软件实现AVR单片机和PC进行RS232串口通讯与USB通讯。RS232的部分我已经基本做好,是调用API函数实现的。但是问题在于USB通讯的部分。我要自己做一个驱动程序。
问题(1):请问用VC来写驱动,再用BCB做PC端的通讯软件可以么??

问题(2):在做RS232接口通讯的时候,调用的API函数如这些HANDLE hComm;DCB dcb;CreateFile;GetCommState;CloseHandle;WriteFile;ClearCommError;COMSTAT cs;可以直接用来做USB通讯么??如果不行,是不是只要把本来的串口地址改为USB口的地址再用就可以了??(请具体说明哪些函数怎样该)

问题(3):我看了这个帖子,http://blog.tom.com/blog/read.php?bloggerid=281841&blogid=32212
注意它里面的这一段:
下面是访问 USB 口必备的函数:

#include <vcl.h >
#include <dir.h >
#include <setupapi.h >
#include "C:/WINDDK/3790/inc/ddk/w2k/usbdi.h"
#include "C:/WINDDK/3790/inc/ddk/w2k/devioctl.h"
#include <initguid.h >
//---------------------------------------------------------------------------
// 下面必须为驱动程序的 GUID 值, 这里我乱写的数
DEFINE_GUID(USB_DRIVER_GUID, 0x12345678,0xabcd,0x1122,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0x00);
//---------------------------------------------------------------------------
HANDLE OpenOneDevice(HDEVINFO hDvcInfo, PSP_INTERFACE_DEVICE_DATA DvcInfoData, char *sDevNameBuf)
{
HANDLE hOut = INVALID_HANDLE_VALUE;
…………………………………………………..一直到
HANDLE OpenMyDevice()
{
char DeviceName[MAXPATH] = "";
return OpenUsbDevice(&USB_DRIVER_GUID, DeviceName);
}
//---------------------------------------------------------------------------
HANDLE OpenMyDevPipe(const char *PipeName)
{
char DeviceName[MAXPATH] = "";
if(GetUsbDeviceFileName(&USB_DRIVER_GUID, DeviceName))
{
strcat(DeviceName,"\\");
strcat(DeviceName,PipeName);
return CreateFile(DeviceName, GENERIC_WRITE ¦GENERIC_READ, FILE_SHARE_WRITE ¦FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
}
return INVALID_HANDLE_VALUE;
}。…………………………………………………
这段代码是写在哪里的??是BCB还是Windows Server 2003 DDK??

3个问题,我是一只小鸟,里面可能有一些对于大家来说非常简单而理所当然的问题,但是对于我来说就不一样,所以请大侠们不要“不屑”回答,大虾回答的越详细,小鸟就成长的越快。谢谢!!
还有,小弟初来贵地,可能很多规矩不懂,请大家多多包涵。如果各位大虾对与做USB驱动有什么好的建议,或者有源代码的话,也或者有现成的话,请大家帮帮我,请大家不要“吝啬”,分享一下。maomao1985@hotmail.com

抱歉占用大家的宝贵时间 再次谢谢大家....
...全文
173 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
constantine 2007-08-13
  • 打赏
  • 举报
回复
DeviceIoControl是要看驱动有没有实现的
USB通信不比串口,USB的驱动一般里面会让你四线DeviceIoControl,或者是ReadFile/WriteFile。两者实现都可以。
如果有实现后者,那么差别不是很大。
BenLeak 2007-08-13
  • 打赏
  • 举报
回复
完全不一样的

一般都是使用 DeviceIoControl 函数控制的

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧