树莓派——4G网卡华为ME909s-821 4G上网及开机自启动(2)

树莓派——4G网卡华为ME909s-821 4G上网及开机自启动(2)


  上一章讲述了如何配置启用华为ME909s-821 4G模块,本章讲解如何配置自动启动脚本.


编辑脚本文件

在工作空间创建脚本文件,脚本文件记录需要执行的命令
创建脚本文件

vim setup.py

将下述内容写入脚本文件,在用户pihome下创建文本文件,记录ME909s模块使用状况。下面内容主要调用sudo wvdial hw1命令控制ME909s模块拨号,并将运行时输出的结果保存到日志文件/home/pi/wvdial_log.txt中。

#!/bin/sh

echo "-------------------------------" >> /home/pi/wvdial_log.txt
date >> /home/pi/wvdial_log.txt #

HW_OK=0
TIM=1

while [[ $HW_OK -ne 1  &&  $TIM -le 10 ]]
do
echo $TIM >>  /home/pi/wvdial_log.txt
lsusb >> /home/pi/wvdial_log.txt
if sudo wvdial hw1 >> /home/pi/wvdial_log.txt 2>&1
then
	HW_OK=1
	echo "ok" >> /home/pi/wvdial_log.txt
else
	echo "false" >> /home/pi/wvdial_log.txt
fi
TIM=$(($TIM+1))
sleep 10
done

注意事项

  1. 日志文件记录程序运行情况,使用echo命令输出到指定文件时需要使用绝对路径,例如/home/pi/wvdial_log.txt
  2. lsusb命令需要多次执行,检测ME909s模块是否被树莓派识别。测试中发现如果lsusb命令没有运行,ME909s模块的状态可能不会更新(如果开始没有识别到,后面不适用lsusb命令,也不会识别到模块)。
  3. sudo wvdial hw1需要使用sudo权限。
  4. USB串口需要有权限获取,若串口权限不够不能执行。
  5. HW_OK=0变量定义赋值时=两边不能有空格。
  6. 注意while循环的使用方式。
  7. 变量自己加一需要以这样的形式:TIM=$(($TIM+1))
  8. sudo wvdial hw1命令执行时输出到屏幕的内容有标准输出,也有标准出错,若想将全部信息重定向输出到日志文件(wvdial_log.txt),则需要使用这种形式:sudo wvdial hw1 >> /home/pi/wvdial_log.txt 2>&1
  9. >>>>&&><注意重定向输出符号的区别。

修改脚本权限

修改脚本的运行权限,使其满足自启动的权限要求。

sudo chmod 777 setup.sh

修改自动启动脚本

  设置树莓派开机自启动的方法有三种(百度上搜到的),在这里通过修改/etc/rc.local文件来使得代码自启动。

修改/etc/rc.local文件

sudo vim /etc/rc.local

在文件中添加下述内容

扫描二维码关注公众号,回复: 3799946 查看本文章
/home/pi/setup.sh start &

保存退出。

  
注意事项:

  1. 调用脚本文的路径必须是绝对路径。
  2. 使用&创建一个线程接管、运行脚本文件
  3. 必须使用&,启用另一个线程接管、运行需要自动启动的脚本。在测试中发现,调用sudo wvdial hw1命令后,若拨号成功,则脚本会一直卡在sudo wvdial hw1的状态,没有状态输出,也没有其他提示表明函数成功执行,类似于成功执行的话就进入while(1)。这个时候会导致脚本文件/etc/rc.local中在/home/pi/setup.sh start &语句后面的所有语句没有办法执行,因此需要使用&来重新开启一个线程接管该脚本。
  4. ME909s模块可能自身初始化问题,导致自动启动脚本卡死,此时ME909s模块会发送以下内容。此时ME909s模块并没有拨号成功,但是也会使得sudo wvdial hw1命令进入死循环,不能再次重新拨号。因此在上电一段时间后,若模块还没有连接上网,可以将ME909s模块重新插拔即可。
--> Sending: ATDT*99#
--> Waiting for carrier.
--> Timed out while dialing.  Trying again.
--> Sending: ATDT*99#
--> Waiting for carrier.
--> Timed out while dialing.  Trying again.

OK,到这里就结束啦,可能大家会遇到不一样的坑,大家尽情的跳坑吧~~~

猜你喜欢

转载自blog.csdn.net/qq_16775293/article/details/83350266