0
我正在寫一個程序,它從串口讀寫。有兩個線程;一個線程每隔500ms從串行端口讀寫數據,另一個線程每3s寫入一次串行端口。從兩個不同的線程同時訪問IO(串口)
我遇到的問題是,因爲500ms是3s的倍數,在3s,6s,9s ... 500ms循環無法讀取/寫入/到串行端口。有沒有辦法檢查串口是否在使用?
counter = 0
switchRelays = DoEvery([3], 20) do
sp.write "@00 WR #{relays[counter]}\r"
counter = (counter + 1) % relays.length
end
# This thread samples every 500ms.
sp.write "@00 AI 0\r"
sleep 0.2
sample500 = DoEvery([0.5], 1.0/0.0) do |timeStamp|
if switchRelays.alive? == false
csv.close
puts 'Done'
sample500.exit
else
sleep 0.1
analogueStatus = sp.readline
sp.write "@00 AI 0\r"
end
end
那麼,什麼問題? –
哎呀,沒有意識到...我編輯。 –
你應該同步你的訪問端口([mutexes](http://www.ruby-doc.org/core-1.9.3/Mutex.html)等)。 –