[問題] (Fix)經由UART傳遞固定byte的資料至C Code
大家好,想請教一個問題,一開始是工作上需要寫一個GUI做硬體測試用
我選擇wxpython去完成GUI,所以現在有簡單的Function buttom。
要傳遞的命令是「一個byte的16進制0x55」以下是我撰寫的python code
def OnCommand(self, e):
port = "COM3"
band = 115200
ser = serial.Serial(port, band, timeout=1)
print(ser.name)
ser.write('0x55'.encode('utf-8'))
out = ser.read()
print(out)
以上是buttom被按下的功能
之所以會這樣撰寫,因為在python IDE下我做了一些測試
>>> a='0x55'
>>> ((a).encode('utf-8'))
b'0x55'
所以我認為會傳遞我想要的資料格式。
但是硬體的C Code宣告的接收資料的buff格式是uint8_t,
我的疑問是C的部分會不會不懂得從python傳遞的資料。
這中間的過程有在google搜尋過相關的問題,但都英文的網頁
閱讀實在有點困難,還是說應該要用到ctype如果是這樣,又是另外一個大問題啦!!
感謝閱讀到這裡的所有人
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.59.241.151
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1463975634.A.F0A.html
推
05/23 12:27, , 1F
05/23 12:27, 1F
→
05/23 12:29, , 2F
05/23 12:29, 2F
→
05/23 12:32, , 3F
05/23 12:32, 3F
→
05/23 12:32, , 4F
05/23 12:32, 4F
我會試試的,感謝你的說明還有建議!
※ 編輯: c74319 (210.59.241.151), 05/23/2016 12:45:31
我是不是刪到你的推文,抱歉
※ 編輯: c74319 (210.59.241.151), 05/23/2016 12:46:37
我參考#1CZV1WEf的方式利用
>>>binascii.a2b_hex(str.encode('55AA00000001'))
b'U\xaa\x00\x00\x00\x01'
前面的大寫U能夠被C code認出來是0x55嗎?
python的編碼還有呈現方式真的不好懂耶Orz
※ 編輯: c74319 (210.59.241.151), 05/23/2016 15:15:51
推
05/23 15:57, , 5F
05/23 15:57, 5F
所以python預設呈現是ascii,經由uart傳入硬體是0x55
※ 編輯: c74319 (210.59.241.151), 05/23/2016 16:18:33
→
05/23 16:24, , 6F
05/23 16:24, 6F
推
05/23 16:24, , 7F
05/23 16:24, 7F
→
05/23 16:25, , 8F
05/23 16:25, 8F
→
05/23 17:52, , 9F
05/23 17:52, 9F
→
05/23 17:53, , 10F
05/23 17:53, 10F
※ 編輯: c74319 (210.59.241.151), 05/24/2016 10:14:14
ka大還有ti大我會參考你們的建議修改我的程式碼。謝謝!
※ 編輯: c74319 (210.59.241.151), 05/24/2016 10:15:52
目前還是用binascii.a2b_hex的方式傳遞,因為要傳的有26個byte
※ 編輯: c74319 (210.59.241.151), 05/24/2016 10:36:36
Python 近期熱門文章
PTT數位生活區 即時熱門文章