CN109814816B - 在can总线上增加打印日志的系统及方法 - Google Patents
在can总线上增加打印日志的系统及方法 Download PDFInfo
- Publication number
- CN109814816B CN109814816B CN201910077820.3A CN201910077820A CN109814816B CN 109814816 B CN109814816 B CN 109814816B CN 201910077820 A CN201910077820 A CN 201910077820A CN 109814816 B CN109814816 B CN 109814816B
- Authority
- CN
- China
- Prior art keywords
- data
- log
- buffer area
- ring buffer
- bus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000005540 biological transmission Effects 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 abstract description 7
- 230000003139 buffering effect Effects 0.000 abstract description 2
- 101000595182 Homo sapiens Podocan Proteins 0.000 description 2
- 102100036036 Podocan Human genes 0.000 description 2
- 241000976924 Inca Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了在CAN总线上增加打印日志的系统及方法,其中,系统包括电子控制单元和PC端,所述电子控制单元通过CAN总线与PC端通讯连接,所述PC端包括显示器、输入设备和主机,主机内配置有CAN数据卡。本发明采用打印日志缓冲,异步发送CAN数据的方式,可以在中断中增加打印日志,也可以在系统初始化的早期增加打印日志,打印日志采用异步的方式对软件的执行影响也很小。
Description
技术领域
本发明涉及嵌入式系统技术领域,具体为在CAN总线上增加打印日志的系统及方法。
背景技术
在嵌入式系统中,打印日志是非常重要的调试手段,常见有printf重定向到串口(一般最高通信波特率是115200bps,速度较慢)、重定向到网口(telnet终端,需要配有网口)和显示器屏幕终端(嵌入式系统一般不配置显示器)。
对于汽车和采用CAN总线的电动自行车的电子控制单元,CAN往往是能引出的通信口,对于软件标定调试,有Etas公司的Inca和 Vector 公司的CANape基于CCP(CAN总线标定协议)和XCP(通用校准协议)的工具,他们都比较复杂,也比较昂贵。
发明内容
本发明的目的在于提供在CAN总线上增加打印日志的系统及方法,以解决上述背景技术中提出的问题。本发明采用在系统预留一块内存作为打印日志的缓冲区,程序的打印日志数据先放入缓冲区,系统会定时从缓冲区读取数据,进行编码。PC端有一个打印日志的显示软件,会对数据进行解码和显示。
为实现上述目的,本发明提供如下技术方案:
在CAN总线上增加打印日志的系统,包括电子控制单元和PC端,所述电子控制单元通过CAN总线与PC端通讯连接,所述PC端包括显示器、输入设备和主机,主机内配置有CAN数据卡。
作为本发明进一步的方案:所述PC端用于支持CAN数据接收的硬件采用USB CAN、PCAN或者Value CAN。
在CAN总线上增加打印日志的方法,包括如下步骤:
S1、在需要CAN上打印日志的地方,调用Log_Print变参函数,将格式化的数据写入电子控制单元内的环形缓冲区;
S2、通过CAN发送检查环形缓冲区的数据内容,如果数据的长度大于等于标准CAN帧的最大字节数8字节或者有换行符‘\n’,就会马上发送CAN报文;
S3、PC端通过定时器查询是否有特定的打印日志帧,如果有,读取数据,然后,放入字符串缓冲区,如果碰到字节是换行符‘\n’,则马上在PC端的显示器上显示整个字符串,最后,清空缓冲区。
作为本发明进一步的方案:所述步骤S1的具体步骤为:
在电子控制单元内预留一块内存作为打印日志的环形缓冲区,调用Log_Print变参函数,变参函数的内部实现字符串的格式化命令,检查电子控制单元内的环形缓冲区是否已经满了,如果环形缓冲区已满,步骤结束;如果环形缓冲区未满,把格式化数据写入环形缓冲区,步骤结束。
作为本发明进一步的方案:所述步骤S2的具体步骤为:
通过CAN发送检查环形缓冲区内是否有数据,如果没有数据,步骤结束;如果有数据,读取环形缓冲区一个字节数据,如果读取到的数据有换行符‘\n’,马上发送CAN报文;如果数据没有换行符‘\n’,但数据的长度大于等于标准CAN帧的最大字节数8字节,马上发送CAN报文;如果数据没有换行符‘\n’,数据的长度也小于标准CAN帧的最大字节数,则继续检查环形缓冲区内是否有数据。
作为本发明进一步的方案:所述步骤S3的具体步骤为:
通过PC端接收CAN报文的CAN数据,PC端通过定时器对CAN数据进行查询,查看是否有特定的打印日志帧,如果没有特定的打印日志帧,步骤结束;如果有特定的打印日志帧,提取CAN数据内容,将CAN数据内容加入到PC端的字符串缓冲区,并执行下一步,接着,查询字符串是否以换行符‘\n’结尾,如果字符串没有以换行符‘\n’结尾,步骤结束;如果字符串是以换行符‘\n’结尾,把字符串加入到显示列表,通过CAN数据卡,由显示器显示,接着,清空字符串缓冲区,步骤结束。
作为本发明进一步的方案:所述步骤S2中,CAN发送采用独立的线程或者定时循环的方式对环形缓冲区的数据内容进行检查。
作为本发明进一步的方案:所述步骤S2中,CAN报文的ID默认设置为0x99。
与现有技术相比,本发明的有益效果是:本发明采用打印日志缓冲,异步发送CAN数据的方式,可以在中断中增加打印日志,也可以在系统初始化的早期(只要内存和堆栈初始化完毕)增加打印日志,打印日志采用异步的方式对软件的执行影响也很小。
本发明采用定义一个特定的CAN ID的方式,区别于其他的CAN帧,不对有现有的数据通讯产生影响。打印日志的CAN帧波特率也不限制,电子控制单元和PC端的波特率保持一致即可。
本发明不依赖特定的处理器,只要支持CAN通讯的系统都可以添加这个功能。
附图说明
图1为在CAN总线上增加打印日志的系统的结构示意图;
图2为在CAN总线上增加打印日志的方法中步骤S1的流程示意图;
图3为在CAN总线上增加打印日志的方法中步骤S2的流程示意图;
图4为在CAN总线上增加打印日志的方法中步骤S3的流程示意图。
图中:1-电子控制单元,2-PC端。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1~4,本发明提供一种技术方案:在CAN总线上增加打印日志的系统,包括电子控制单元1和PC端2,所述电子控制单元1通过CAN总线与PC端2通讯连接,所述PC端2包括显示器、输入设备和主机,主机内配置有CAN数据卡。
其中,所述PC端2用于支持CAN数据接收的硬件采用USB CAN、PCAN或者Value CAN。
在CAN总线上增加打印日志的方法,包括如下步骤:
S1、在需要CAN上打印日志的地方,调用Log_Print变参函数,将格式化的数据写入电子控制单元1内的环形缓冲区;
S2、通过CAN发送检查环形缓冲区的数据内容,如果数据的长度大于等于标准CAN帧的最大字节数8字节或者有换行符‘\n’,就会马上发送CAN报文;
S3、PC端2通过定时器查询是否有特定的打印日志帧,如果有,读取数据,然后,放入字符串缓冲区,如果碰到字节是换行符‘\n’,则马上在PC端2的显示器上显示整个字符串,最后,清空缓冲区。
其中,所述步骤S1的具体步骤为:在电子控制单元1内预留一块内存作为打印日志的环形缓冲区,调用Log_Print变参函数,变参函数的内部实现字符串的格式化命令,检查电子控制单元1内的环形缓冲区是否已经满了,如果环形缓冲区已满,步骤结束;如果环形缓冲区未满,把格式化数据写入环形缓冲区,步骤结束。
所述步骤S2的具体步骤为:通过CAN发送检查环形缓冲区内是否有数据,如果没有数据,步骤结束;如果有数据,读取环形缓冲区一个字节数据,如果读取到的数据有换行符‘\n’,马上发送CAN报文;如果数据没有换行符‘\n’,但数据的长度大于等于标准CAN帧的最大字节数8字节,马上发送CAN报文;如果数据没有换行符‘\n’,数据的长度也小于标准CAN帧的最大字节数,则继续检查环形缓冲区内是否有数据。
所述步骤S2中,CAN发送采用独立的线程或者定时循环的方式对环形缓冲区的数据内容进行检查。所述步骤S2中,CAN报文的ID默认设置为0x99。CAN报文的ID也可以修改成为不冲突的CAN ID。只要电子控制单元和PC端的波特率保持一致即可。
所述步骤S3的具体步骤为:通过PC端2接收CAN报文的CAN数据,PC端2通过定时器对CAN数据进行查询,查看是否有特定的打印日志帧,如果没有特定的打印日志帧,步骤结束;如果有特定的打印日志帧,提取CAN数据内容,将CAN数据内容加入到PC端2的字符串缓冲区,并执行下一步,接着,查询字符串是否以换行符‘\n’结尾,如果字符串没有以换行符‘\n’结尾,步骤结束;如果字符串是以换行符‘\n’结尾,把字符串加入到显示列表,通过CAN数据卡,由显示器显示,接着,清空字符串缓冲区,步骤结束。
本发明的工作原理是:有些电子控制单元只有CAN总线接口,软件调试过程中往往需要输出打印日志获得程序执行流程,变量数值等信息。本发明是在CAN总线上增加打印日志的方法,本发明采用异步的方式将打印日志数据和CAN发送分开,可以在中断调用,底层硬件初始化中通过CAN输出打印日志。打印日志的显示需要一个配置了CAN数据卡的PC端,将打印日志进行解析和显示。
本发明的系统可以加在任何带CAN收发功能的嵌入式系统中,不增加任何硬件成本。嵌入式系统需要实现的代码简单。PC端可以使用任何支持CAN数据收发的硬件,可以使用多种开发语言开发。
系统也可以设置打印日志开关,在需要的时候开启打印日志。同时因为CAN的高速率,可以支持大量的打印日志。在只有CAN接口的场合中,是一个简单有效的调试手段。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (6)
1.在CAN总线上增加打印日志的方法,其特征在于:包括如下步骤:
S1、在需要CAN上打印日志的地方,调用Log_Print变参函数,将格式化的数据写入电子控制单元内的环形缓冲区;
S2、通过CAN发送检查环形缓冲区的数据内容,如果数据的长度大于等于标准CAN帧的最大字节数8字节或者有换行符‘\n’,就会马上发送CAN报文;
S3、PC端通过定时器查询是否有特定的打印日志帧,如果有,读取数据,然后,放入字符串缓冲区,如果碰到字节是换行符‘\n’,则马上在PC端的显示器上显示整个字符串,最后,清空缓冲区。
2.根据权利要求1所述的在CAN总线上增加打印日志的方法,其特征在于:所述步骤S1的具体步骤为:
在电子控制单元内预留一块内存作为打印日志的环形缓冲区,调用Log_Print变参函数,变参函数的内部实现字符串的格式化命令,检查电子控制单元内的环形缓冲区是否已经满了,如果环形缓冲区已满,步骤结束;如果环形缓冲区未满,把格式化数据写入环形缓冲区,步骤结束。
3.根据权利要求1所述的在CAN总线上增加打印日志的方法,其特征在于:所述步骤S2的具体步骤为:
通过CAN发送检查环形缓冲区内是否有数据,如果没有数据,步骤结束;如果有数据,读取环形缓冲区一个字节数据,如果读取到的数据有换行符‘\n’,马上发送CAN报文;如果数据没有换行符‘\n’,但数据的长度大于等于标准CAN帧的最大字节数8字节,马上发送CAN报文;如果数据没有换行符‘\n’,数据的长度也小于标准CAN帧的最大字节数,则继续检查环形缓冲区内是否有数据。
4.根据权利要求1所述的在CAN总线上增加打印日志的方法,其特征在于:所述步骤S3的具体步骤为:通过PC端接收CAN报文的CAN数据,PC端通过定时器对CAN数据进行查询,查看是否有特定的打印日志帧,如果没有特定的打印日志帧,步骤结束;如果有特定的打印日志帧,提取CAN数据内容,将CAN数据内容加入到PC端的字符串缓冲区,并执行下一步,接着,查询字符串是否以换行符‘\n’结尾,如果字符串没有以换行符‘\n’结尾,步骤结束;如果字符串是以换行符‘\n’结尾,把字符串加入到显示列表,通过CAN数据卡,由显示器显示,接着,清空字符串缓冲区,步骤结束。
5.根据权利要求1所述的在CAN总线上增加打印日志的方法,其特征在于:所述步骤S2中,CAN发送采用独立的线程或者定时循环的方式对环形缓冲区的数据内容进行检查。
6.根据权利要求1所述的在CAN总线上增加打印日志的方法,其特征在于:所述步骤S2中,CAN报文的ID默认设置为0x99。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910077820.3A CN109814816B (zh) | 2019-01-28 | 2019-01-28 | 在can总线上增加打印日志的系统及方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910077820.3A CN109814816B (zh) | 2019-01-28 | 2019-01-28 | 在can总线上增加打印日志的系统及方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN109814816A CN109814816A (zh) | 2019-05-28 |
| CN109814816B true CN109814816B (zh) | 2022-06-24 |
Family
ID=66605487
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201910077820.3A Active CN109814816B (zh) | 2019-01-28 | 2019-01-28 | 在can总线上增加打印日志的系统及方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN109814816B (zh) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112416797A (zh) * | 2020-12-02 | 2021-02-26 | 未来汽车科技(深圳)有限公司 | 嵌入式软件运行异常时自动报警及维持现场的方法及系统 |
| CN113608782B (zh) * | 2021-06-22 | 2023-08-01 | 天津津航计算技术研究所 | 一种能够重定向于can总线的控制台设计方法 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008046739A (ja) * | 2006-08-11 | 2008-02-28 | Fuji Xerox Co Ltd | 画像形成装置、情報処理装置、及びプログラム |
| CN101572641A (zh) * | 2009-05-26 | 2009-11-04 | 阴晓峰 | 基于can总线的控制器网络监控系统及监控方法 |
| CN202153743U (zh) * | 2011-07-19 | 2012-02-29 | 李超 | Can总线网络打印控制装置 |
| CN102608979A (zh) * | 2012-03-21 | 2012-07-25 | 山东省科学院自动化研究所 | Can总线调度分析及监控系统 |
-
2019
- 2019-01-28 CN CN201910077820.3A patent/CN109814816B/zh active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008046739A (ja) * | 2006-08-11 | 2008-02-28 | Fuji Xerox Co Ltd | 画像形成装置、情報処理装置、及びプログラム |
| CN101572641A (zh) * | 2009-05-26 | 2009-11-04 | 阴晓峰 | 基于can总线的控制器网络监控系统及监控方法 |
| CN202153743U (zh) * | 2011-07-19 | 2012-02-29 | 李超 | Can总线网络打印控制装置 |
| CN102608979A (zh) * | 2012-03-21 | 2012-07-25 | 山东省科学院自动化研究所 | Can总线调度分析及监控系统 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN109814816A (zh) | 2019-05-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5555377A (en) | System for selectively compressing data transferred in network in response to produced first output when network utilization exceeds first threshold and data length over limit | |
| CN102647320B (zh) | 适用于高速1553总线协议控制的集成电路 | |
| CN109814816B (zh) | 在can总线上增加打印日志的系统及方法 | |
| CN1322444C (zh) | 传输和处理命令与数据的方法 | |
| CN107301067B (zh) | 基于iap技术的北斗用户机远程升级系统及其升级方法 | |
| CN103378994A (zh) | 一种通信设备的测试方法及终端 | |
| US5742502A (en) | Method and apparatus for generating synchronous data transmissions in a device having a universal asynchronous receiver/transmitter | |
| CN114817114B (zh) | 一种mipi接口、及其控制方法、装置及介质 | |
| JPS6113846A (ja) | データフオーマツト検出装置 | |
| CN110018978B (zh) | 数据传输方法及系统 | |
| CN110048865B (zh) | 一种总线数据传输方法、装置、电子设备及存储介质 | |
| CN101436306B (zh) | 一种实现图像特效的方法、装置和视频显示卡 | |
| CN110795369A (zh) | 基于gpio管脚实现mido从机功能的方法及终端 | |
| CN213521896U (zh) | 一种应用于光模块的通信控制板 | |
| EP4116835B1 (en) | Spread spectrum clock negotiation method, and peripheral component interconnect express device and system | |
| CN101989250B (zh) | 一种串行通信的方法和系统 | |
| CN118939590A (zh) | 一种基于usb的通信系统、方法、电子设备及介质 | |
| CN118503184A (zh) | 一种串口扩展方法 | |
| CN115878061A (zh) | 显示信号传输方法及相关装置 | |
| WO2002009405A2 (en) | Universal serial bus datapump command interpreter | |
| CN210986125U (zh) | 一种嵌入式工控一体机 | |
| CN101989194A (zh) | 无线通讯模块二次开发方法 | |
| CN115623070A (zh) | Idl消息的处理方法、装置、电子设备、存储介质 | |
| CN119127751B (zh) | Dma控制器、芯片、根复合体及端点设备 | |
| CN116527488B (zh) | 用于在单及多主机系统中配置及管理物理装置的逻辑消息接口 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |