I.MX6 Android Linux shell MMPF0100 i2c 获取数据

简介: #!/system/bin/busybox ash # # I.MX6 Android Linux shell MMPF0100 i2c 获取数据 # 说明: # 本文主要记录通过shell脚本来获取MMPF0100的数据,更多的是为了更为 # 方便的获取到数据,在进行一些调试的时候能够更有效。
#!/system/bin/busybox ash

#
#          I.MX6 Android Linux shell MMPF0100 i2c 获取数据 
# 说明:
#     本文主要记录通过shell脚本来获取MMPF0100的数据,更多的是为了更为
# 方便的获取到数据,在进行一些调试的时候能够更有效。
#
#                                     2016-4-1 深圳 南山平山村 曾剑锋
#


# 检查参数个数
if [ $# -lt 3 ]; then
    echo "USAGE:"
    echo "    i2cData.sh <curPage> <firstAddress(hex)> <byteCount(hex)>"
    exit 1
fi

curPage=$1              # 从第几页开始获取
byteCount=$(($3))       # 一次获取多少个字节
firstAddress=$(($2))    # 获取字节的首地址

i2cBusNumber=1          # 采用哪个i2c总线
deviceAdress="0x08"     # i2c设备地址
pageRegAddress="0x7f"   # 存放页的寄存器地址

# 设置MMPF0100地址页
./i2cset -f -y $i2cBusNumber $deviceAdress $pageRegAddress $curPage 

# 显示一些参数
echo "   currentPage : $curPage"
echo "  firstAddress : $firstAddress"
echo "     byteCount : $byteCount"
echo "        i2cBus : /dev/dev-i2c$i2cBusNumber"
echo "  deviceAdress : $deviceAdress"
echo "pageRegAddress : $pageRegAddress"
echo 

# 显示行对应的数
busybox printf "      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F"
echo

# i是计数变量
i=$firstAddress
firstLine=true         # 用于判断第一行是否需要填充0
while [ $i -lt $(($byteCount+$firstAddress)) ]
do
    # 16个字节一行,换行并输出行号
    if [ $((i%16)) -eq 0 ];then
        busybox printf "\n0x%x0 " $((i/16))     
        firstLine=false
    else
        # 用于填充一行前面的0,更多的方便16进制查看数据
        if $firstLine ;then
            padZero=$((i%16))
            busybox printf "\n0x%x0 " $padZero
            
            # 循环填充数据
            j=0
            while [ $j -lt $padZero ]
            do
                busybox printf " 00" 
                j=$((j+1))
                
            done
            firstLine=false
        fi
    fi
    
    # 读取数据
    data=`./i2cget -f -y $i2cBusNumber $deviceAdress $i`
    busybox printf " %02x" $data
    
    i=$((i+1))
done

echo

# 输出结果:
#     root@android:/data/local # ./i2cData.sh 0 0x10 0x50                            
#        currentPage : 0
#       firstAddress : 16
#          byteCount : 80
#             i2cBus : /dev/dev-i2c1
#       deviceAdress : 0x08
#     pageRegAddress : 0x7f
#     
#           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
#     
#     0x10  00 00 3f 00 00 00 00 00 00 00 00 10 00 00 00 00
#     0x20  2b 1b 2b 0c c4 00 00 00 00 00 00 00 00 00 2b 1b
#     0x30  2b 0c c4 00 00 72 72 72 0c d4 00 00 2c 2c 2c 0c
#     0x40  e4 00 00 2c 2c 2c 0c e4 00 00 6f 6f 6f 0c f4 00
#     0x50  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
#     root@android:/data/local # 

 

目录
打赏
0
0
0
0
12
分享
相关文章
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
418 4
|
22天前
|
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
83 32
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
172 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
122 0
Linux 如何更改默认 Shell
如何使用 HBase Shell 进行数据的实时监控和备份?
如何使用 HBase Shell 进行数据的实时监控和备份?
如何使用 HBase Shell 进行数据的批量导入和导出?
如何使用 HBase Shell 进行数据的批量导入和导出?
292 5
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
118 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
Android经典面试题之Intent传递数据大小为什么限制是1M?
在 Android 中,使用 Intent 传递数据时存在约 1MB 的大小限制,这是由于 Binder 机制的事务缓冲区限制、Intent 的设计初衷以及内存消耗和性能问题所致。推荐使用文件存储、SharedPreferences、数据库存储或 ContentProvider 等方式传递大数据。
189 0
|
5月前
|
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
69 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等