我正在为我的硕士论文创建一个程序。该程序从arduino读取数据并将其写入csv文件。这只是程序的一部分,所以我使用多处理模块。
但该程序在csv文件中出现了一些错误,尤其是在开头。它应该在每一行写一个3位数字。有时它会“吃掉”一些数字。它看起来像这样:
//config.js
export default {
key: 'xxxxx',
domain: 'www.abc.com'
}
//app.js
import appconfig from './config.js';
function app() {
const config = appconfig;
//do something
}
它只在前100-200行中随机发生(整个文件有几千行)。我不知道是什么原因引起了这个问题。
这是该计划的一部分:
308,0
,0
313,0
313,0
313,0
313,0
12,0
307,0
306,0
0,0
305,0
这是arduino的一部分:
def port_reader(q, quit):
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=0)
while quit.empty():
try:
q.put(ser.readline())
except ser.SerialTimeoutException:
print('Data could not be read')
time.sleep(0.04)
def output_creator(num, q, flag, quit):
out_path = "GSR_data/"+str(num.get())+"_GSR.csv"
while quit.empty():
data = q.get()
with open(out_path, 'a') as out_file:
try:
out_file.write(re.sub("[^0-9]", "", data)+","+str(int(flag.value))+"\n")
except OSError:
print "No file"
resp_n = mp.Queue()
gsr_data = mp.Queue()
quit = mp.Queue()
flag = mp.Value('d', 0)
proc1 = mp.Process(target=port_reader, args=(gsr_data, quit))
proc2 = mp.Process(target=output_creator, args=(resp_n, gsr_data, flag, quit))
resp_n.put(resp_number)
proc1.start()
proc2.start()