首先就是今天白天搞的串口数据接收,主要是实现终端发消息,通过无线,服务端能够接受到。
很简单我只需要接收到消息就可以了,但是我把线连错了,简单来说就是我接错地方,具体是哪里我也有点模糊,明天再看看。
第二个错误是波特率,我修改的有问题,应该是15200,但是我用的9600 怎么可能有数据,越想越傻逼。很好这两个错误解决后,就是嘎嘎乱杀的好吗?
但是接下来我们收的数据是很乱的,需要解析数据是什么意思,然后就用到了一个停产的串口,我明明有下载过,但是找不到了,很疑问,明天查一下。
这个是我找到的PL2303HXA驱动教程
PL2303HXA自2012已停产,请联系供货商的解决方法_pl2303hxa自2012已停产,请联系供货商-CSDN博客
通过sscom解析后,我们发现这是一个大概40位的字符类,而有效的是323135 这六位,而我们通过Data 24~2a一个find函数进行查找
s.find(Data,)
解决这个问题
反思一下感觉自己今天很是鸡肋。,没有任何用处。就出去暴走,本来想着九点回来,但是老登硬控我,回来,看着老登解决了问题然后才走的。
1。读懂代码
class Ser(threading.Thread):
def init(self, dev="/dev/ttyUSB1", bt='115200'):
#这里需要注意用到是哪个设备USB1还是USB0 ,波特率会直接影响接下来的是否接受都数据
#def ini(self, dev ="com5", bt='9600'):
self.serSer = serial.Serial(dev, int(bt))
def send(self,text):
#text是个字节串,如果是字符串需要先将其转换为字节串
self.serSer.write(text)
def rec(self):
serDataLen = self.serSer.inWaiting() #串口接收数据
if serDataLen>5:
print(SerData)
def run(self):
global dSerIO,d8_16
serDataLen = 0
#待读取的字节个数
serDataIn = ""
d8_16 = "123456"
i = 90
buf = ""
#buf是待拼接的字符
while True:
# print(i)
# i = i+1
serDataLen = self.serSer.inWaiting() #串口接收数据
serData = self.serSer.read(serDataLen)#读取数据
if serData:
buf = buf + serData
loc_data = buf.find("Data")#find查找
loc_2a = buf.find("2a")
if loc_data>-1 and loc_2a>loc_data:
s = buf[loc_2a-6:loc_2a]
print(s)
buf = ""
ser = Ser()
ser.init()
ser.start()