使用需要下载dll,下载方式在最下面
在使用capl的过程中,需要调用串口和ECU进行通讯,但是只找到了RS232的通讯方式(也可能我找的不仔细)。然后为了提高工作效率,自己编写了调用串口(RS232,TTL…),具体的可以自己去实践
同时,有时候需要调用ADB指令来完成部分操作,所以增加了控制CMD的函数(capl有自带函数,但是我没仔细研究,不知道能不能获取返回值,所以就自己写了)。但是实际使用中发现,每次调用此函数,都等于重新开启cmd窗口发送命令,如果有了解C调用cmd可以连续发送的,可以联系我,我进行更改。然后此项导致的问题我下面再说。
函数介绍
1:调用串口的指令代码
char hahha[10000];//此项是返回读取的值,最大100000
char writ[1000]="ps";
char writ1[1000]="ifcongig";//要发送的命令
write("serialPortOpen %d", serialPortOpen(19)); //打开串口,函数返回值0代表成功,其他值失败,下同。参数代表的对应的端口号
testWaitForTimeout(1000);//每次发送完毕,建议等待一段时间,我等的比较久,下同
write("serialPortConfigure%d",serialPortConfigure(115200, 8, 1, 0)); //设置串口信息,115200波特率, 8数据位(5-8),1停止位(1:1个,2:2个,3:1.5个),0校验位(0:NOPARITY,1:ODDPARITY,2:EVENPARITY,3:MARKPARITY,4:SPACEPARITY)
testWaitForTimeout(1000);//每次发送完毕,建议等待一段时间,我等的比较久,下同
write("serialPortSend %d %s", serialPortSend(writ1),writ1);//将定义的命令进行发送,参数是字符串数组
testWaitForTimeout(1000);
write("serialPortRead %d", serialPortRead(hahha)); //读取返回值,参数是字符串书组,建议设定长度要大一点,不然可能会崩溃。。另外因为我们的测试需求,read的数据会从上一次读取数据开始,所以建议执行几次send,就要read一次
write("%s",hahha); //将读取到的值进行打印
testWaitForTimeout(1000);
write("serialPortSend %d %s", serialPortSend(writ),writ);
testWaitForTimeout(1000);
write("serialPortRead %d", serialPortRead(hahha));
testWaitForTimeout(1000);
write("%s",hahha);
write("serialPortClose %d", serialPortClose());//每次执行完测试后,必须要关闭串口,不然导致下次打不开,只能将工程关闭后重新打开。应该是canoe内部的设定
这个基本没啥问题
2:调用cmd指令
char readStr[100000];//获取读取的值
cmdSend("ls",1); //发送cmd。参数1:char数组,发送的值;参数2:发送选择,0代表直接发送参数1,1代表发送adb shell "参数1",所以如果有引号,记得用单引号
testWaitForTimeout(1000);
cmdRead(readStr);//读取发送后的返回值
write("%s",readStr);//打印返回值
这个函数有个问题注意
1:每次发送等于新建cmd(比如说,你发送一个“cd …”,应该在上一级目录,但实际下次发命令,还是在原目录,如果要调用记得加绝对路径)
2:基于1的原因,发送adb shell是没办法进入linux系统的
3:基于2,可以发送adb shell “参数” ,例如:cmdSend(“ls”,1);或者cmdSend(“adb shell \“ls\””,0);
4:基于1,3。没办法直接运行脚本,因为adb shell直接退出
5:基于4,设计了一个方案,先建立一个窗口,adb shell进去,将一个.sh文件运行起来,来检测某一个文件,当文件有数据就将读取到的数据进行运行。下面给一个shell参考,有更好的办法可以联系我的邮箱liu_xiaoshuai@foxmail.com
####################################################
# File Name: MonitoringOperation.sh
# Author: 劉小帅
# mail: https://blog.csdn.net/m0_56315547?type=blog
# Updated Time: 2023-11-02
#########################################################################
#!/bin/sh
echo "*********Running***********"
if [ ! -f '/data/xiaoshuai/monitor.txt' ]
then
echo "" > /data/xiaoshuai/monitor.txt
fi
while [ 1 == 1 ]; do
readFile=$(cat /data/xiaoshuai/monitor.txt)
if [ -z $readFile ]; then
echo "File is empty"
else
echo $readFile
eval $readFile > /data/xiaoshuai/OutputResults.txt
cat /data/xiaoshuai/OutputResults.txt
echo "" > /data/xiaoshuai/monitor.txt
fi
sleep 1
done
exit 0
当上面的脚本运行起来后,可以cmdSend("adb shell "echo ‘/data/liunx_test’ > /data/xiaoshuai/monitor.txt “”,0)
有更新,见链接更新
对比与现在版本,可以保持在当前目录,操作方式同cmd直接操作
dll百度网盘下载地址
版本:V1.0 初版
链接:https://pan.baidu.com/s/1si68qRuNNsVkgfcdyT0WYw?pwd=ygyt
提取码:ygyt
–来自百度网盘超级会员V6的分享