USB口的问题,200分求解

syeerzy 2005-09-04 12:48:07
有一台设备在USB口上,现在需要向这个口写一串信号,假设为010111011000

现在问题是设备插在哪个口都可能.

求思路与可用的类方法或Win32API.

这个设备是一个可编码的遥控器.不是U盘等存储设备.
...全文
242 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
syeerzy 2005-09-04
  • 打赏
  • 举报
回复
多谢2位,再过一天结贴.

2位提供的信息对我帮助都很大.
syeerzy 2005-09-04
  • 打赏
  • 举报
回复
谢谢 timiil(小华) ,现在这个机器上无2005,打不开那个例子。还是谢谢。

里面代码比较多,等有时间值得研究一下。

向U口直接写2进制数据不知道哪位做过的也顺便介绍一下经验嘛,比如容易犯的毛病或忽略的问题,以及一些非常规与常规方法的区别等。
zeusvenus 2005-09-04
  • 打赏
  • 举报
回复
看看下面这哥们的回复,如果只是在WIN32平台下,可以简单使用GetDefaultCommConfig()这个API。
Why don't you simply call the Win32 API GetDefaultCommConfig() to figure out whether a specific port exists. Optionally followed by CreateFile() if you like to know if another process currently has opened that port.
Works on all Win32 platforms and is much simpler.

Attention:
COM10 or greater must be preceeded with "\\.\" for calls to CreateFile(). See Q115831 for details. WinCE needs a trailing ":" for both GetDefaultCommConfig() and CreateFile().

zeusvenus 2005-09-04
  • 打赏
  • 举报
回复
上面提供免费下载的代码,直接调用就行了,刚好是解决这问题的。
Introduction
You might think that determining which serial ports are present on a Windows PC would be an easy task. It seems like a reasonable enough thing for the OS to support. Unfortunately, there was no support for it at all (short of reading the registry yourself) before Win2K, and even then, the API is a bit cumbersome.

The attached serial port enumeration code first determines which operating system it is running under, and then runs the appropriate routine to enumerate the serial ports. In Win 9x (and Me) it uses the registry. In W2K and later it uses the SetupAPI that was included in that version of the WinSDK. It also has support for "brute force" enumeration of serial ports under NT4.

Unfortunately, I statically linked with setupapi.lib, so the provided executable won't actually run under 95 and nt4 (I didn't really need to support those OS's for my application.) This could be finagled by replacing the SetupDi* function calls with dynamic binding via LoadLibrary if needed.

To use the EnumSerial code, simply include EnumSerial.cpp and .h in your project, and link with setupapi.lib in the win32 sdk (this is under "additional dependencies" in the project link settings in Visual Studio).

All you have to do now is #include "EnumSerial.h" in your source code, allocate an empty CArray of SSerInfo structs, and make a call to EnumSerialPorts. It will populate your array with filled-out SSerInfo structs which contain the following information:

CString strDevPath; // Device path for use with CreateFile()
CString strPortName; // Simple name (i.e. COM1)
CString strFriendlyName; // Full name to be displayed to a user
BOOL bUsbDevice; // Provided through a USB connection?
CString strPortDesc; // friendly name without the COMx
Example
CArray<SSerInfo,SSerInfo&> asi;
EnumSerialPorts(asi,FALSE/*include all*/);

zeusvenus 2005-09-04
  • 打赏
  • 举报
回复
终于找到一个了,看看
http://www.codeproject.com/system/setupdi.asp?target=USB%7Cport
呵呵
syeerzy 2005-09-04
  • 打赏
  • 举报
回复
不至于吧。。。。。200分都这么冷清?
timiil 2005-09-04
  • 打赏
  • 举报
回复
http://weblogs.asp.net/israelio/archive/2005/08/15/422637.aspx
介绍的好像不错
zeusvenus 2005-09-04
  • 打赏
  • 举报
回复
遍寻?
mark.

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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