一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种能够重定向于CAN总线的控制台设计方法与流程

2021-11-05 21:18:00 来源:中国专利 TAG:

一种能够重定向于can总线的控制台设计方法
技术领域
1.本发明属于计算机控制领域,涉及一种能够重定向于can总线的控制台设计方法。


背景技术:

2.控制台属于计算机控制系统中重要的调试与监控设备,通过控制台进行交互属于人机交互常用方法,可以帮助用户定位故障,监测系统状态,获取系统信息等。控制台设备可以实时打印系统运行过程中的信息,同时也可以响应用户输入的指令,并反馈用户需要的信息。
3.标准的控制台设备物理总线为串口,串口具有成本低,通讯简单,易于配置等优点,传输数据不受字节数的限制。标准操作系统底层完成了标准输出函数printf到fputc函数的映射,可以直接将调试信息通过串口打印到控制台输出,调试非常方便。但是对于不具有串口的设备,如串口被can总线所广泛取代的系统,由于标准操作系统底层并不支持其他接口,因此控制台设备不能使用,printf函数只能将调试信息打印到软件开发环境ide中,对于脱离软件开发环境的离线设备,则并不能根据软件过程信息进行调试,使得进行设备调试非常困难。


技术实现要素:

4.本发明解决的技术问题是:克服现有技术的不足,提出一种能够重定向于can总线的控制台设计方法。
5.本发明解决技术的方案是:
6.第一方面,本发明提供一种能够重定向于can总线的控制台设计方法,该方法的步骤包括:
7.步骤一,在控制台中进行以下设计:
8.s1,设计总线驱动层基类,所述总线驱动层基类即物理总线操作基类,包括三个纯虚函数:总线数据发送函数、总线数据接收函数以及总线控制函数;
9.s2,设计can总线设备继承类,所述can总线设备继承类继承总线驱动层基类,分别对总线数据发送函数、总线数据接收函数以及总线控制函数进行can总线下的实例化;
10.s3,设计打印输出类,将c标准库中的标准输出函数printf重定向到can总线设备继承类中的总线数据发送函数,进行控制台信息输出;
11.s4,设计系统监控类,在系统监控类中启动can总线接收监控任务,对总线数据接收函数接收的一帧完整数据进行解析,通过控制台函数进行数据匹配并应答;
12.s5,系统初始化时对控制台进行配置,设置波特率,打开can总线,将打印输出类与can总线进行绑定,将系统监控类和can总线进行绑定;
13.步骤二,设计控制台与上位机交互系统,所述交互系统分为显示部分和输出部分,显示部分和打印输出类进行交互,输出部分则和系统监控类进行交互。
14.所述s1中,总线数据发送函数形参为所要发送数据的地址,以及要发送数据的长
度;
15.总线数据接收函数形参为接收数据所存放的地址,返回值为接收数据的长度;
16.总线控制函数进行总线功能控制,包括打开总线、关闭总线以及总线的功能设置。
17.所述s2中,对总线数据发送函数、总线数据接收函数以及总线控制函数进行can总线下实例化的方式如下:
18.(1)对总线数据发送函数进行can总线下的实例化,实现can总线数据底层发送功能;
19.实例化时,设置can总线发送缓冲区buffers字节数为n,周期性查询缓冲区是否为空,如果不为空则将发送缓冲区所有数据依次发出;
20.(2)对总线数据接收函数进行can总线下的实例化,实现can总线数据底层接收;
21.实例化时,设置can总线底层数据接收缓冲区bufferr字节数为m,配置can总线中断,can总线收到数据时,将数据存放在接收缓冲区,在总线数据接收函数中创建并启动接收处理任务,在接收处理任务中周期性将接收缓冲区的数据取出并进行解析,收到hex值为0x0d时,则为一条完整指令,通过总线数据接收函数的消息队列将数据传送到系统上层;
22.(3)对总线控制函数进行can总线下的实例化,根据can总线控制器配置can设备操作方法,实现以下功能:

打开设备功能,将can总线控制器中寄存器的值进行初始化设置,打开can设备,配置中断;

关闭设备功能,将can总线控制器中所有寄存器的值还原为初始值,关闭can设备,关闭中断;

