2016-08-30 18 views
0

我正通過rs232與電源進行通信。嘗試在Python中使用串行.write中的字符串變量

port.write("\x31") 

,但如果不是我有一個字符串變量

teststring='"\\x31"'  

(打印出的「\ X31」)

和:當我發送比如我可以溝通沒有問題我嘗試:

port.write(teststring) 

它不發送命令到供應。我曾嘗試:

port.write(bytes(teststring,'utf-8')) 

port.write(teststring.encode('utf-8')) 

但它仍然是有點不發送同樣作爲剛剛進入文本。我需要能夠改變這個變量,所以我不能只編寫文本。 任何幫助表示讚賞!

使用下面的評論,我現在用的整數

testint = 31 ,如果我打印

CHR(testint)我在頂行和1F中得到一個奇怪的盒子00底部。我現在需要做的就是將31轉換爲0x31,所以我可以使用chr(0x31),當打印時產生1.希望.write命令將chr(0x31)視爲「\ x31」?

回答

0

teststring在你的例子中是逃避反斜槓;你有"\\x30",而不是"\x30""\x30"是包含字節0x30的長度爲1的字符串; "\\x30"是包含字符\,x,30的長度爲4的字符串。在teststring中刪除第一個斜槓應該與使用port.write("\x30")的行爲完全相同。

+0

當我創建字符串時,我必須添加額外的\或它會給出錯誤。如果我將測試字符串打印到屏幕上,那只是「\ x30」 – KBadgley

+0

正確;如果你正確地做了它應該打印'0'(這是ASCII碼0x30)。你會得到什麼錯誤? –

+0

我從三個字符串實際創建teststring。一個看起來像這樣的:''\\ x',一個是數字,最後一個是'''。如果我在創建第一個字符串時忽略第二個字符,則會出現「無效\ x轉義」錯誤。 – KBadgley