[問題] 對ArduinoUNO的serial寫入資料

作者: benbo (波)   2016-07-13 03:15:16
大家好
最近被實驗室要求組裝OpenDAC(http://opendacs.com/seekat-homepage/)
(將幾塊板子和電子材料裝起來,用Arduino控制的DAC)
雖然之前沒碰過Arduino和Python,好在網站有範例程式碼
現在問題是實驗室超級控Python,要求將所有用的的程式都轉成Python
原始的程式是Matlab的
其他部分我都沒問題,只有fwrite一行解決的東西我不知道如何轉換至python
原始Matlab程式碼:http://opendacs.com/seekat-homepage/seekat-write-voltage/
a = serial(‘/dev/tty.usbmodem1431′,’BaudRate’,115200); fopen(a)
...中間省略,可得出n1,n2,d1,d2,m1,m2,六個整數
fwrite(a,[255,254,253,n1,d1*m1,d2*m1,n2,d1*m2,d2*m2]);
[255,254,....] =>為一串小於256的整數,數量為九
我Python的程式碼:
Ser = serial.Serial(port='/dev/cu.usbmodem1411', baudrate=115200)
data = [255, 254, 254.....]
以下都試過無效:
1. Ser.write(data))
2. for 1 in range(0,9): Ser.write(data[i])
3. for 1 in range(0,9): Ser.write(bin(data[i]))
...ord(),一個一個位元送等等都試過了
想請問一下要如何達成Matlab內,fwrite 的效果
謝謝
ps.Arduino控制碼http://opendacs.com/seekat-homepage/seekat-code/
電路:http://goo.gl/acBhdi
作者: alibuda174 (阿哩不達)   2016-07-13 07:32:00
for 1 in range(0,9): ? 那是 1 嗎?write的參數,type應為bytes試試 write(bytes(data))
作者: benbo (波)   2016-07-13 08:19:00
謝謝你 我之前有試過bytes沒有用byte,bin,get_bin(將bin填滿八位)都試過了沒有用
作者: alibuda174 (阿哩不達)   2016-07-13 10:14:00
錯誤訊息?2.x版還是3.x版? for 1 in 根本不能執行吧
作者: benbo (波)   2016-07-13 23:54:00
抱歉 筆誤 是i in range
作者: alibuda174 (阿哩不達)   2016-07-14 07:25:00
我試了 write(bytes(data)) 可以
作者: benbo (波)   2016-07-14 23:24:00
不好意思 請問你是Serial.write(bytes(data))嗎我還是沒有辦法 不過謝謝你
作者: alibuda174 (阿哩不達)   2016-07-15 07:03:00
Ser.write(bytes(data))
作者: benbo (波)   2016-07-15 08:40:00
謝謝 我把Arduino的韌體改成讀int就解決了

Links booklink

Contact Us: admin [ a t ] ucptt.com