设置波特率,匹配通信速率。
23.所述s3的实现方式如下:
24.设计打印输出类;
25.打印输出类调用c标准库中的标准输出函数printf,标准输出函数printf调用c标准库中的字符输出到流函数fputc,在打印输出类中重构fputc函数,在fputc中将要打印的内容通过消息队列发送到步骤二实例化后的总线数据发送函数的can总线发送缓冲区buffers;
26.can总线设备继承类中的总线数据发送函数阻塞等待buffers中的数据,收到数据后在can总线发送任务中通过can总线进行输出,此时使用prinf进行控制台调试输出即可在can终端设备上打印出日志信息。
27.所述s4的实现方式如下:
28.(4.1)在系统监控类中启动can总线接收监控任务,所述can总线接收监控任务使用can总线设备继承类中的总线数据接收函数阻塞等待can总线接收到的数据;
29.(4.2)当总线数据接收函数收到一帧数据时,can总线接收监控任务对最后一个字节进行判断,如果最后一个字节为非回车字符,则这一帧数据接收错误,直接通过can总线输出错误提示;如果最后一个字节为回车符“\n”,则将收到的帧依据空格字符“\t”进行拆分,将拆分后的字符放入临时缓冲区bufftemp;
30.(4.3)can总线接收监控任务根据临时缓冲区bufftemp中的数据计算所请求命令的字节数count,将字节数count以及临时缓冲区bufftemp的首地址传入到控制台函数中;
31.(4.4)控制台函数对指令进行匹配并应答。
32.所述步骤(4.4)的实现方式如下:控制台函数的两个形参分别为整型变量参数个数和字符型二级指针变量参数列表,通过整型变量参数个数以及每个参数的字符串进行匹
配,全部匹配成功后,进行应答,应答时控制台函数调用信息显示函数,信息显示函数使用总线数据发送函数将信息进行打印输出。
33.所述步骤二中,
34.显示部分将所有can数据帧拼成一个can数据包,并将所有的字节转换成ascii码进行显示;
35.输出部分将用户输入的ascii码转换成16进制,以最多每包8个字节进行数据分包,每一包数据依次发送到can总线,最后一包数据小于等于8个字节,其他包数据均为8个字节。
36.输出部分将用户输入的ascii码转换成16进制,并进行处理后输出,所述用户输入的ascii码包括空格\n和回车\r。
37.第二方面,本发明提供一种终端设备,包括:
38.存储器,用于存储至少一个处理器所执行的指令;
39.处理器,用于执行存储器中存储的指令实现第一方面所述的方法。
40.第三方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行第一方面所述的方法。
41.本发明与现有技术相比的有益效果是:
42.本发明提供了一种可重定向于can总线的控制台设计方法,在不具有串口的系统中可以通过can总线进行控制台交互。同时将c标准库的printf函数重定向到can总线,将基于串口控制台调试设备的代码移植到基于can总线控制台调试设备的环境下,可以在不修改底层代码的情况下将原有应用程序中的系统打印信息全部打印到can总线。
附图说明
43.图1为一种可重定向于can总线的控制台设计方法流程图;
44.图2为上位机和控制台通过can总线连接图。
具体实施方式
45.下面结合附图对本发明作进一步阐述。
46.如图1所示,本发明具体实施步骤如下:
47.s1:在控制台中实现一个总线驱动层基类,即物理总线操作的基类base_device,base_device包括三个总线操作的纯虚函数:总线数据发送函数datasend,总线数据接收函数datarecv以及总线控制函数ioctrl。总线驱动层基类的函数都是纯虚函数,不需要对函数进行实例化。
48.(1)总线数据发送函数datasend,此函数形参为所要发送数据的地址,以及要发送数据的长度;
49.(2)总线数据接收函数datarecv,此函数形参为收到数据所存放的地址,返回值为收到数据的长度(单位为字节);
50.(3)总线控制函数ioctrl,总线控制函数进行总线功能控制,包括打开总线,关闭总线,总线的功能设置。
51.s2:在控制台中设计can总线设备继承类,该继承类继承s1所设计的总线驱动层基类base_device,can总线设备继承类设置为dev_cann,下标n标识第几个can设备,对s1中总线数据发送函数datasend、总线数据接收函数datarecv、总线控制函数ioctrl分别进行can总线下的实例化。
52.(1)对总线数据发送函数datasend进行can总线的实例化,实现can总线数据底层发送功能,设置can总线发送缓冲区buffers字节数为n,底层发送机制为周期性查询缓冲区是否为空,如果不为空则将缓冲区所有数据依次写入到can总线寄存器中发送寄存器(由于can总线限制,每次写入不大于8个字节),对can总线寄存器进行进行发送使能,进行数据发送。
53.(2)对总线数据接收函数datarecv进行can总线的实例化,实现can总线数据底层接收,设置底层数据接收缓冲区bufferr字节数为m,配置can总线中断,can总线收到数据时,取出can总线寄存器中接收寄存器中的数据,并存放在接收缓冲区,在接收任务函数中启动接收处理任务,在任务中周期性将接收缓冲区的数据取出并进行解析,收到hex值为0x0d时(对应字符为\n),则为一条完整指令,通过datarecv函数的消息队列将数据传送到系统上层。
54.(3)对总线控制函数ioctrl进行can总线的实例化,根据can总线控制器配置can设备操作方法,实现以下功能

