关于VC开发基于CAN总线的上位机软件的一些问题。

现在已经可以调用厂商提供的API了。提供的API大致分为1、Devicemanagementanddeviceaccess;2、CANcontrol;3、CANmessa... 现在已经可以调用厂商提供的API了。提供的API大致分为1、Device management and device access;2、CAN control;3、CAN message channel;5、Cyclic CAN transmit list这几个块。对这些函数已经浏览过一遍了。我要的最后结果是能够实现实时显示汽车的转速转矩,运行状态,电机温度等信息,并且能够设定转速。现在无从下手了。。请问下达人接下来,我是不是要制定个CAN协议了,然后采集数据再显示数据? 展开
 我来答
hw584521314
推荐于2016-09-15 · TA获得超过120个赞
知道小有建树答主
回答量:135
采纳率:50%
帮助的人:33.7万
展开全部
准确点说,你接下来应该做的是制定自己的数据格式:就是底层一个报文的格式是什么样子,例如:汽车转速的数据的ID号应该是多少,第几个字节开始表示的是转速数据等等,当上位机和下位机都采取同一个数据格式进行通信的时候,就是所谓的协议。 然后上位机利用你的Can的相关API,进行数据收发,同时用UI显示出来。但是要注意其他一些细节,例如Can报文收发底层驱动上,是否采用了缓冲机制,最好是有缓冲,不然容易丢包。
更多追问追答
追问
嗯。缓存机制是不是就是说的那个USB toCAN卡?数据的收发都是先存在里面的。另外就是说下位机不可能一直都发送数据到CAN卡吧。我要控制下位机的数据发送也是通过上位机发送某个指令给他吗?
追答
不是,缓冲机制是你CAN驱动的接受发送驱动程序要支持的,一般用循环队列实现。另外,至于你说的下位机是否一直发送数据,这个由你下位机的程序决定,还有就是,下位机是否是需要发送数据受上位机的指令控制,也是由你下位机和上位机约定好的规则进行(说白了,还是上下位机的程序代码决定)  例如:你下位机的程序,你设置的是每隔1秒发送一条CAN报文,来汇报车速。  而你上位机也是1秒来处理报文,也许这样就没问题,但是如果你上位机不是硬实时操作系统,不能准确地在一秒内处理完CAN发送上来的报文,那么当下一个CAN报文发送上来时,就会丢包。再者,例如你的约定是:下位机一直等待上位机给一个指令(CanRecv)一旦收到上位机给出一个指令(CanTran)然后下位机解析报文中的数据,看上位机需要下位机执行什么命令,例如你约定第一位为1时,表示下位机发送转速信息,然后下位机利用CanTrans发送,上位机又接受到并处理,并通过这种一问一答保持同步。这也是可以的,还是那句话:把你的上下位机的实现代码和你的上下位机的通信手段(协议)通盘考虑。如果是一问一答同步式,当然不需要缓冲了,但要支持异步各自独立运行提高效率,就需要缓冲机制。
牵牛老人
2013-01-05
知道答主
回答量:8
采纳率:0%
帮助的人:8.4万
展开全部
可以这样考虑,总体分为:通讯协议,数据收发,数据处理,数据显示,通信协议就是你的CAN协议了,什么CRC校验啊,奇偶校验啊,几个停止位啊什么的。数据收发就是你使用的收发方式,开发过程中可借助串口助手。数据处理,就是对原始接收到得数据进行整理分类。数据显示,就看你用什么来显示了,列表,编辑框,图表等等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式