linux 串口自动登录,在Linux上自动执行串口通讯

Kermit是一个串行通信应用程序,如minicom,它有自己的脚本语言,我用它在嵌入式设备上进行一些自动上传.然而,它是相当有限和/或buggy,所以我终于转而使用python和pyserial.

无论何时处理texte模式,如AT命令设置或通过串行线对shell进行通话,它真的很强大.

如果我需要使用一些标准协议进行二进制传输,我通常会使用非交互模式的命令行工具,并从我的python脚本中产生它们.

这里是我构建的工具的一部分:等待一些输入,通过xmodem发送数据,发送一个命令到u-boot并使用kermit协议开始传输.我用它来自动闪烁和测试嵌入式设备.

class Parser :

def __init__(self,sport_name):

self.currentMsg = ''

if sport_name :

self.ser = serial.Serial(sport_name,115200)

def WaitFor(self,s,timeOut=None):

self.ser.timeout = timeOut

self.currentMsg = ''

while self.currentMsg.endswith(s) != True :

# should add a try catch here

c=self.ser.read()

if c != '' :

self.currentMsg += c

sys.stdout.write(c)

else :

print 'timeout waiting for ' + s

return False

return True

def XmodemSend(self,fname):

if not self.WaitFor('C',1) :

print 'RomBOOT did not launch xmodem transfer'

return

self.ser.flushInput()

self.ser.close()

call(["xmodem","-d",self.ser.port,"-T",fname])

self.ser.open()

def UbootLoad(self,fname):

self.ser.write('loadb 0x20000000\n')

if not self.WaitFor('bps...',1) :

print 'loadb command Failed'

sys.exit()

self.ser.flushInput()

self.ser.close()

retcode=call(['kermit','-y','kermit_init','-s',fname])

if retcode != 0 :

print 'error sending' + fname

sys.exit()

self.ser.open()

self.UbootCmd('echo\n')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值