[问题] readline() 资料中遇到"\n"

楼主: FamilyMart (全家是你家)   2018-02-21 22:16:15
新手上路 一直在这个问题点上无法突破
试过我能想到的方法 但是一直在一个轮回里面 无法突破
个人专题需要和别的系统沟通
也就是我传 \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 的状态
我已经查了也试了不少方法 但是已经搞到我自己都不知道在干嘛了
希望高手能给我一条绳子一个方向 让我爬出这个奇怪的坑洞
麻烦高手指点
作者: goldflower (金色小黄花)   2018-02-21 22:49:00
没很懂 不是while去readline到没东西就好吗@@?
作者: WunoW (WunoW)   2018-02-21 23:19:00
readline看到换行字符就认为资料到尾端了不是很正常吗你先确定readline是不是跟你讲的一样是读到"一整个资料"
作者: djshen (djshen)   2018-02-22 00:25:00
不然资料应该读到哪里?
作者: uranusjr (←這人是超級笨蛋)   2018-02-22 00:27:00
直接用 read 不就好了, 没有分行概念为什么要 readline希望你 Python 是自学的不然又多一个老师需要打断腿
作者: kaneson (Lance)   2018-02-22 01:08:00
data有被readline() 切断的现象基本上就要搭配while loop, readline本身就是设计给读文字data专用的, 比较通用的做法是while loop 加 read
作者: s860134 (s860134)   2018-02-22 01:30:00
我的老师都很多条腿
作者: a830307119 (天生我材必有用)   2018-03-03 07:10:00
作者: galeondx   2018-03-06 04:41:00

Links booklink

Contact Us: admin [ a t ] ucptt.com