打印

高分请教困扰我三天的问题:usb往上位机第二次发送数据

[复制链接]
1660|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dj_jd|  楼主 | 2012-6-12 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在在上位机上用c#开发了一个USB-CAN桥的界面,界面上有个“启动CAN”的按钮。我的设计思路是:按下按钮后传输CAN设置所需的参数,进行CAN参数设置,设置成功后,下位机向上位机返回,是否成功的应答。
    我用的主控制芯片是STM32F107,它有两路CAN.现在遇到的问题是当第一次按下按钮时,CAN可以设置成功,并用应答返回。可是第二次按下按钮时就没有应答返回(CAN设置成功了),可第三次在按下按钮时,会返回上一次的应答,也就是第二次想启动另一路CAN时,必须按下两次启动键!
    这个问题已困扰了我三天了,请大侠们帮我分析分析,为什么第二次的应答不能及时的返回!
   我的qq:641114988,有做过USB-CAN方面的大侠可以加我,我们交流交流!

相关下载

相关帖子

沙发
dj_jd|  楼主 | 2012-6-12 09:26 | 只看该作者
请高手帮忙啦,我的界面设计中数据传输是一个进程,其他的部分是另一个进程,不知道跟这个有没有关系!

使用特权

评论回复
板凳
dj_jd|  楼主 | 2012-6-12 09:27 | 只看该作者
c#中的启动事件:
private void btx启动CAN_Click(object sender, EventArgs e)
        {
            
            USB_DRIVER_Pipe CommandTransferPipe = Command_OUTPipe;
            if (gCANChannel == 0)
            {
                tslCAN1工作状态.Text = "CAN1状态:开始初始化";
                GetInitCAN1Command();
               
                //如果pipe正在传输数据
                if (CommandTransferPipe.IsInUse())
                    CommandTransferPipe.HaltTransferOnPipe();
                else
                    SingleCMDTransfer(CommandTransferPipe, InitCommand1);//开始传输
               
            }
            if (gCANChannel == 1)
            {
                tslCAN2工作状态.Text = "CAN2状态:开始初始化";
                GetInitCAN2Command();
               
                if (CommandTransferPipe.IsInUse())
                {
                    CommandTransferPipe.HaltTransferOnPipe();
                    Debug.WriteLine("命令通道正在使用!");
                }
                else
                    SingleCMDTransfer(CommandTransferPipe, InitCommand2);
            }
            ListenCommandACK(); //侦听应答
           

        }

使用特权

评论回复
地板
airwill| | 2013-2-25 22:32 | 只看该作者
dj_jd 发表于 2012-6-12 09:26
请高手帮忙啦,我的界面设计中数据传输是一个进程,其他的部分是另一个进程,不知道跟这个有没有关系! ...

会不会是下位机的问题. F107 的 usb 和 can 不能同时启用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

3

帖子

0

粉丝