打开设备功能,将can总线控制器中所有寄存器的值进行初始化设置,打开can设备,配置中断。

关闭设备功能,对can总线控制器中所有寄存器的值还原为初始值,关闭can设备,关闭中断。

设置波特率,匹配通信速率。
55.s3:在控制台中设计打印输出类。将c标准库中的标准输出函数prinf重定向到s2中can总线设备继承类中总线数据发送函数datasend进行控制台信息输出。
56.打印输出类调用c标准库中的标准输出函数printf,标准输出函数printf调用c标准库中的fputc函数,在打印输出类中重构c标准库中fputc函数,在fputc中将要打印的内容通过消息队列发送到步骤二实例化后的总线数据发送函数的can总线发送缓冲区buffers;
57.can总线设备继承类中的总线数据发送函数阻塞等待buffers中的数据,收到数据后在can总线发送任务中can总线进行输出,使用prinf进行控制台调试输出即可在can终端设备上打印出日志信息。
58.s4:在控制台中设计系统监控类,对s2中can总线设备继承类中总线数据接收函数datarecv接收到的数据进行解析。
59.(1)在系统监控类中启动can总线接收监控任务,此任务使用can总线设备继承类中的数据接收函数datarecv阻塞等待can总线接收到的数据。
60.(2)当收到一帧数据时,判断最后一个字节,如果最后一个字节为非回车字符(“\n”),则这一帧数据接收错误,直接通过can总线输出错误提示。
61.(3)如果最后一个字节为回车字符(“\n”),则将收到的帧进行拆分,拆分依据为空格字符(“\t”),将分割后的字符放入临时缓冲区bufftemp。
62.(4)根据临时缓冲区bufftemp中的数据计算所请求命令的字节数count。将字节数count以及临时缓冲区bufftemp的首地址传入到控制台函数console()。
63.(5)控制台函数console()对指令进行匹配并应答。此函数的两个形参分别为整型
变量参数个数argc和参数列表argv,对应到(4)中的实例分别为字节数count和临时缓冲区bufftemp,通过变量个数以及相应参数的字符串进行匹配,并调用对应的显示函数。例如获取系统信息,参数个数设计为3,参数的内容分别为“get
““
system”“info”,分别对应匹配成功后,调用系统信息显示函数displayinfo(),displayinfo()函数使用总线数据发送函数datasend将系统的信息进行打印输出。
64.s5:系统初始化时,对控制台参数进行配置,将总线类型配置为can总线,配置总线的端口号(具有多路can控制器则有多路端口)。使用s2中的总线控制函数ioctrl配置所使用的波特率(支持125k,250k,400k,500k,800k,1m)并打开can总线,can总线打开成功后,s3中设计的打印输出类和所配置的总线进行绑定,此时系统中使用printf打印通过控制台输出。can总线和s4中设计的系统监控类进行绑定,此时系统等待接收控制台指令。
65.s6:在上位机中实现控制台与上位机交互系统设计,分为上位机显示部分和上位机输出部分。上位机显示部分和s3中系统打印类进行交互,上位机输出部分则和s4系统交互类进行交互。
66.(1)上位机显示部分将每一个can数据帧(最多8个字节)拼成一个can数据包,并将所有的字节转换成ascii码进行显示。
67.(2)上位机输出部分将用户输入的ascii码转换成16进制(包括空格\n,回车\r),以最多每包8个字节进行数据分包(can总线每一包最多8个字节),每一包数据依次发送到can总线,最后一包数据小于等于8个字节,其他包数据均为8个字节。
68.图2为上位机和控制台通过can总线连接图。
69.本发明提供了一种可重定向于can总线的控制台设计方法,使用方式简单,在不具有串口的系统中可以通过can总线进行控制台交互。同时将c标准库的printf函数重定向到can总线,将基于串口调试设备的代码移植到基于can总线调试设备的环境下,可以在不修改底层代码的情况下将原有应用程序中的系统打印信息全部打印到can总线。基于can总线的控制台和基于串口控制台具有完全相同的功能,本发明属于对标准操作系统底层的功能扩展,提高了具有can总线而不具备串口的设备调试效率。
70.本发明提供一种终端设备,包括:存储器,用于存储至少一个处理器所执行的指令;处理器,用于执行存储器中存储的指令实现图1所示的方法。
71.本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行图1所示的方法。
72.本发明说明书中未详细描述的内容为本领域技术人员公知技术。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献