【发布时间】:2014-09-15 15:39:29
【问题描述】:
我想转储一个 ROM。 Arduino 一直等到它收到一位数字的密钥。我使用这个数字作为启动命令并作为参数告诉 Arduino ROM 有多大。这是我的 Arduino 代码(为测试而简化):
void setup() {
Serial.begin(115200);
}
void loop() {
uint8_t key = 10;
while(key > 2){
key = Serial.read();
key -= '0';
}
Serial.print("75 A E8 98 D4 E8 8A E4 E8 EB E4 F9 C3 60 3C 55");
Serial.println("");
Serial.print("74 C E8 35 3 E8 79 E1 88 96 9F 0 EB F E8");
Serial.println("");
Serial.print("0 E8 9 1 FF 76 19 E8 4F DC 8F 46 19 61 F8 C3");
Serial.println("");
Serial.print("E8 5E E1 33 C0 EB 29 B8 1 0 81 BE A0 0 0 51");
Serial.println("");
Serial.println("EOF");
}
这是我告诉 Arduino 开始转储并读取响应的 Python 代码:
line = " "
ser = serial.Serial("COM10", 115200, timeout=1)
ser.write("1")
ser.flush()
while line != "EOF":
line = ser.readline().strip
print line
ser.close()
问题:它什么也没打印。
PS:已经尝试了不同的超时值,但 0 或 None 都不起作用。
编辑: 其他所有人都被邀请到 awnser!我正在使用 Python 2.7.6 - Anaconda 1.9.2 32bit @ Win7x64
EDIT2 解决方法是在python第一次写入之前添加2secs(time.speep(2))的延迟。更多细节在这里:pySerial works fine in Python interpreter, but not standalone
【问题讨论】:
标签: python serial-port arduino pyserial