MATLAB造轮子1_Str2Hex(脚本方式)

0 前言

造轮子,最初应该来源于程序员圈子,可能很多非IT行业的人不是很了解,这里先简单说明一下。

轮子,是车的基础零部件。一般写程序的时候,轮子就是别人写好的工具,库,或者基础代码。造轮子,就是去实现这些基础的东西。

MATLAB造轮子1_Str2Hex(脚本方式)_第1张图片

(图片来源:网络)

做一个工程项目时,为了效率和项目的整体进度计划,一般能使用成熟的、现成的,就会尽量使用。比如软件开发时,已经有大量成熟的工具、库函数,程序员一般都会优先使用;主机厂开发一款新车型,已经有成熟的零部件供应商,也会优先选择这些供应商的零部件...... 一来,成熟的工具、零部件,经过了大量验证,可靠性高;而且有现成的,也不用自己花大量时间去验证测试了。

但想使用成熟的、现成的工具或者基础代码等,一般都是需要付费的。而且,可能付费了之后,工具还不是开源的,或者给你个黑盒的零部件,你只能使用,却不知道里面的具体实现是什么样的。

所以,网络上就有了重复造轮子这个说法,自己来实现已有的、现成的功能。

虽然,最后实现出来的功能,可能比不上已有的,但造轮子的过程,你自己可以得到锻炼。而且,你想要什么样的轮子就造什么样的轮子,因为别人的轮子不一定适合自己的啊。

 

MATLAB造轮子1_Str2Hex(脚本方式)_第2张图片

(图片来源:网络)

接下来,就简单聊聊我自己造的一个简单的轮子:Str2Hex。

 

1 问题来源

Str2Hex的这个想法,主要来源于工作中。

汽车上,有个唯一的“身份证号”:车架号。

官方术语:车辆识别码。

英文名称:Vehicle Identification Number,简称"VIN"。

MATLAB造轮子1_Str2Hex(脚本方式)_第3张图片

(图片来源:网络)

这是一组由英文和数字组成的17位号码。跟身份证号码一样,车架号是唯一的,一辆车对应一个唯一的车架号。

那车架号对我们有什么作用? 比如买二手车时,我们可以查询车子是否是报废车,汽车的配置是否真实,发动机、变速箱等是否是原装的等等。

车架号,一般位于前挡风玻璃左下角,还有的在车子的门铰链柱,车架上也能看到。还有,在汽车的主要ECU控制器上,使用诊断仪设备也能读出来。

既然ECU控制器上能读出车架号,必然是要在出厂的时候或者4S店里能写入的。一般是在下线检测时,使用电检设备,对各个ECU控制器写入一系列的数据,包括车架号。

写入这些数据的时候,一般需要先将字母和数字的组合(ASCII码),转换成一堆16进制数,来写入。电检设备或诊断仪,内部都已经集成了这个功能。但一般测试试验车时,没有这些设备的时候,就只能自己通过设备和代码写入了。

之前的常规操作是,找个ASCII码表,寻找A-Z字母和1-9数字的对应16进制数,然后一个个转换后,写到一个文件,通过CAN设备写入控制器。

 MATLAB造轮子1_Str2Hex(脚本方式)_第4张图片

(图片来源:网络)

偶尔一两次这么操作还好,我还可以忍受。但随着需要测试的车辆增多,另外除了车架号需要写入,还有一些其他的数据也要写入,比如车型名称等等。

让我一个个去对照ASCII码,我的内心是拒绝的,这太浪费时间了…….

 

2 解决过程

然后,我就想到,使用代码来实现ASCII码和16进制数的转换过程。

最初的想法是,上网找找有没有现成的函数,来实现。可是上网找了一圈没找到MATLAB的函数,最后没办法,只能自己来写这个函数了。

其实功能很简单,用到的函数也就2个:

abs()dec2hex();

首先,先简单测试一下上面这两个函数,是否能实现我想要的功能。

MATLAB造轮子1_Str2Hex(脚本方式)_第5张图片

 

可以看到,abs()将相应的字符转换成了10进制数,然后dec2hex()将10进制数转换成了16进制数,而且还能将一串字符串统一转换,这样还是比较方便的。

虽然最后结果是对的,但最终输出的是个5*2的char数组,不好复制拷贝。那就再加点内容,输出可以直接拷贝、满足自己格式要求的,自己造轮子,想输出什么格式就给你输出什么格式。

MATLAB造轮子1_Str2Hex(脚本方式)_第6张图片

 

如上图,将转换的功能,写成了一个函数。函数里,通过一个for循环,对每个字符进行提取,中间加上逗号,然后使用strcat函数串联起来,最终输出一串可以直接用的代码。

另外,有些地方可能需要在16进制数前加上0x,那也可以通过以上代码,简单修改一下就能实现。感兴趣的朋友,可以去试试。

 

3 总结

关于这个简单的小功能,其实实现起来一点都不难,相关的函数也都比较基础,熟悉MATLAB的朋友应该都知道。或者上网搜一下关键词,也都能找到。

但如果网上没有搜到你想要的现成的函数、模块时,怎么办呢?我觉得可以这样来,先列出你的整体需求,然后一步步分解需求,一个个用简单的功能去实现。

另外,这个Str2Hex的功能,虽然用脚本已经实现了,但感觉还是差了点什么。如果有个人机交互界面,那就更好了。

这个需求,好像也不是很复杂,那就按照客户要求也加上吧。 

限于时间和篇幅,我们下次再讲~


另外,Str2Hex_(脚本方式) 源码已上传网盘,需要的朋友可以点击以下链接查看
Str2Hex脚本方式    提取码: 9mwk

更多MATLAB造轮子等相关文章,可扫码关注:汽车工程师日常 (qcgcsrc)

MATLAB造轮子1_Str2Hex(脚本方式)_第7张图片


附录:

如果对车架号等内容有更多想了解的,可以查看以下链接 ,查看更多信息

https://www.douban.com/group/topic/127367158/

另外,还有一个车架号查询车子信息的网址,感兴趣的朋友可以查查自己的车架号 

http://www.17vin.com/

你可能感兴趣的:(MATLAB造轮子,MATLAB,M脚本,汽车,造轮子)