关于与以下代码相关的这些数据,
12 41 58 82000
12 41 58 190000
12 41 58 301000
12 41 58 416000
12 41 58 524000
12 41 58 632000
12 41 58 741000
12 41 58 849000
12 41 58 959000
12 41 59 65000
12 41 59 174000
12 41 59 281000
12 41 59 389000
12 41 59 496000
12 41 59 605000
12 41 59 711000
12 41 59 820000
12 41 59 927000
12 42 0 36000
12 42 0 143000
12 42 0 252000
12 42 0 360000
12 42 0 469000
12 42 0 577000
12 42 0 685000
12 42 0 793000
12 42 0 901000
12 42 1 9000
代码在这里:
from datetime import datetime
minute = 0
second = 0
microsecond=0
fob=open('test_file_thread.txt','w')
def st():
global hour
global minute
exacttime = datetime.now()
hour = exacttime.hour
minute = exacttime.minute
def nd():
global second
global microsecond
exacttime = datetime.now()
second = exacttime.second
microsecond = exacttime.microsecond
while True:
st()
nd()
fob.write(str(hour) + ' '
+ str(minute) + ' '
+ str(second) + ' '
+ str(microsecond) + '\n')
time.sleep(0.1)
现在我想对线程做同样的事情。
我使用两个线程从两个串口获取数据。由于线程并行工作,我无法创建一个文本文件来逐行排列数据。也就是说,我想从第一个串口获取数据,将其写入文本文件的row = 0和column = 0,然后从第二个串口读取数据并将其写入row = 0和column = 5(因此它正好在第一个端口的数据前面),然后转到下一行(row = 1)并重复此过程。
我希望有类似"时间示例"我从串口读取上面做的。这是我的代码,我不知道如何修复它以及将命令fob.write(str(x)+' ' +str(y)+'\n')
放在同一时间写入同一文件的位置。
感谢您的帮助
import time, threading
import threading
import serial
x=0
y=0
fob=open('test_file_thread.txt','w')
ser1 = serial.Serial("COM5", baudrate=9600, timeout=1)
ser2 = serial.Serial("COM4", baudrate=9600, timeout=0.25)
def st():
global x
while True:
x = ser1.readline()
def nd():
global y
while True:
y= ser2.readline()
threading.Timer(0, st).start()
threading.Timer(0, nd).start()
fob.write(str(x)+' ' +str(y)+'\n')
答案 0 :(得分:2)
您应该使用队列,实际上是其中两个!
COUNT(DISTINCT)
答案 1 :(得分:1)
谢谢Yoav Glazner 实际上我发现了一种新的方式,我猜也是一个很好的解决方案。 我想只为写一个新线程。它对我有用。你怎么看?
import time, threading
import threading
from datetime import datetime
hour=0
minute = 0
second = 0
microsecond=0
fob=open('test_file_thread.txt','w')
def st():
global hour
global minute
while True:
exacttime = datetime.now()
hour = exacttime.hour
minute = exacttime.minute
def nd():
global second
global microsecond
while True:
exacttime = datetime.now()
second = exacttime.second
microsecond = exacttime.microsecond
def hd():
while True:
fob.write(str(hour) + ' '+ str(minute) + ' '+ str(second) + ' '+ str(microsecond) + '\n')
threading.Timer(0, st).start()
threading.Timer(0, nd).start()
threading.Timer(0, hd).start()