我知道一些Perl和一些python.我以前没有使用调制解调器通信的经验(使用AT命令). Perl拥有Device :: Modem,尽管它只是测试版,而且Perl似乎是一个不错的选择,因为我喜欢它的文本提取和争吵能力.但是,如果我需要学习如何控制调制解调器和编写/调试脚本,这将增加我的任务时间.
用脚本交互控制控制台应用程序(如minicom)是否可能/常见?如果没有,有什么好的资源让我学习如何使用调制解调器AT命令?还有那里有另一个资源可以简化我的事情?
解决方法 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')总结
以上是内存溢出为你收集整理的在Linux上自动执行串口通讯全部内容,希望文章能够帮你解决在Linux上自动执行串口通讯所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)