您好!
当前状态是这样的:
自制开发板,使用 mps430f5525 自带 usb与主机连接,采用CDC模式,主机是win xp sp3系统
主机可以识别到设备,并且用某些串口调试工具可以收发数据(有些串口调试工具打不开串口)
问题是:
使用C#做的一个客户端程序不能正确识别硬件,主要卡在下面这段代码上
protected override void WndProc(ref Message m)
{
try
{
//if (m.Msg == WM_DEVICECHANGE)
//{
switch (m.WParam.ToInt32())
{
case DBT_DEVICEARRIVAL: //
×××××××××××× // 此时是许多 usb串口插入电脑后最终进入的 状态
break;
case DBT_DEVNODES_CHANGED : // 这个是 上文提到的板子查到主机上,最后进入的状态,当移出设备,也是进入这个状态
break;
case DBT_DEVICEREMOVECOMPLETE: //
××××××××××××××××××
break;
default:
break;
}
}
因为对USB的详细工作原理不是很明白,所以很困惑
怀疑是 430 usb本身的 CDC接口模式与其它诸如市场上USB转串口线的模式不同导致的
请问是不是这样呢?我应该如何解决问题呢?
hongliang lei:
同问啊!Port设备应该是自动广播 DBT_DEVICEARRIVAL和DBT_DEVICEREMOVECOMPLETE的。不需要RegisterDeviceNotification函数,但是为什么430的虚拟串口没有自动广播呢?
Leon Yan:
回复 hongliang lei:
你好,楼主:
这个问题我之前也遇到过,如果你用的是别人的串口库来设计PC软件,那么需要找一个对USB CDC支持比较好的库来做,尝试一下。
这个现象就如你所描述“有些串口软件无法打开”一样。
谢谢。
Michael Liu:
回复 Leon Yan:
感谢 Leon Yan 的解答,您是否有使用过对 CDC 支持较好的库呢,可否推荐一下,或者其他人有用过的经验,希望分享一下,谢谢^^
hongliang lei:
回复 Michael Liu:
有人知道吗? 在线等~
非常感谢!