[問題] readline() 資料中遇到"\n"

看板Python作者 (全家是你家)時間6年前 (2018/02/21 22:16), 6年前編輯推噓2(2010)
留言12則, 8人參與, 6年前最新討論串1/1
新手上路 一直在這個問題點上無法突破 試過我能想到的方法 但是一直在一個輪迴裡面 無法突破 個人專題需要和別的系統溝通 也就是我傳 \x04\x05\xaf.... 這樣的資料格式 透過系統回傳給我的 \x32\x85\xaa..... 來做確認資料有沒有更新 主要我是透過 ser.readline() 將一整個資料讀進來 判斷最後三筆是否為 \0x60\0x00\x86 86為 CRC 驗證碼 在偶然間我發現一個錯誤常發生 也就是 readline()時 回傳的資料裡 \xb4\x83\n 中間出現了 \n 因此 (回傳資料 \x00\x03\xef\x98Pb\x10'\xb4\x83\n) 後面再透過 readline 一次又可以讀到後面的漏掉的資料 (漏掉的資料 \x00\x00\x60\x00\xa2) 因為是偶然發生沒有收到完整的資料狀況 我有點想不透該如何去處理 我個人寫法是 Rx = ser.readline() Rx2 = binascii.b2a_hex(Rx) Rx3 = str(Rx2) Rx4 = hex(Rx3) check = Rx4[-7:-3:1] if check = "6000" print("OK") 至於為什麼這樣寫 一直在轉換型態 是因為每次出現什麼 Error code 我就硬查資料把它轉到不會出現 Error 的狀態 我已經查了也試了不少方法 但是已經搞到我自己都不知道在幹嘛了 希望高手能給我一條繩子一個方向 讓我爬出這個奇怪的坑洞 麻煩高手指點 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.35.115 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1519222578.A.141.html

02/21 22:49, 6年前 , 1F
沒很懂 不是while去readline到沒東西就好嗎@@?
02/21 22:49, 1F
我其實是想解決根本問題 readline 再 print 顯示出來為 ascii 造成我處理資料上的困惑 而 readline 遇到 \n 就停止 但是我的 \n 是因為 ascii 造成的 我也不知道我問題卡在哪個環節 就一個盲點一直找不到 變得有點語無倫次 QQ ※ 編輯: FamilyMart (36.231.35.115), 02/21/2018 23:22:19

02/21 23:19, 6年前 , 2F
readline看到換行字元就認為資料到尾端了不是很正常嗎
02/21 23:19, 2F

02/21 23:22, 6年前 , 3F
你先確定readline是不是跟你講的一樣是讀到"一整個資料"
02/21 23:22, 3F
我了解到 \n 是換行字元 但是實際上不是 是編碼造成的 readline 可以讀到一整個資料 偶爾會遇到接收到的資料 中間編碼自動換成 \n 而造成資料不完整 只要再 readline 一次 就能把後面資料補上 ※ 編輯: FamilyMart (36.231.35.115), 02/21/2018 23:27:45

02/22 00:25, 6年前 , 4F
不然資料應該讀到哪裡?
02/22 00:25, 4F

02/22 00:27, 6年前 , 5F
直接用 read 不就好了, 沒有分行概念為什麼要 readline
02/22 00:27, 5F

02/22 00:28, 6年前 , 6F
希望你 Python 是自學的不然又多一個老師需要打斷腿
02/22 00:28, 6F
還好我真的是自學的 不然真的會兩條腿也不夠打 XDDD 今天會用 read 試看看 想說對方一次丟出來 應該用 readline

02/22 01:08, 6年前 , 7F
data有被readline() 切斷的現象基本上就要搭配while loop
02/22 01:08, 7F

02/22 01:08, 6年前 , 8F
, readline本身就是設計給讀文字data專用的, 比較通用的
02/22 01:08, 8F

02/22 01:08, 6年前 , 9F
做法是while loop 加 read
02/22 01:08, 9F
好的 感謝你

02/22 01:30, 6年前 , 10F
我的老師都很多條腿
02/22 01:30, 10F
※ 編輯: FamilyMart (36.231.35.115), 02/22/2018 08:05:30

03/03 07:10, 6年前 , 11F

03/06 04:41, 6年前 , 12F
文章代碼(AID): #1QZNyo51 (Python)