在线等! 用ch372和tJA1042 做了个CAN适配器 ,主控芯片M16c29 1、上位机VB.NET开发用CH375SetIntRoutine设置中断获取数据,当CAN收发器发送过快时适配器卡死。 2、用CH375SetBufUpload设置缓冲区接收时,发现CAN 500kbps发送数据时接收数据不全(丢帧) 3、请问以何种方式接受才能接受到所有数据。 在线等!急求
调用CH375SetBufUpload设置缓冲上传模式时,最好创建一个线程不停的读数据,而且每包大小一样,读数据的大小是包的整数倍。
你好:首先感谢您提供的帮助;还有几个问题。 1、1个包最大64个字节?包跟包之间的发送间隔是1ms? 2、我在上位机程序里另起了一个线程接收,在接收时影响下一数据包的接受么。(假设我正在读取数据时,这时候下位机有数据传到)
还有一个问题,在调试的使用;调用发送函数(发送包) 240次,接收后产生中断只产生了134次。
1.我们的端点大小是64,PC端读写函数一次读写最大支持4096个字节。 2.不影响,下位机必须等上包传完再传下一包,有个上传成功中断。
丢帧问题解决,万分 感谢 新问题:当速度非常快的时候上传缓冲区出现未进中断清空,适配器就卡在那里了,能发送,但是不能接收了。可以手动清空CH372上传缓冲区么。
你上位机每次读多少字节?要尽可能多读数据。
发送的时候我一个包发送一帧数据,一个帧14字节。
读的时候缓冲区里有多少帧就一起读出来
您说的多读数据是指读缓冲区的次数么?
如果每包传14个字节的话,可以一次读4088(14*292,读函数最大支持4096)个字节,不要去查询包的个数,直接去读数据,读函数第3个参数会返回实际读到个数。
我现在做的是另外启了一个线程去读缓冲区的数据,中间没有间隔。您的意思是读跟读之间加时间一个间隔?
加个Sleep(1)就可以了,还有你下位机最好是56(14*4)一传,还有下位机必须等上包传完再传下一包,有个上传成功中断。
N年前和CH375和单片机折腾过类似项目。