我对python比较陌生,所以有几个问题要问。 我有一个带sd卡接口的arduino,它存储有一些数据的二进制文件。就这么说吧安全文件.BIN. 我想做的主要事情是,通过串行端口发送数据,然后用python程序在我的pc上创建一个1:1的副本,以便进一步操作。在
以下是我用来将Arduino的串行输出写入文件的部分(串行端口打开并正在发送数据):
f = open('SAFEFILE.BIN, 'w+')
while aux != b'':
aux = ser.readline()
f.write(aux)
else:
print('Copy of SAFEFILE.BIN succesfully created')
f.close()
Arduino代码只是:
^{pr2}$目前一切正常。文件里有我的数据。但仔细一看,我提到了一些问题。我用hex编辑器读取hex信息,比较了这两个文件(arduino上的原始文件和它的副本)
如您所见,write()或reading进程似乎将“0A”解释为换行符,并在其前面添加一个carriereturn“0D”。在我的例子中,0A意味着10。 有没有办法阻止python添加一些我不需要的字节?我所要做的就是保存串行输入字节,而不需要任何解释或编辑。在
我尝试用不同的格式对读操作进行解码和编码,到目前为止还没有成功。在
在接下来的步骤中,我需要这个安全文件绝对正确,给我两个选项:
我当然更喜欢选择1!有人能帮我吗?在
在arduino中,使用
Serial.write()
发送信息,它只发送包,没有行尾。然后使用pythonsserial.readline()
进行阅读,pythons接受一个输入流并查找一个行尾并将其拆分。如果您不想有任何行结尾,而只想使用原始数据,那么可以使用python的serial.read(bytes)
,当您不提供字节数时,它将以非阻塞模式连续读取。Python系列文档:https://pythonhosted.org/pyserial/shortintro.html#readline 所以你的代码可以看起来像:相关问题 更多 >
编程相关推荐