我在使用372和电脑通讯中 通讯一段时间 大概一两分钟后 单片机就不能收到电脑的数据了 我上位机是vb编写的 是伪中断接受 我发现是上位机软件问题 请问大虾 在上位机程序中应该注意一些什么?谢谢
您的流程应该是不是这样:上位机向下发数据,然后单片机收到数据后通过中断端点上传通知pc机准备读数据,数,接着就执行读操作,等待单片机上传数据. 你看一下,程序是不是停在了某个读操作上,导致你上位机没法向下执行,以至你的单片机收不到数据,其实是你的上位机可能就没发数据.如果是这样,那就是单片机程序死在某个地方了.
谢谢你,我问题解决了,我看了你们的资料,也是象你说的那样通讯的,不过这样太不方便了,因为有时候pc机根本不知道到单片机什么时候发送数据。当然也不会等中断了,我希望的是单片机什么时候想发数据就什么时候发,pc接受到数据才做相应的处理。我后来就改了一下我单片机发送子程序,就好了,现在发现是没有什么问题了。不过没有按照你们说的那样做,现在即单片机什么时候想发数据就什么时候发。这样做会有什么隐患吗?我现在发现是没有问题了,就怕以后批量生产时有出问题。
本来就是单片机随便什么时候发送数据就发送数据,和你的程序有关系,我们只是提供给你的例子程序来供客户参考而已
3楼说得对. 但需要注意的是USB通讯都是由USB主机发送的.对于计算机和CH372通讯,读写操作都应该是计算机开始的.所以说并不是CH372想上传就能上传的,需要计算机来读来等数据. CH372的上传数据主要有3种方式: 1.直接上传,就是要上传数据就是您的程序先用读函数去读,CH372上传端点的有数据则读操作完成返回,没有数据就会一直等,就跟您之前程序那样. 2.类似于串口的查询做法,设置缓冲上传,然后驱动就会不停的查询CH372的上传数据,有数据就会收到驱动的缓冲区内,不过数据是以USB包为单位存放的.然后您应用层程序可以查询这个缓冲区内的数据包个数,有则用读函数取出来,没有会立即返回. 3.类似于串口的中断事件,通过中断上传端点事先通知计算机,避免程序停在读写操作上,保证每一次操作都能很快返回. 我们芯片的通讯能力基本上是不会有什么问题的.是经过长时间和众多客户的使用验证的. 你要是担心可以多做测试,特别是在软件上.