我真的不知道为什么我的代码没有把adc和gps接收器的读数保存到我已经在代码的第一行打开的文件中。它只保存来自adc和gps接收机的一条记录。在
这是我的代码:
import MDM
f = open("cord+adc.txt", 'w')
def getADC():
res = MDM.send('AT#ADC?\r', 0)
res = MDM.receive(100)
if(res.find('OK') != -1):
return res
else:
return ""
def AcquiredPosition():
res = MDM.send('AT$GPSACP\r', 0)
res = MDM.receive(30)
if(res.find('OK') != -1):
tmp = res.split("\r\n")
res = tmp[1]
tmp = res.split(" ")
return tmp[1]
else:
return ""
while (1):
cordlist = []
adclist = []
p = AcquiredPosition()
res = MDM.receive(60)
cordlist.append(p)
cordlist.append("\r\n")
f.writelines(cordlist)
q = getADC()
res = MDM.receive(60)
adclist.append(q)
adclist.append("\r\n")
f.writelines(adclist)
这是一个叫做“绳索”的文件+adc.txt文件“:
^{pr2}$如果有其他方法来写我的代码,请告诉我或只是指出我的错误在上面的代码。在
谢谢你的建议
因为您从未显式flush()或close()文件,因此无法保证文件中会出现什么结果。您可能应该在每个包之后刷新()它,并且当您希望程序退出时,必须显式地关闭()它。在
你有两个问题,你不能关闭你的文件。在你的程序中有一个更大的问题,尽管你的
while
循环将永远运行(或者直到你的程序中出现其他问题为止),但没有终止条件。您在1时循环,但从未显式脱离循环。我假设当函数AcquiredPosition()
返回一个空字符串时,你希望循环终止,所以我在调用函数之后添加了代码if not p: break
,如果它返回一个空字符串,那么循环将终止文件,这要归功于with声明。你应该重新构造while循环,如下所示:如果调制解调器连接是socket, 通过直接从交互式解释器调用
getADC()
和AcquiredPosition()
来确保套接字正常工作。只需删除函数中的while(1)
循环(main()
是常见的做法),然后从交互式提示符导入模块。在您的示例缺少^{} 对象
MDM
的初始化。确保它正确设置到适当的地址,代码如下:如果
MDM
没有引用TCP套接字,您仍然可以尝试交互式地调用所提到的方法。在相关问题 更多 >
编程相关推荐