- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试用 Python 编写代码来自动执行我通常手动完成的工作。这项工作只是修改部分 C 代码,然后将以下命令插入终端,为每个 Z1 Zolertia 微尘构建、编译和引导加载 C 代码。
sudo scons board=z1 toolchain=mspgcc bootload=/dev/ttyUSB0 oos_openwsn
该命令在终端或 bash 脚本中运行良好,但当我从 python 脚本运行它时,它无法正常运行。
我认为问题是:构建和编译阶段成功完成,但引导加载阶段(批量删除)运行两次,因此端口已关闭且无法再看到。
这部分代码制造麻烦:
subprocess.call('(cd /home/ilkin/git/Yadhunandana-testbed/openwsn-fw ; sudo scons board=z1 toolchain=mspgcc bootload=/dev/ttyUSB0 oos_openwsn)', shell=True)
这是构建、编译和引导加载阶段的输出。如您所见,“Mass Erase”同时运行,因此失败。
sudo python automate.py
scons: Reading SConscript files ...
___ _ _ _ ___ _ _
| . | ___ ___ ._ _ | | | |/ __>| \ |
| | || . \/ ._>| ' || | | |\__ \| |
`___'| _/\___.|_|_||__/_/ <___/|_\_|
|_| openwsn.org
none
scons: done reading SConscript files.
scons: Building targets ...
Dynifying build/z1_mspgcc/openapps/openapps_dyn.c
msp430-size build/z1_mspgcc/projects/common/03oos_openwsn_prog
text data bss dec hex filename
51442 532 6598 58572 e4cc build/z1_mspgcc/projects/common/03oos_openwsn_prog
z1_bootload(["build/z1_mspgcc/projects/common/03oos_openwsn_prog.phonyupload"], ["build/z1_mspgcc/projects/common/03oos_openwsn_prog.ihex"])
starting bootloading on /dev/ttyUSB0
MSP430 Bootstrap Loader Version: 1.39-goodfet-8
Mass Erase...
MSP430 Bootstrap Loader Version: 1.39-goodfet-8
Mass Erase...
Traceback (most recent call last):
File "bootloader/z1/z1-bsl-nopic", line 1925, in <module>
main(0);
File "bootloader/z1/z1-bsl-nopic", line 1840, in main
for f in toinit: f()
File "bootloader/z1/z1-bsl-nopic", line 1102, in actionMassErase
0xa506) #Required setting for mass erase!
File "bootloader/z1/z1-bsl-nopic", line 761, in bslTxRx
self.bslSync(wait) #synchronize BSL
File "bootloader/z1/z1-bsl-nopic", line 720, in bslSync
raise BSLException(self.ERR_BSL_SYNC) #Sync. failed
__main__.BSLException: Bootstrap loader synchronization error
done bootloading on /dev/ttyUSB0
scons: done building targets.
当我从终端手动运行命令时,情况并非如此,“Mass Erase”部分只运行一次并且引导加载成功完成。我期望这样的输出:
(cd /home/ilkin/git/Yadhunandana-testbed/openwsn-fw ; sudo scons board=z1 toolchain=mspgcc bootload=/dev/ttyUSB0 oos_openwsn)
scons: Reading SConscript files ...
___ _ _ _ ___ _ _
| . | ___ ___ ._ _ | | | |/ __>| \ |
| | || . \/ ._>| ' || | | |\__ \| |
`___'| _/\___.|_|_||__/_/ <___/|_\_|
|_| openwsn.org
none
scons: done reading SConscript files.
scons: Building targets ...
Dynifying build/z1_mspgcc/openapps/openapps_dyn.c
msp430-size build/z1_mspgcc/projects/common/03oos_openwsn_prog
text data bss dec hex filename
51442 532 6598 58572 e4cc build/z1_mspgcc/projects/common/03oos_openwsn_prog
z1_bootload(["build/z1_mspgcc/projects/common/03oos_openwsn_prog.phonyupload"], ["build/z1_mspgcc/projects/common/03oos_openwsn_prog.ihex"])
starting bootloading on /dev/ttyUSB0
MSP430 Bootstrap Loader Version: 1.39-goodfet-8
Mass Erase...
Transmit default password ...
Invoking BSL...
Transmit default password ...
Current bootstrap loader version: 2.13 (Device ID: f26f)
Changing baudrate to 38400 ...
Program ...
51974 bytes programmed.
Reset device ...
done bootloading on /dev/ttyUSB0
scons: done building targets.
提前致谢!
最佳答案
幸运的是,我已经解决了这个问题。问题的发生是因为在我的代码中使用了一个函数来列出连接的串行设备。主要原因是因为这个函数在列出串口设备后关闭了它们。因此,在这个短时间内看不到串行端口,因为引导加载阶段在串行关闭时(以微秒为单位)在某些行之后开始。
def serial_ports():
ports = glob.glob("/dev/ttyUSB*")
result = []
for elements in reversed(ports):
try:
s = serial.Serial(elements)
s.close()
result.append(elements)
except (IOError, serial.SerialException):
pass
关于python - 命令在终端或 bash 脚本中运行良好,但在使用子进程模块的 python 脚本中运行不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57020556/
嗨,我正在考虑开发一种文件传输程序,想知道我是否想要尽可能好的加密,我应该使用什么? 我会用 C# 开发它,所以我可以访问 .net 库 :P在我的 usb 上有一个证书来访问服务器是没有问题的,如果
我创建的这个计算两个数组的交集是线性的方法的复杂度(在良好、平均、最差的情况下)? O(n) public void getInt(int[] a,int[] b){ int i=0; int
我已经能够使用 RTCPeerConnection.getStats() API 获得 WebRTC 音频调用的各种统计信息(抖动、RTT、丢包等)。 我需要将整体通话质量评为优秀、良好、一般或差。
基本问题: 如果我正在讲述/修改数据,我应该通过索引硬编码索引访问文件的元素,即 targetFile.getElement(5);通过硬编码标识符(内部翻译成索引),即 target.getElem
在 Linux 上,我想知道要调用什么“C”API 来获取每个 CPU 的统计信息。 我知道并且可以从我的应用程序中读取 /proc/loadavg,但这是系统范围的负载平均值,而不是每个 CPU 的
在客户端浏览器中使用 fetch api,GET 或 POST 没有问题,但 fetch 和 DELETE 有问题。它似乎将 DELETE 请求方法更改为 OPTIONS。 大多数研究表明是一个cor
我是一名优秀的程序员,十分优秀!